- 博客(23)
- 收藏
- 关注
原创 20178.27 万径人踪灭 思考记录
字符串的题也可以fft、只要能化成卷积的形式就都可以fft比如这里的回文: 对一个位置:+1 -1 +2 -2 他们和相等,所以对a跑一边,对b跑一遍,就相当于建出n次多项式然后求系数注意manacher不要写错,漏写最后一句注意fft最后一句要写在外面码:#include#include#include#include#include#inclu
2017-08-27 16:03:08 638
原创 2017.8.26 力 思考记录
原题的式子把分母乘进去,然后式子中i-j随枚举变化也是定值,所以直接设b【i】=1/i^2然后第一个式子就是: ,可看为多项式乘法中的一项的系数 第二个式子差是定值,再设一个aa【i】=a【n-i】 然后第二个式子也变成了:两个fft相减即可注意complex定义没有等号,swap把小的放前面码:#include#include#include#
2017-08-26 15:26:46 178
原创 2017.8.24 快速傅里叶 思考记录
注意一下比较重要的:逆序的操作:它的上一位置的值去掉一位,在加上它本身向左缩进的一部分对位的操作,注意是注意交换a的值注意奇项要乘w码:#include#include#include#include#include#define pi acos(-1)#define N 200000using namespace std;typedef complexE;
2017-08-24 22:06:40 178
原创 2017.8.21 弦论 思考记录
自己a的第一道sam 虽然是板子题要求第k小的串,分两种情况:一种是包括重复的:包括重复的即包括right的size,所以每个点向它的父节点贡献自己的size即可,因为这个父指针和ac自动机的适配指针迷之相似,都会指向和自己相同的之前的最近的节点由于一个节点必须接受完所有子节点的贡献才能往上传,所以需要拓扑序,这个利用step进行计数排序即可(由于第二层的点会新于第一层的点,所以
2017-08-21 21:12:47 254
原创 2017.8.20 后缀自动机(p3804) 思考记录
首先构造sam还是比较巧的首先它的总点数和边数不会超过2*n,而且每个节点下面相同的字母节点只有一个所以它实质上是把一个字母用了多次sam是每次加入一个节点,然后合理的安排位置、边、辅助点使之更优1、父指针:指向同样能接受下一个字符的节点:设根节点(起点)为s如 aca ,这时第二个a的父指针就指向第一个a,这样下一个节点x就会和这两个a连边,使s-a-c-a-x 和
2017-08-20 22:02:29 369
原创 2017.8.17 陌上花开 思考记录
CDQ分治其实是很简洁、直白的分治算法、、 和树分治差不多,都是处理贡献时扫一遍计算贡献, 它利用了2个单调性和一个选点: 第一遍按 a sort,保证x单调 分出左右区间, 按b sort ,保证两边的y单调 用树状数组,利用z保证只有比z大的有用,只选比z小的点
2017-08-17 19:17:10 247
原创 2017.8.16 喵星球上的点名 思考记录
虽然处理起来有些麻烦,但最后还是过了 虽然1~10000 非常大,正常的遍历是10^9的 而总长度 在判断有没有子节点时用map就好 同时用数组存每个句子的结束点是哪个句子(可能有多个句子相同节点,所以vector) 然后把每一只喵的 姓扔进去统计答案,同时把匹配的串的一个值 赋成当前喵的编号,这样遇到相同的值就避开,就使得这些串只
2017-08-16 14:50:53 230
原创 2017.8.15 阿狸的打字机 失败总结
好难啊,这个题需要很强的技巧和码力 首先ac自动机不难想到,暴力跳fail也不难想到,但建fail树没想到 建好之后问题就变成了随着点的加入,求一个子树里1的个数 然后由于询问一定在一个子树里,而加点的时候合法的一定在内部(dfs序内部),所以差分即可求一段中1的和,可用树状数组加速 码:#include#
2017-08-15 19:17:13 222
原创 2017.8.14 文本生成器 失败总结
以后凡是在一个中出现>=1次的题就直接转0次用容斥好了、 然后剩下的就是怎么找一个单词也不出现的文本的个数了 显然,这种计数类问题需要用dp ,而且我们需要知道所有单词会为我们添加字母造成影响,所以需要用ac自动机,跳过所有标记的单词 以前是写的指针ac自动机,但它不好写而且巨慢、 所以换了数组 要注意用0
2017-08-14 19:24:26 234
原创 2017.8.14 分手是祝愿 失败总结
这个题细节特别多,也特别多坑 其实给出一个局面,我们是可以nlogn知道最少步数的 易知一个灯最多会被点一次 因为一个数的因数一定=这个数的数没有把它变成0,那以后也没有机会了 就从大到小碰到1就点,用调和级数预处理因数,放到vector里 dp状态比较好想 既然要求全0,一次点一个,还是随机,所以直接离散位置
2017-08-14 12:22:42 206
原创 2017.8.11 OSU 失败总结
这个题就是告诉你 要用期望来解决期望 这个题最直接的做法就是n^2dp了,但显然是炸的 如果要求 (1到n +1) 的 和 , 那就是n的枚举,但如果有平均数,就直接 n*个数 了 对于二次方,对于三次方:不仅是平均数和每个数是这个关系期望和每种可能的取值也是这个关系所以对于1~i种可能的1串长度,我们可以
2017-08-11 18:02:10 333
原创 2017.8.11 亚瑟王 失败总结
这题真难、 %%ISA 首先根据局数去枚举各种情况是铁定会爆的 而每次一个牌的概率还会受前面的牌用没用过的影响,所以不能分开dp 所以第一维表示当前牌,第二维表示还有j轮 注意存的是概率,而不是期望 最后答案就可以拆成所有终点状态的和,,也可以拆成 每次打出*相应概率 的和 可以把每一张牌对下面的影
2017-08-11 14:53:28 267
原创 2017.8.10 奖励关 思考记录
%%ISA 的 期望算法、 首先期望不是单独的一个东西,他后面必须加上一个东西(如期望步数、期望分数、期望个数) 那么期望XX 就是进行无穷次 出现的各个XX趋向于的一个值,,所以也叫平均XX 这个题看上去很复杂、好像很难一脸不可做、、 其实把他分成状压+数塔+取平均,那每个都很直接了 n=15的范围明显是要你状压
2017-08-11 07:23:50 182
原创 2017.8.10 树上染色 失败总结
这个题要做得出来,就只有n^2dp了 所以容易想到f【i】【j】,i表示点的编号,j表示子树有j个黑点但这样怎么转移?枚举改点黑白点?这是可以的,但是它必须并入每个点本身的f数组里【0】和【1】所以转移的时候就枚举转移就好了 虽然转移有两层循环,但它是n的,因为是枚举每个子树的大小的平方,这是总量,所以就是n+n^2但是这里转移必须用好K唯一这一个条件,每次转
2017-08-10 19:03:02 227
原创 2017.8.10 loli 测试
在zz之后, rk2(rk1 qzh太(chao)强(ti)了(jie) )而lzz的题解非常诡异,竟然要用gcd 、’而我似乎暴力枚举就过了(注意操作顺序,不要太自信)、#include#includeusing namespace std;long long n,m,q,i,ans,T;int main(){ freopen("simple.
2017-08-10 12:19:34 413
原创 2017.8.9 老C的键盘 思考记录
这个题一开始想错了、 一开始本来打算每个点存三个值,一个比它大的数的个数,一个不确定的个数,一个比他小的个数、但这是把不同形态拆成不相关的几部分强行存到数组里,不能反映不同排列形态的关系,而且不确定的没法算制约关系,, 这时需要发现一个细节,就是比较是在每两个数之间进行的,所以确定的只是两个数的大小关系,其它的关系都是有可能的,,所以就需要根据每个数的大小位置设计状态,这样就可以反映几个
2017-08-09 16:31:05 355
原创 2017.8.8 魔兽地图DotR 思考记录
假题害人、、 明明说了是一棵树,却还要强行加一组坑爹数据 所以网上的题解挂了好多 这题是很综合的树上背包问题、 由依赖关系转化为一些枚举来跑多重背包 由于是 “一棵树” 所以放心根据高低级建边 转移的时候除传统背包外 还需要多加一维 存往上进几个该装备用于合成 父节点合并信息时用01背包,把每个儿子的花费细分 枚举装填
2017-08-09 07:33:03 441
原创 2017.8.8 loli测试
太难了不会#include#include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef
2017-08-08 16:03:32 305
原创 矩乘dp 总结
可以矩乘的题都一定有某个变量或隐藏变量所以对于dp的优化而言,数据范围是很重要的、注意矩乘不满足交换律,所以要注意位置转移矩阵在构造时一定是一个方的,通过矩阵的值来确定各个数的参与递推情况所以构造矩阵必须有递推式,矩阵是递推式的一种表现形式而且注意变量,很容易打错,而且不好调别的就没了
2017-08-07 20:37:35 266
原创 2017.8.7 序列计数 思考记录
这个题真心是矩乘裸题,和上一个题基本一毛一样,稍微做一些矩乘题就可以轻松搞出、(然而我并不轻松)看到倍数就应该想到余数转移,看到10^2就应该想到n^3的矩乘、所以直接全部-全合数两遍跑完即可30s时限,卡得很死(bzoj慢的要死,不开o2)dev的调试坏了、重载乘号直接卡主不动崩溃了好几次、然后这题卡10^7的int 所以欧拉筛和桶就共用一个了、
2017-08-07 20:25:08 186
原创 2017.8.7 GT考试 思考记录
大部分都想出来了,就是不会kmp生成矩阵、首先要明白kmp失配里面是什么的位置,,,它是和它本身匹配的数,所以比较要用j+1!然后枚举i的时候枚举的是前面的数都匹配的数再加上一个,所以枚举0~9统计所有结果扔到矩阵里注意a矩阵一开始要赋初值 n=1的情况,不然输出0矩阵:样例的矩阵:码:#include#includeusing names
2017-08-07 16:44:58 308
原创 2017.8.7 数学作业 思考记录
其实是比较裸的矩乘了(就是多了一个分段),就是有一些处理的方法值得注意一般凡是+*+*的递推dp似乎都可以矩乘注意快速幂的 单位矩阵、另外并不是只有完全静止的转移才能进行转移、如果是以1为周期的变化是可以写进矩阵里伴随转移的注意分段思想的应用呢。,基本是个数学题就会让你用类似分段的思想搞、mdzz:开着运行调试,,错的莫名思议 i和k打反了
2017-08-07 11:08:34 260
原创 2017.8.5 One-Dimensional 思考记录
这题递推式已经给了,就考虑怎么优化就可以了对于a*b+c*d+e*f的形式直接拆到两个矩阵里即可由于乘的时候实际是遍历每个项,所以不参与运算的设为0即可码(from某知名选手):#include#include#includeusing namespace std;int n,m,ta,tb,tc,mod;struct jz{ int p[99][99];}a
2017-08-05 17:46:11 281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人