08 2019 档案

模数循环节——cf547A
摘要:campjls讲过模数循环节的问题,今天做cf才做到这类题 h1->a1的长度为len1,a1->a1的长度为cir1 h2->a2的长度为len2,a2->a2的长度为cir2 要注意特判,再用exgcd求 len1+cir1*t1 = len2+cir2*t2的一组整数解,把t1回代就是答案 阅读全文

posted @ 2019-08-31 21:51 zsben 阅读(241) 评论(0) 推荐(0) 编辑

埃氏筛+线段树——cf731F
摘要:从2e5-1依次枚举每个数作为主显卡,然后分段求比它大的数的个数,这里的复杂度是调和级数ln2e5,即埃氏筛的复杂度、、 阅读全文

posted @ 2019-08-31 19:55 zsben 阅读(140) 评论(0) 推荐(0) 编辑

数学思维——cf351A
摘要:把每个值的各种贡献算一下即可 阅读全文

posted @ 2019-08-31 17:26 zsben 阅读(176) 评论(0) 推荐(0) 编辑

欧拉降幂,基本计算定理——cf615D
摘要:用基本算数定理求约数和的思想来计算, 首先用pi,ci来表示第i个质数,指数为i,然后对于每个pi,pi^2...都有指数为mul{(c_1+1)(c_2+1)(c_i-1+1)(c_i+1+1)...}的贡献,所以枚举累乘即可 注意要用欧拉降幂来计算质数,同时用中间挖掉一个值的累乘,可以预处理前缀 阅读全文

posted @ 2019-08-31 15:23 zsben 阅读(290) 评论(0) 推荐(0) 编辑

构造——cf1202d
摘要:和以前有一题构造01串的很像,固定住一个7,求出3的个数,对1的位置进行贪心 阅读全文

posted @ 2019-08-31 00:36 zsben 阅读(199) 评论(0) 推荐(0) 编辑

对称性——cf405d
摘要:以后碰到这种题就应该往对称性想:设x的对称数x‘是1e6-x+1 对于任意一组对称数x+x'-2=1e6-1,2e6-(x+x')=1e6-1,即X集合Y集合同时加上任意一组对称数都是可以的 枚举每个xi,如果其对称数1e6-xi+1不在集合X中,那么在Y中添加这个对称数即可,正确性显然 反之如果对 阅读全文

posted @ 2019-08-30 18:38 zsben 阅读(216) 评论(0) 推荐(0) 编辑

贪心——cf708b
摘要:先求0,1的个数,然后贪心输出01即可 阅读全文

posted @ 2019-08-30 16:56 zsben 阅读(123) 评论(0) 推荐(0) 编辑

数学二分——cf700A
摘要:二分答案 阅读全文

posted @ 2019-08-30 16:37 zsben 阅读(200) 评论(0) 推荐(0) 编辑

线性dp——1197D
摘要:一开始没有什么头绪,后来注意到m<=10,考虑是否可以用dp[i][j]表示第i位,前面跟了j个数的最大值 那么第i+1个数,直接和第i个数的[0,m]的m+1种状态去转移即可,如果是由0或m状态拓展出去的,那么值要-k 策略和序列最大连续子段和的贪心策略一样 阅读全文

posted @ 2019-08-30 11:17 zsben 阅读(128) 评论(0) 推荐(0) 编辑

tarjan强连通缩点——cf711D
摘要:模板题 阅读全文

posted @ 2019-08-30 00:26 zsben 阅读(123) 评论(0) 推荐(0) 编辑

几何向量gcd+暴力枚举——cf552
摘要:两两枚举点(xi,yi)(xj,yj)对于第三个点(xk,yk),只要向量ik和ij方向不同即可 只要(xj-xi,yj-yi) 和 (xk-xi,yk-yi)化简后不相同即可,用每个点开个map存下一个gcd的pair即可 阅读全文

posted @ 2019-08-29 17:28 zsben 阅读(196) 评论(0) 推荐(0) 编辑

暴力——cf557c
摘要://枚举高度[1,100000],>l的全部割掉, using namespace std; #define N 100005 #define ll long long struct Node{ll id,l,d;}a[N],b[N]; int cmp(Node a,Node b){ return a.lcnt[i]){ res+=cnt[i]*i; ... 阅读全文

posted @ 2019-08-29 15:28 zsben 阅读(659) 评论(0) 推荐(0) 编辑

excrt——cf687b
摘要:excrt的理解 问对于方程组x = ai % ci 的 通解 x+tM, (x+tM) % k 是否有唯一值 看tm%k是否==0即可 阅读全文

posted @ 2019-08-29 14:54 zsben 阅读(192) 评论(0) 推荐(0) 编辑

折半枚举——poj3977
摘要:暴力搜索超时,但是折半后两部分状态支持合并的情况,可用折半枚举算法 poj3977 给一个序列a[],从里面找到k个数,使其和的绝对值最小 经典折半枚举法+二分解决,对于前一半数开一个map,map[sum]里存下凑出当前sum的最小元素个数 枚举后面一半的所有情况,然后lower_bound去找m 阅读全文

posted @ 2019-08-22 21:03 zsben 阅读(226) 评论(0) 推荐(0) 编辑

树形dp换根,求切断任意边形成的两个子树的直径——hdu6686
摘要:换根dp就是先任取一点为根,预处理出一些信息,然后在第二次dfs过程中进行状态的转移处理 本题难点在于任意割断一条边,求出剩下两棵子树的直径: 设割断的边为(u,v),设down[v]为以v为根的子树的直径长度,up[v]为u所在的子树的直径长度,那么down[v]就是很常规的子树直径的换根dp的求 阅读全文

posted @ 2019-08-22 17:25 zsben 阅读(458) 评论(0) 推荐(0) 编辑

hdu第九场多校
摘要:02:线段树两次扫描 #include<bits/stdc++.h> #include<vector> using namespace std; #define maxn 300005 struct Line{int x,y;char s[10];}a[maxn]; int n,m,K; int c 阅读全文

posted @ 2019-08-22 08:57 zsben 阅读(117) 评论(0) 推荐(0) 编辑

依赖背包变形——hdu4003
摘要:思维性比较强,代码挺简单的,dp[u][j]表示在u子树下安排j个机器人,让其不回u 注意转移时的初始值 阅读全文

posted @ 2019-08-21 11:19 zsben 阅读(95) 评论(0) 推荐(0) 编辑

依赖背包优化——hdu1561
摘要:傻逼依赖背包的优化 阅读全文

posted @ 2019-08-21 00:41 zsben 阅读(155) 评论(0) 推荐(0) 编辑

依赖背包变形——poj1947(经典)
摘要:/*这题显然不适用依赖背包的优化,因为不能保证根是必选的,但是可以按照常规依赖背包的思路进行转移,即每次对一个儿子进行C^2的转移 还是树形的背包,dp[u][j]表示u的子树里,切割出一个大小为j的包含u的联通块的代价 那么dp[u][j]按照常规的依赖背包转移即可 初始状态时dp[u][1],切割掉u的所有儿子的代价 注意本题需要特别讨论u是根和非根的情况,即非根的儿子是度数-1,但是最后以... 阅读全文

posted @ 2019-08-21 00:13 zsben 阅读(138) 评论(0) 推荐(0) 编辑

依赖背包变形(经典)——poj1155
摘要:这个题用优化后的依赖背包做难以实现,所以用常规的泛化物品的和来做即可 每个节点的容量定义为这个节点下的叶子结点个数,dp[u][j]用来表示节点u下选取j个物品的最大收益,最后从m-0查询dp[1][i],一旦发现是非负数,i则是答案 需要注意的地方:初始化时将所有的dp[i][0]都赋值为0,一个 阅读全文

posted @ 2019-08-20 19:55 zsben 阅读(115) 评论(0) 推荐(0) 编辑

求最长的任意两元素差不超过M的子段——双指针+单调队列hdu4123
摘要:换根dp的部分比较容易,难点在于求求最长的任意两元素差不超过M的子段 首先会想到双指针维护(尺取法),如果p1,p2间的max-min>M,那么p1向右移动,直到p1,p2间的max-min>M 这个过程可以用线段树(ST)来询问max,min 另外有一种更强大的方案,因为只要max,min,所以只 阅读全文

posted @ 2019-08-20 16:18 zsben 阅读(217) 评论(0) 推荐(0) 编辑

经典换根dp——hdu2196
摘要:给定一棵边权树,求距离每个点最远的点,输出这个距离 阅读全文

posted @ 2019-08-19 23:40 zsben 阅读(172) 评论(0) 推荐(0) 编辑

依赖背包优化——ural1018,金明的预算方案
摘要:经典题了,网上博客一大堆O(nCC)的做法,其实是可以将复杂度降到O(nC)的 参考依赖背包优化(泛化物品的并) 根据背包九讲,求两个泛化物品的和复杂度是O(CC)的,所以依赖背包暴力求解的复杂度是O(nCC) 然后对其进行优化,考虑 F[u][j] 用来表示以结点u为根的子树(不包括u)体积为j的 阅读全文

posted @ 2019-08-19 10:32 zsben 阅读(197) 评论(0) 推荐(0) 编辑

2019牛客多校第10场
摘要:A:01概率退背包,这是赛后看题解补的,概率的背包和普通的背包有点不太一样,但思想还是差不多的 /* n张牌带权值ai随机洗牌,然后抽牌 将每次抽到的ai累计到sum,可以重复抽牌,也可以停止 如果最后sum在区间(a,b]则胜利,反之失败 问获胜概率 先考虑该问题的弱化版:从n张牌里选出点数总和在 阅读全文

posted @ 2019-08-18 14:07 zsben 阅读(124) 评论(0) 推荐(0) 编辑

2019hdu第二场
摘要:10:签到求n!取模 #include <iostream> #include <iterator> #include <algorithm> typedef long long ll; using namespace std; const ll mod=1e6+3; ll n; ll res[mo 阅读全文

posted @ 2019-08-16 19:53 zsben 阅读(147) 评论(0) 推荐(0) 编辑

欧拉函数+反演——2019hdu多校6588
摘要:$$ 求\sum_{i=1}^{n}(\sqrt[3]i,i)\\ 首先转化一下这个式子,考虑对于i\in[j^3,(j+1)^3 1],\sqrt[3]i=j\\ 所以可以枚举所有j,然后对i\in[j^3,(j+1)^3 1]区间的(i,j)求和即可 那么我们把n分成两部分,分别求和:\\ \s 阅读全文

posted @ 2019-08-16 17:43 zsben 阅读(163) 评论(0) 推荐(0) 编辑

2019 hdu多校1
摘要:A:一类线性dp,时间卡的有点紧 /* 定义 dp[t][i][j][k]代表填完前 t 个位置后,{0, 1, 2, 3} 这 4 个数字最后一次出现的位置, 排序后为 t, i, j, k(t > i > j > k) 的方案数目,则按照第 t 位的数字的四种选择,可以得 到四种转移。 t选t- 阅读全文

posted @ 2019-08-13 19:34 zsben 阅读(212) 评论(0) 推荐(0) 编辑

线段树区间离散化维护按秩合并并查集(可撤销)——牛客多校第八场E
摘要:模板题。。去网上学了可撤销的并查集。。 下面是比较简洁的代码 阅读全文

posted @ 2019-08-11 16:58 zsben 阅读(241) 评论(0) 推荐(0) 编辑

暴力三维树状数组求曼哈顿距离求最值——牛客多校第八场D
摘要:涉及的知识点挺多,但是大多是套路 1.求曼哈顿距离的最值一般对所有情况进行讨论 2.三维树状数组用来求前缀最大值 阅读全文

posted @ 2019-08-11 14:33 zsben 阅读(446) 评论(0) 推荐(0) 编辑

单调栈(最大子矩形强化版)——牛客多校第八场A
摘要:求01矩阵里有多少个不同的1矩阵 首先预处理出pre[i][j]表示i上面连续的1个数,对每行的高度进行单调栈处理 栈里的元素维护两个值:pre[i][j]和向前延伸最多能维护的位置pos 然后算贡献,从左往右扫时维护一个最靠右下面没有1的列的位置p, 元素在被弹出时判断其pos是否能包含p,如果能 阅读全文

posted @ 2019-08-10 20:24 zsben 阅读(205) 评论(0) 推荐(0) 编辑

线性dp——hdu6578经典dp
摘要:多校第一场第一题,这种类型的dp之前做过两题,状态转移一般是从当前状态往后推的 很经典的dp,不过很卡时间 阅读全文

posted @ 2019-08-10 00:01 zsben 阅读(395) 评论(0) 推荐(2) 编辑

回文树上dfs——牛客多校第六场C
摘要:/* set里的一定是本质不同的回文串,所以先建立回文树 当a可以通过nxt指针到达b,或者b可以通过fail指针到达a时,a就是b的子串 对于回文树里的每个结点u,我们可以将和其有关的结点为两部分: 1.结点下方的子树,这部分的所有结点都可以由u在两边加点得到,设大小为 size[u] 2.结点向上的fail链,这条链上的所有结点都是u的回文后缀,设大小为 tot[u] 那么... 阅读全文

posted @ 2019-08-09 19:45 zsben 阅读(172) 评论(0) 推荐(0) 编辑

字符串hash+回文树——hdu6599
摘要:拖了很久才补的回文树,感觉网上的博客都是一个做法。。回文树统计不同种类的回文串出现次数,然后用字符串hash来判每个回文子串是否符合要求 阅读全文

posted @ 2019-08-09 16:32 zsben 阅读(224) 评论(0) 推荐(0) 编辑

数位dp——牛客多校H
摘要:/* x[1,A] y[1,B] x^yC 把ABC拆成二进制后按位进行数位dp dp[pos][s1][s2][f1][f2] 表示从高到低第pos位,条件一状态为s1,条件2状态为s2,x在pos为的限制状态为f1,y在pos的限制状态为f2的方案数 条件状态s=0|1|2表示前pos位数运算结果C前pos位数 dp时枚举下一位的所有可能情况,如果当前状态已经确定(满足或不满足),那么下... 阅读全文

posted @ 2019-08-09 15:04 zsben 阅读(237) 评论(0) 推荐(0) 编辑

线段树区间离散化——牛客多校E
摘要:这个区间离散化把我调死了。。 总之用vector来离散化,然后叶子节点维护的是一段区间,记录下每个叶子结点的起点+长度 千万要注意下标不能弄错! update:其实用数组离散化也可以,,只是我的数组开小了一直不知道错在哪里。。 阅读全文

posted @ 2019-08-09 00:41 zsben 阅读(235) 评论(0) 推荐(0) 编辑

最小表示法——牛客多校第七场A
摘要:脑瘫一样暴力,贪心找最小表示的串,判一个串是否是最小表示法时也是暴力地判。。 但是想不通复杂度是怎么算的。。 阅读全文

posted @ 2019-08-08 20:34 zsben 阅读(146) 评论(0) 推荐(0) 编辑

后缀自动机求多串LCS——spojlcs2
摘要:/* 每个状态存最长匹配长度,然后多个串匹配过程中取最小的最长匹配长度 和LCS1不同的地方:LCS只要维护住当前匹配长度和最长匹配长度即可,但是多串匹配需要维护的是每个状态结点(即后缀树上)的信息 所以对每个状态存下两个值Max,Min,分别表示该状态对于该串的最长匹配长度,以及所有已经匹配过的串在该状态下的最小的最长匹配长度 在对一个串进行匹配后,在后缀树上自底向上回溯一次,更新Max值 更新 阅读全文

posted @ 2019-08-08 00:36 zsben 阅读(307) 评论(0) 推荐(0) 编辑

后缀自动机求LCS——spoj-LCS
摘要:经典题 注意匹配的时候:用t串去s串的SAM里进行匹配,和字典树一样遍历t中字符,用cur记录当前已经匹配的长度,如果能当前字符能匹配则cur++(这里不能直接用cur=len[now]),反之用link指针进行失配,直到完成匹配后cur=len[now] 为什么匹配成功时不能直接cur=len[n 阅读全文

posted @ 2019-08-07 12:22 zsben 阅读(256) 评论(0) 推荐(0) 编辑

后缀自动机求字典序第k小的串——p3975
摘要:又领悟到了一点新的东西,后缀自动机其实可以分为两个数据结构,一个是后缀树,还有一个是自动机 后缀树用来划分endpos集合,并且维护后缀之间的关系,此时每个结点代表的是一些后缀相同且长度连续的子串 自动机用来处理边的转移,或者用来解决串的匹配问题,此时每个结点代表的只是一个串,这个串等于从root开 阅读全文

posted @ 2019-08-07 10:25 zsben 阅读(476) 评论(0) 推荐(0) 编辑

后缀自动机模板——不同子串个数p2408
摘要:后缀自动机的入门博客 https://www.luogu.org/blog/Kesdiael3/hou-zhui-zi-dong-ji-yang-xie 有两种求法,分别对应了两种性质 阅读全文

posted @ 2019-08-06 15:17 zsben 阅读(194) 评论(0) 推荐(0) 编辑

同构图+思维构造——牛客多校第六场E
摘要:考的其实是同构图的性质: 1.同构图的顶点数,边数相等 2.同构图通过点的映射后邻接矩阵相同 这篇博客讲的很好https://www.jianshu.com/p/c33b5d1b4cd9 本题还需要一步构造的方案,通过最基础的n=4和n=4+1的图的图推广到n=4k和n=4k+1的状态 阅读全文

posted @ 2019-08-03 23:48 zsben 阅读(301) 评论(0) 推荐(0) 编辑

思维题——牛客多校第六场D
摘要:这题的不能用二分做,因为不满足单调性的 可以用multiset做 阅读全文

posted @ 2019-08-03 20:49 zsben 阅读(133) 评论(0) 推荐(0) 编辑

第k小团+bitset优化——牛客多校第2场D
摘要:模拟bfs,以空团为起点,用堆维护当前最小的团,然后进行加点更新 在加入新点时要注意判重,并且用bitset来加速判断和转移构造 阅读全文

posted @ 2019-08-02 16:29 zsben 阅读(185) 评论(0) 推荐(0) 编辑

优化剪枝搜索——牛客多校第二场F
摘要:试了很多种爆搜和剪枝,最后发现还是状压的比较好用 然后还有一种不同思路的搜索,一开始两个集合都为空,然后往两个集合里填元素,这样会少很多冗余的搜索 阅读全文

posted @ 2019-08-02 12:14 zsben 阅读(177) 评论(0) 推荐(0) 编辑

经典单调栈最大子矩形——牛客多校第二场H
摘要:题目是求次大子矩形,那么在求最大子矩形的时候维护M1,M2即可 转移M2时比较的过程要注意一下 阅读全文

posted @ 2019-08-02 00:47 zsben 阅读(216) 评论(0) 推荐(0) 编辑

线段树优化dp——牛客多校第一场I(好题)
摘要:和两天做了两道数据结构优化dp的题,套路还是差不多的 题解链接! https://www.cnblogs.com/kls123/p/11221471.html 一些补充 其实这道题的dp[i]维护的不是每个点,而是每个离散化的y,也可以理解为当前折线停留在纵坐标为y的答案 从左往右,从上往下进行遍历 阅读全文

posted @ 2019-08-01 20:52 zsben 阅读(181) 评论(0) 推荐(0) 编辑

字符串dp——牛客多校第五场G
摘要:比赛的时候脑瘫了没想出来。。打多校以来最自闭的一场 显然从s中选择大于m个数组成的数必然比t大,所以只要dp求出从s中选择m个数大于t的方案数 官方题解是反着往前推,想了下反着推的确简单,因为高位的数优先级高,如果高位满足条件,那么低位只要用组合数求一下就行 然后是正着往后推,其实难度也不大,只不过 阅读全文

posted @ 2019-08-01 20:15 zsben 阅读(196) 评论(0) 推荐(0) 编辑

凑出和相等的k组数,玄学结论——hdu6616
摘要:[1,n]n个数分成k组,每组n/k个,问k组数和相等的解决方案 首先(1+n)*n/2判定一下是否可以被k整除 n/k为偶数时显然成立 n/k为奇数时每组数前三个很难配,我想了一种玄学的结论,也证明不出来为什么是对的。。 阅读全文

posted @ 2019-08-01 00:16 zsben 阅读(408) 评论(0) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示