省选模拟19~20

连着爆了两场零???
越来越没有之前考试的节奏,注意力也不够集中,想的时间长了之后难以冷静思考,到最后才rush暴力,然后暴力不是打不完就是打错。。。
模拟20快读到现在还能打错没什么可说的,细节不注意也是老毛病
想半小时正解无果,无论如何打暴力,之后尝试部分分。

A. 鱼死网破(clash)

题意:首先给定n个x轴上方的点和k个线段,强制在线给出m个x轴下方的点,对其求解有多少到x轴上方点的连线不穿过任何线段。n<=1e5,k<=50,m<=1e5
正解:枚举n个点,枚举k条线段,把点到线段两端的直线存到端点的vector中,重合的部分要合并(括号匹配)。
然后把每个vector中向量按极角排序,差分,左端点-右端点+,发现对于下方点的答案为其左侧的权值和,扫端点二分vector即可。
一些问题:极角排序是相对的,本题要固定第一个向量。

A. Ring

题意:n个点m条边的无向图,q次询问边\(\in[l,r]\)是否存在环。n,m,q<=3e5
首先如果子区间存在环那么该区间一定也存在。
这题一上来复杂度算错打了个二分(扫描范围同二分范围,以为是之前某题的复杂度分析方法)就交了上去,造数据发现伪了。
然后回到最开始的想法,类似之前做过的lctT5,从小到大扫描所有边,用lct维护生成树上的最小编号边,加边出环就替换掉最小边,这样让合法左端点尽可能靠左,然后bit离线回答下即可。

B. Exchange

题意:维护长度为n的序列A,支持区间加、区间求和、形如\([a\times2^c,(a+1)\times2^c)\)\([b\times2^c,(b+1)\times2^c)\)的区间对位交换,操作m次。n<=1e8,m<=1e5
打这题时还剩一个小时,想到正解,细节各种错,最后没时间了,过了样例就交了。
新在区间交换,splay可以做到,然而即便是线性空间也不行。
观察形式,发现把n补到2的整次幂[0,2^k)后一定是线段树上的一个点。
所以直接交换点上的信息即可,注意最后要把信息上传,记录父区间跳logn次。
n<=1e8所以要动态开点,其余操作和普通线段树一样。

猜你喜欢

转载自www.cnblogs.com/hzoi-yzh/p/12274594.html