题目前6到难度不大,最后2道挺难的。不过部分分给的很多,给暴力选手极大信心。
A:签到题
B:签到题,不过想了将近3分钟
C:dp,不过减法取模的时候忘加一个mod导致爆负数了。
D:不大好想的二分题。主要就是二分答案,把大于等于答案的数都赋成1,小于的是0,然后check,如果最顶上是0就说明答案小于现在二分的答案,否则大于。check在数组中只有01的时候很好判断(还有一些部分分),需要先找规律。最后发现最上面的数就是最靠中间的连续的2个0或1。思考过程大概是连续的2个0或1在上一层的对应位置还是连续的2个0或1(如果上一层对应位置有数的话),那么只有最靠中间的那一对连续能坚持到最后,所以最上面的数就是最靠中间的连续的2个0或1。如果整个数组都没有相邻的相同数字,那么手推就发现最中间的那个数一直在01的变化,就可以根据层数推出最上面的数是0还是1。
E:难度不大。统计相交的数量就是总数减去不交的数量。设询问的区间[l,r],那么所有在[l,r]左的不交的区间[l’,r’]就有r’<l,同理右边的有l’>r。用一个树状数组或线段树统计一下r在0到l-1内和l在r+1到n内的数量,用总数一减就行了。
F:不算难,即使我没做出来。60分暴力就过了。一次“大操作”中每次如果加入的比之前最大的还大,就减去加入的数。如果比之前小,就减去之间最大的。发现原来的集合中的数只会越来越小,那么做一个指针,一开始指向前p个数最大值,如果加的数大于等于指针指向的数,指针不变。如果小于,指针指向第二大的数。这样就用o(nk)做出来,就没什么问题了。
G:暴力可以拿20分,但最后不到5分钟没写完。正解主要是树链剖分加二分。
H:暴力dp可以50分,有技术的dp就75分,正解是生成函数,矩乘,fft,dft等,推一大堆多项式差不多就过了。
青岛二中2019男人8题初步题解
最新推荐文章于 2021-06-19 17:47:30 发布