Ynoi
fxt275307894a
这个作者很懒,什么都没留下…
展开
-
luogu P5309 [Ynoi2011]初始化
题面传送门 不小心抢了个最优解,比第二少了0.6s0.6s0.6s 分块+根号分治套路题。 看到这种跳着加的就知道是根号分治了。 对于x>sx>sx>s的直接加,用分块维护。 对于x<sx<sx<s的,维护数组fi,jf_{i,j}fi,j表示跳iii个,从jjj开始加了几次。为了之后统计方便,还要前缀和。 统计时,一部分是分块直接统计。另一部分可以在fi,jf_{i,j}fi,j上算,考虑整块和零散的情况。直接统计前缀和即可。 关于sss我取80左右,实测跑得飞快原创 2020-10-07 22:04:09 · 234 阅读 · 0 评论 -
luogu P4688 [Ynoi2016]掉进兔子洞
题面传送门 第二道YnoiYnoiYnoi题目。感觉还是很良心的。 区间相同个数,很容易想到bitsetbitsetbitset。 然后可以用莫队维护出来,最后与一下就好了。 但是相同的数怎么办呢? 离散的时候把位置空出来,之后维护一下有几个就好了。 注意加一些常数优化之类的。 代码实现: #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<bit原创 2020-05-10 15:16:51 · 181 阅读 · 0 评论 -
luogu P3709 大爷的字符串题
题面传送门 看上去很玄学的亚子。 我们很容易发现,要想rprprp最大,要让每次取出的都是一个严格上升的序列,则原问题转换成最少取几次。 那么对于有viv_ivi的一个数,一定要取viv_ivi次才能取完。则答案为区间内最多的数。则变成了求区间众数。 那么可以用莫队求区间众数,开一个fif_ifi数组记录iii这个数有几个,sis_isi记录有iii个的数有几个,用二重辅助来求解。 代码实...原创 2020-04-03 17:13:37 · 103 阅读 · 0 评论 -
luogu P3604 美好的每一天
题面传送门 蛮好的一道题目。 考虑状压。对原数列做前缀和,每一位代表是奇数个还是偶数个。那么前缀和亦或就可以得到一个区间。 对于一个区间,只有亦或和是000或2k2^k2k时才能构成回文串。那么莫队增加和修改时枚举kkk即可。 注意前缀和要往前一位。 时间复杂度O(26nn)O(26n\sqrt n)O(26nn) 注意常数不要太大。 代码实现: #include<cstdio> #...原创 2020-04-20 12:00:06 · 128 阅读 · 0 评论 -
luogu P5355 [Ynoi2017]由乃的玉米田
题面传送门 Ynoi虐我千百遍,我待sjjg如初见 话说YnoiYnoiYnoi真是毒瘤,不开寄存器居然过不去。 这道题前三问可以从小清新人渣的本愿过来,开个bitsetbitsetbitset暴力乱搞就好了。 主要是第四问。 考虑暴力乱搞(这还要考虑?),那么x=1x=1x=1的时候复杂度将会很高,达到了nw\frac{n}{w}wn。 考虑优化。 采用数据分治,将第四种运算中的x≤sx\...原创 2020-04-17 16:18:48 · 180 阅读 · 0 评论