摘要: 留两个坑:1、测试51or(Get) 2、杂题3最大前缀和 (3、测试48group)4、相逢是问候(这个非DP),分手是祝愿。测试53,55。 树DP感觉不像传统DP,所以分着写了。详见树总结。 分着写太麻烦,还是放在最后了。 欢迎大家在评论区提供新的方法! FIR:优化 一决策点信息维护 1:单 阅读全文
posted @ 2019-09-26 17:10 seamtn 阅读(426) 评论(0) 推荐(2) 编辑
摘要: 单调栈维护凸包,并在凸包上二分的一类题。 1、本题维护的每个决策点是一个一次函数,即一条线。 2、下凸包的维护:1、斜率递增,pop掉斜率比他大的 2、交点递减,防止不优的线影响决策 3、代码自己写的,开始没看std,改不出来后看了第二个while,即交点递减,没考虑到。 这点比较好。要相信自己也能 阅读全文
posted @ 2019-09-26 12:20 seamtn 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 1、lca预处理dfs中,1~20顺序枚举,而非倒序。 void dfs(int x,int fa){/** f,dep */ f[0][x]=fa;d[x]=d[fa]+1; for(int i=18;i>=0;--i)f[i][x]=f[i-1][f[i-1][x]]; qxs(){dfs(v, 阅读全文
posted @ 2019-09-25 19:30 seamtn 阅读(288) 评论(1) 推荐(1) 编辑
摘要: 如果扫上下的时候右端点在左端点左边会出错。 为了避免,要把扫左右的whlie放在一组,上下的放在一组 阅读全文
posted @ 2019-09-24 09:51 seamtn 阅读(111) 评论(0) 推荐(1) 编辑
摘要: 图论一般技巧新建虚点。 新建2^k个虚点。 四种转移。普通点n,新点k。 n->n 1 n->k(自己的) 0 k->k 0 k->n 1 本题bfs,边权为1,则最先扫到最优,要避免重复扫。 使虚点只用来更新一次,只入队一次,从而避免重复考虑。 枚举子集:见小技巧标签的博客。 对于每个点枚举子集, 阅读全文
posted @ 2019-09-21 12:23 seamtn 阅读(151) 评论(1) 推荐(1) 编辑
摘要: for(int j=w;j;j=(j-1)&w); for(int j=W;j;j=(j-1)&w); 每次把最后一个1赋为0,并把剩下的0赋成1,并与原数取& 这样能做到枚举全每一个1位是0和1时的子集的情况。 阅读全文
posted @ 2019-09-21 12:06 seamtn 阅读(259) 评论(1) 推荐(0) 编辑
摘要: 测试47。 嗯。 题解懒得写了,我要去打FFT了。 (其实是不会写)。 没有看懂的T3代码 #include<bits/stdc++.h> #define F(i,a,b) for(rg int i=a;i<=b;++i) #define rg register #define LL long lo 阅读全文
posted @ 2019-09-20 17:25 seamtn 阅读(216) 评论(1) 推荐(1) 编辑
摘要: T1:取模下性质。T2:统计的小技巧。cnt++,cnt--.if(!cnt)id=lst,cnt=1;else cnt+=id==lst?1:-1;T3:转化问题。大小关系只由最高的不同位决定。 T3发现转化问题方面要注意。 分析,转化。 #include<bits/stdc++.h> #defi 阅读全文
posted @ 2019-09-19 11:39 seamtn 阅读(161) 评论(2) 推荐(1) 编辑
摘要: 记42场考试后终于迎来的rank1, 与大翻盘。(一夜翻身做主人) 长风搏空,远洋浪劲。 革命远未成功,同志仍需努力。 (只是简单题打得好。。。) #include<bits/stdc++.h> #define F(i,a,b) for(rg int i=a;i<=b;++i) #define rg 阅读全文
posted @ 2019-09-15 20:16 seamtn 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 点分治:类比序列分治。N^2枚举:扫了很多重复部分。分治:共用重复部分,减少信息收集冗余。log思想进行划分。单次操作:序列分治:中间点。点分治:树上的节点。点分治不仅要减少信息收集冗余,还要减少同一信息处理次数。例如对一个点,不分治会扫n次,分治是log次。就是一条链/绳,从头到尾剪,不如从中间剪 阅读全文
posted @ 2019-09-10 17:09 seamtn 阅读(115) 评论(0) 推荐(0) 编辑