摘要: 裸的cdq,注意去重; 阅读全文
posted @ 2017-12-22 19:37 湮灭之瞳 阅读(185) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include using namespace std; const int maxn=10010; int last[maxn],pre[maxn*2],other[maxn*2],w[maxn*2],t,vis[maxn]; void add(int x,int y,int z){++t;pre[t]=last[x];... 阅读全文
posted @ 2017-12-19 17:57 湮灭之瞳 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 比较简单的一道题,想到了解法却总是过不了,照着黄学长的代码改了半天才过; 开始我写的是以0为根建trie图,一直错,改成了黄学长的以1为根就对了。可能是以0为根的话要注意一些细节的处理。。。 以后还是以1为根写吧,感觉这样代码很自然需要注意的问题又少。 这个题的想法就是在AC自动机上dp计数,dp[ 阅读全文
posted @ 2017-12-15 23:05 湮灭之瞳 阅读(106) 评论(0) 推荐(0) 编辑
摘要: matrixtree定理裸体,学了行列式的n^3解法,(应该是能应用于所有行列式); 代码是参考某篇题解的。。。 阅读全文
posted @ 2017-12-13 20:13 湮灭之瞳 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 好像没有什么高级数据结构能够很高效地实现这个东西; 那就上万能的分块,我们用一些数形结合的思想,把下标看成横坐标,前缀和的值看成纵坐标; 给区间内每个数都加k相当于相邻两点的斜率都加上k; 这种东西我们可以考虑用凸包来维护,因为根据凸包的几何意义,显然最值点在凸包上; 根据凸包的构造方式,相邻两点的 阅读全文
posted @ 2017-12-05 21:03 湮灭之瞳 阅读(528) 评论(0) 推荐(0) 编辑
摘要: PS:那个注释掉的if不能加,这个串就算不是一个结尾也要往前跳,hack数据就写在下面。 阅读全文
posted @ 2017-12-03 20:01 湮灭之瞳 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 刚学了ac自动机,去hzwer上找了道练习题; 串是安全的就说明ac自动机不会找到匹配,考虑ac自动机的匹配过程; 我们把val等于1的点删掉和fail指针指向被删掉的点删掉; 如果剩下的图有环,就有解; 阅读全文
posted @ 2017-12-03 19:13 湮灭之瞳 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 数学题; 复习了一下拓展欧几里得;ax+by=k;这题中,x,y即为斐波那契中的相邻两项; 问不同的a,b有多少种,显然可以用公式算;而且不重不漏;因为每组的解肯定互不相同; 跨组也没有相同的,因为你认为他们有相同的(a,b)的话,相当于认为(x1,y1)(x2,y2)其中(x2>x1,y2>y1) 阅读全文
posted @ 2017-12-01 20:35 湮灭之瞳 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 看数据范围想到状压,我们知道最后是选出一颗生成树,但边权的计算有一些有趣; 我们先选一个点做根;然后就发现边的权和深度有关;那我们按深度dp;即按层dp; dp[i][s]表示前i层选的点集为s,转移时我们枚举s的补集的子集ss;对于ss中的每个点, 我们连上他到s中点的最小边;但这样连的边没办法保 阅读全文
posted @ 2017-11-29 21:48 湮灭之瞳 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 其实是参考洛谷上某篇题解的思路; 先求出两个dis数组表示从1走和从n走的最短路; 转移方程:dp[v][dis1[u]-dis1[v]+w+j]+=dp[u][j]; 转移顺序要注意一下呢,肯定是先枚举第二维; dis1[u]-dis1[v]+w+j>=j; 因为有等号,即有同层之间的转移,第一维 阅读全文
posted @ 2017-11-27 20:42 湮灭之瞳 阅读(180) 评论(0) 推荐(0) 编辑