随笔- 70  文章- 0  评论- 150 
2019年12月20日
摘要:(早上好,笔记在注释里。) 多项式卷积模板: FFT: #include<iostream> #include<cstdio> #include<cmath> using namespace std; const int N=3e6+10; double pi=acos(-1); int n,m; 阅读全文
posted @ 2019-12-20 13:48 Chloris_Black 阅读 (50) 评论 (4) 编辑
2019年12月13日
摘要:传送门 询问y中x出现了多少次,相当于询问y中的节点通过fail指针能到达x的ed节点的有多少个。 那么一种比较暴力的做法就是,建出AC自动机,把询问按y排个序,遍历trie树,每次暴力跳fail,开个cnt数组维护对每个x的答案。 考虑y上的点跳fail指针最终到达某个ed点的过程,把fail指针 阅读全文
posted @ 2019-12-13 07:12 Chloris_Black 阅读 (27) 评论 (1) 编辑
2019年12月12日
摘要:AC自动机: P5357 【模板】AC自动机(二次加强版) ·不要像以前一样习惯性把trie树的根设为1,从0开始的话后面getfail比较方便。 ·trie树的节点编号是无序的,统计答案需要dfs或者拓扑,按编号循环显然是错的。 #include<iostream> #include<cstdio 阅读全文
posted @ 2019-12-12 09:41 Chloris_Black 阅读 (66) 评论 (4) 编辑
2019年11月17日
摘要:11.15D0: 复习 复习 机房里弥漫着颓废的气息,不过也是最后一个下午了 11.16D1: 五点钟爬起来,一边发抖一边去楼下买早饭 虽然平时基本不吃早饭,但考前不行 搭着同学的车去了考点,在车上重新复习总结出来的笔记,稍微有点不安——感觉以自己的能力,还是不太够啊 进考场,居然快到八点半才发开机 阅读全文
posted @ 2019-11-17 14:07 Chloris_Black 阅读 (134) 评论 (1) 编辑
2019年11月14日
摘要:传送门 正解……正解是二分W值,每次check的时候遍历一遍序列处理满足条件的矿产的前缀和个数和前缀和价值,然后对于每个询问直接用前缀和求得贡献。复杂度O((n+m)log(maxw))。 惨烈的数据结构学傻现场……真的,数据结构降智。之前运输计划那题我还想暴力树剖+线段树分治。 而对于一个数据结构 阅读全文
posted @ 2019-11-14 20:13 Chloris_Black 阅读 (20) 评论 (0) 编辑
摘要:传送门 将每个玩家的路径看作两部分:向根上行以及向叶子下行 p为每个点出现观察员的时间。子树中的起点u到当前点v的路径即是上行,如果dep[v]+p[v]=dep[u],则u对v产生一个贡献。当前点u到子树中终点v的路径即是下行,如果dep[v]-dis(x,v)=dep[u]-p[u](x为这条路 阅读全文
posted @ 2019-11-14 19:59 Chloris_Black 阅读 (13) 评论 (0) 编辑
摘要:传送门 二分所求的答案w,找出所有长度大于w的路径,用差分标记到树上。dfs一遍整棵树,找出所有标记在树上的路径的最长公共边,如果最长的一条路径减去这条边小于等于w,则w是满足题意的答案之一。 预处理每条路径的长度和两端点的lca。 复杂度n*log(最长路径),注意常数。 #include<ios 阅读全文
posted @ 2019-11-14 19:30 Chloris_Black 阅读 (15) 评论 (0) 编辑
摘要:传送门 二分所求的最大值,树形dp判断能否凑够m个 每条赛道的贡献都是1,贪心地让子树中尽可能凑出赛道,将剩下的最长链传上去 用multiset储存所有子节点传上来的链,从小到大尝试让每条链进行匹配,二分multiset中最小的满足匹配的值,将它们删去。这样可以保证进行匹配的尽量多,并且最后传上去的 阅读全文
posted @ 2019-11-14 11:23 Chloris_Black 阅读 (11) 评论 (0) 编辑
2019年11月13日
摘要:传送门 设dp[i][j]为从1到i长度为最短路+j的路径数量,dis1为从1到每个点的最短距离,disn为从n到每个点的最短距离。先不考虑0边,dp[u][j]可以转移到v的dis[u]+w(u,v)-dis[v]+j,即dp[u][j]->dp[v][dis[u]+w(u,v)-dis[v]+j 阅读全文
posted @ 2019-11-13 22:01 Chloris_Black 阅读 (14) 评论 (0) 编辑
摘要:传送门 首先不考虑带环的仙人掌,如果只是一棵普通的树,可以通过dp求每棵子树中的最长链和次长链求树的直径。 那么如果dfs的时候遇到了环,应该用环上的两点挂着的最长链加上两点间的距离来更新树的直径,并用环上一点的最长链加上它到环的根的距离来更新环的根的最长链。 选择环上两点来更新直径,为了考虑到所有 阅读全文
posted @ 2019-11-13 21:27 Chloris_Black 阅读 (9) 评论 (0) 编辑