「疫期颓废」1

396E
暴力的做法就是枚举每个质数,检查是否有次数,有就减一然后对(p-1)分解分到其他的小质数上去
发现如果次数很大,那每一次循环都在做相同的事,直接用乘法来加速一下,循环改成迭代
通过参考这个博客的代码https://blog.csdn.net/zbr162/article/details/95928056
在检测到次数和剩余轮数都还很多的时候,直接把这么多(t)轮一并进行,但是这是把未来的事一下子做了,可能出现下一轮迭代时这里没有次数可用的情况
但实际上次数是一个一个减少的,这个位置本来应该分解掉一个次数,这个次数是在之前的t轮中用的,所以此时不应该再削减left,因为还没有到达t轮以后
感觉上就像一开始给一个栈压t个元素,然后SOS[I]记录的是栈的size...SOS[I]>0说明这一轮这个位置的left在之前减过了现在不该减
说白了还是模拟暴力的过程...吧

但是其实有个更简单的想法就是
20轮之后(p-1)到p的道路都已经打通
之后每个p的次数是否唯一是有单调性的了...
连续的长度>k的有贡献

573E
加入一个数的贡献是前边数的数量*ai+这个数后边的ai和,是可以分块维护的
有一个显然的结论是靠后权值还小的位置肯定后选
贪心策略,每次选取能产生最大贡献的数
具体证明可以考虑最终的最优解集合,当前位置可以代替离他最近的一个位置,对其他未加入的数的影响相同,但局部更优
需要考虑利用"此位置当前贡献最大"的条件和贡献的计算方法来推导


356E
可能成为美丽串的区间数是O(nlog)
考虑每个可能成为的串 对 改法 的贡献
每个区间的贡献只有两种,本来就是美丽串那么修改外面,或者只需修改一个字符就变成(另一个)美丽串
第一种直接处理,第二种hash处理,复杂度都比较低

 

 

516E

考试题,首先对每个%gcd的余数分别讨论

然后同性之间可以建图,如果i号女生开心,那么n天后j号女生会见到同一个男生而开心

形成一个环,删掉一些点,求最短路的最大值


497E

看数据范围是矩乘的样子,那么要设计一个点数为O(k)的自动机

接下来有点不明白zhangyu的意思..

设计自动机状态为 下一个想要的数为x的子序列数量

考虑如何求,可以设计为T[I][J]表示以J*K^I为开头长度为K^I的区间的矩阵

每一层的矩阵都是下一层一个区间的矩阵的成绩,故处理前缀和

但是一个串在这个自动机上怎么跑......好像没有一个确定的路径的样子?

(中午我把zhangyu的程序拿下来跑一下再研究一番눈_눈)

上午一直在迷惑总的子序列数是怎么转移来的现在我懂了

是在"得到了想要的字符"之后,给[0,k)和k处代表的总量都加上这一位的值

表示加了个字符后得到了一个新的子序列了

 

576E

离线线段树分治,由于一条边生效的区间全在这个操作之后

按顺序遍历子节点并且动态往分治结构里扔区间就行

 

posted @ 2020-04-26 12:09  Yxsplayxs  阅读(152)  评论(0编辑  收藏  举报