5.12总结
考试过程:
看到t1,立刻想到log,仔细想一想发现不行,于是想用bitset往上套,但是仍然跑不过,想了想压位,也不行,想到了9点(这个时间以后,就一直把ci当成2^ci了,后面的想法都有问题),突然就想到是否可以只维护63位有几个,其它该进位进位,发现仍然无法解决极限情况下*2*2*2*2的数据,看了一眼bitset能有40,因为部分分2,3都不会卡到极限情况,部分分1不会,既然不会那可能高精度就行了,什么也没写就走了(现在觉得当初不该走),于是看t2,随便想了一下,发现自己想的很简单,但是打出来发现会有重复,强行修改到9.40,还是无法容斥出来,觉得可能与矩阵有关,但是想不到状态转移方程,于是溜了,看n<=k的时候一个组合数+生成函数(???),自己造了几个,都过了,但是一交0分,在提交记录里也查不到,???(莫名其妙就爆零了,好伤心的).看t3,30很简单,再优化就不会了,可能需要一些奇怪的字符串算法,大概是后缀什么的,都不会,于是想到线段树,可是线段树我也不会维护,11点写完t3,写t1的时候发现把ci认为错了,但是只剩下一个小时了,在t1,t2里艰难选择,于是选了t2,一看最简单的暴力就k^k*(k*k),竟然10分都水不了,立马走人(事后看有人打表,wo实在是****,上次就没打表,这次又没),上个厕所,回来就11点半了,不管写t1的那个算法时间都来不及了,心中一片悲凉,交了t3,发现显示提交成功但是没有提交记录???又提交了一遍还是没有,没管,又测了几个t2 n<=k的数据,没错就把t2也交了
总结:
数据非常小的时候,一定要记得打表,想完思路,尤其是除了暴力以外的东西,一定要立刻打,每一次都要把暴力打完再说换题
题解:
今天的题也只有第一题能做,呜呜呜
t1:
话说,从来没有想过0,1还能用set维护
用set维护每个位置的0,1集合,合并的时候用启发式合并,时间复杂度 O ( n * log * log )
求max,每次只需要比较 集合更小的那个的集合的大小 就可以了,直到结束也没有比较出来,就是集合更大的那个更优了,时间复杂度 O ( n * log * log )
t2,t3:太难了,不会了