摘要: 传送门 很明显题目要求的东西可以写成$\sum_{i=1}^{n}\sum_{j=1}^m gcd(i,j)*2-1$(一点都不明显) 如果直接枚举肯定爆炸 那么我们设$f[i]$表示存在公因数$i$的数的对数 然而$i$并不一定是这几对数的最大公因数 那么怎么办呢?考虑容斥 以$i$为最大公因数的 阅读全文
posted @ 2018-09-20 22:35 bztMinamoto 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 传送门 为什么感觉状压dp都好玄学……FlashHu大佬太强啦…… 设$f_{i,j}$表示当前选的点集为$i$,下一次要加入的点集为$j$时,新加入的点和原有的点之间的最小边权。具体的转移可以枚举$i$,然后枚举$i$的补集$j$,找出$j$的$lowbit_j$ 那么转移就是$$f_{i,j}= 阅读全文
posted @ 2018-09-20 21:21 bztMinamoto 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 传送门 这最短路的建图怎么和网络流一样玄学…… 一个最朴素的想法是从每一个点向它能到达的所有点连边,边权为跳的次数,然后跑最短路(然而边数是$O(n^2)$除非自创复杂度比spfa和dijkstra还有优秀的做法否则根本过不了) 那么考虑一下分块 把每一座建筑拆成$O(\sqrt{n})$层,第$i 阅读全文
posted @ 2018-09-20 20:32 bztMinamoto 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 传送门 话说莫非所有位运算都可以用贪心解决么……太珂怕啦…… 一直把或运算看成异或算我傻逼…… 考虑从高位到低位贪心,如果能使答案第$i$位为0那么肯定比不为$0$更优 然后考虑第$i$位是否能为$0$ 设$f[i][j]$表示将前$i$个数分为$j$段,能否在最高位到第$i+1$位都与当前$ans 阅读全文
posted @ 2018-09-20 18:58 bztMinamoto 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 传送门 我有种自己根本没学过SAM的感觉……最后还是抄了老半天的题解…… 首先,对$S$和每一次的$T$都建一个SAM 先考虑一下$l=1,r=\left| S \right|$的情况 设$lim_i$表示字符串$T[1..i]$能在$S$中匹配到的最长后缀(即$T[i-lim_i+1,i]$是$S 阅读全文
posted @ 2018-09-20 18:12 bztMinamoto 阅读(1265) 评论(2) 推荐(5) 编辑
摘要: 传送门 前置技能,克鲁斯卡尔重构树 我们按道路的高度建一个最大生成树,然后建好克鲁斯卡尔重构树 那么我们需要知道一颗子树内到1点距离最近是多少(除此之外到子树内任何一个点都不需要代价) 可以一开始直接跑一个dijkstra(关于SPFA,他死了) 然后一遍树形dp就可以了 阅读全文
posted @ 2018-09-20 15:42 bztMinamoto 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 传送门 据说离线做法是主席树上树+启发式合并(然而我并不会) 据说bzoj上有强制在线版本只能用克鲁斯卡尔重构树,那就好好讲一下好了 这里先感谢LadyLex大佬的博客->这里 克鲁斯卡尔重构树可以用来解决一类诸如“查询从某个点出发经过边权不超过val的边所能到达的节点”的问题 首先不难发现,上面这 阅读全文
posted @ 2018-09-20 14:51 bztMinamoto 阅读(811) 评论(0) 推荐(1) 编辑
Live2D