上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 53 下一页
摘要: dp+spfa优化 最朴素的dp是dp[i][j]表示i->j的最短路,然后把所有pair(i,i)放到队列里跑spfa,但是这样被卡掉了,那么我们要优化一下 问题在于每次我们转移的时候要枚举i和j的邻居,这样会被两个连起来的菊花卡掉,那么我们希望一次只走一步,那么复杂度会大大降低,于是我们设一个状 阅读全文
posted @ 2017-09-19 08:13 19992147 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 树的直径+单调队列 这竟然和bzoj1999是一样的? 我们yy一下,发现这条路径肯定在树的直径上,然后就好办了,我们维护一个双指针,保证长度<=s,然后最大距离就是直径的两端到路径的两端的最大值,还有当前路径上挂着的链,这个我们dfs一下就行了,然后直径两端的最大值直接求就行了,链的最大值维护一个 阅读全文
posted @ 2017-09-16 08:28 19992147 阅读(176) 评论(0) 推荐(1) 编辑
摘要: 裴蜀定理 有这样一个定理,ax+by能凑出最小的正整数=gcd(a,b),那么这里正好符合我们要求的东西,先开始我还想不明白6和4是怎么配出2的 然后我们就把每个数质因数分解,最多sqrt(n)个,放到一个map里统计次数,如果一个因子出现次数大于等于k就和他取max,最后就是答案 #include 阅读全文
posted @ 2017-09-16 08:21 19992147 阅读(223) 评论(0) 推荐(1) 编辑
摘要: 线段树 额 计蒜客竟然把这个出成noip模拟题。。。 这个东西很像1018,只不过维护的东西不太一样 具体有这五种情况,合并请看代码,自己写了一个结果wa了,然后就copy了一下。。。 然后build的时候不用把叶子结点的值赋成inf,感觉奥妙重重 #include<bits/stdc++.h> u 阅读全文
posted @ 2017-09-16 08:17 19992147 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 线段树优化建图+费用流 朴素的做法是每个强盗直接对每个区间的每个点连边,然后跑最大权匹配,这样有5000*5000条边,肯定过不去,那么我们用线段树优化一下,因为线段树能把一个O(n)的区间划分为O(logn)段 然后就建一棵线段树,每个节点向两个儿子连(inf,0)的边,叶子结点连向sink,(1 阅读全文
posted @ 2017-09-16 08:14 19992147 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 期望dp n久以前做过,再做一遍 你只能决定决策,不能决定结果,这是这道题的关键,因为我们换了教室不一定成功,所以我们应该这样设dp状态,dp[i][j][k],第i天,换j次,换没换,转移: dp[i][j][0] = max(dp[i-1][j][0] + dis[c[i-1]][c[i]], 阅读全文
posted @ 2017-09-15 15:04 19992147 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 线性筛+莫比乌斯反演 盗波图 来自candy?大神 反演很重要的一条公式就是[gcd(i,j)==1]= 线性筛怎么推呢? 我们分4个步骤,1.先推出f[1],2.推出f[p],p是一个质数,3.由于线性筛筛的是积性函数,那么当gcd(i,p[j])==1的时候,f[i*p[j]]=f[i]*f[p 阅读全文
posted @ 2017-09-15 12:11 19992147 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 二分+树剖+差分 之前的做法naive,莫名其妙的wa,明明uoj95分 看到最小最大上二分,树上路径问题直接剖,然后问题就转化成了一个判定问题,每次二分出最长路径长度,问能不能达到。那么我们就把所有长度大于二分出的d的路径拉出来,求出他们公共路径的最大长度,看减去能不能满足。那么现在的问题就转化成 阅读全文
posted @ 2017-09-15 11:56 19992147 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 后缀数组+kmp+set 前两个条件很好搞,后缀数组求lcp然后看相邻两个后缀是不是分别属于不同的串,是的话所有lcp的max就是答案,但是现在有了第三个限制就很麻烦了。 我们先把第三个串在第一个串上跑kmp,把所有匹配位置的结束点放进set里,然后像之前一样查lcp,每次查的时候在set里查询当前 阅读全文
posted @ 2017-09-15 07:59 19992147 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 欧拉函数+逆元 并没有什么想法 gcd有一个性质,gcd(i,j)=gcd(i+j,j),这个性质有什么用呢?我们发现phi(m!)找出了在m!以内所有和m互质的数,但是我们没有找到在n!范围内的数,但是根据刚才的性质,gcd(i,j)=gcd(i+j,j),那么gcd(i,m!)=1,gcd(i+ 阅读全文
posted @ 2017-09-14 10:15 19992147 阅读(213) 评论(0) 推荐(0) 编辑
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 53 下一页