10 2016 档案
摘要:维护前缀和,枚举区间起点l,则满足条件的区间结尾r必须满足L<=pre[r]-pre[l]<=R 用值域线段树维护即可 代码 :
阅读全文
摘要:一开始想到过用莫队,没有想出来怎么去转移。。。 事实上对于一个子串是p的倍数的串有一个性质,就是开头和结尾的后缀串的余数相同,这个还是好理解的。 假设一个子串[l,r]数值为t,设t=xp,这个子串结尾对应的原串后缀[r+1,n]数值为t',设t'=y*p+r 那么这个串开头对应原串的后缀[l,n]
阅读全文
摘要:可以注意到题目中所说合法序列的充要条件是对于所有i,<=i的数至少出现过i次 那么我们可以设dp[i][j]代表小于i的数已经出现了j次 那么转移方程就很显然了 dp[i][j]=segma(dp[i-1][k]*C[j-k-ap[i]][n-m-(k-tl[i-1])]) (k+ap[i]<=j)
阅读全文
摘要:暴力预处理出可行点对,拆点后跑最小费用最大流,费用取负 连边要对连,就是x->y和y->x都要连,最后除2才是答案 因为这里每个数只能匹配一次,对连的话同一个点两边都会采用同样的连法所以可以避免多次匹配 代码:
阅读全文
摘要:可以用dfs做,但是精度会有点炸,之后就是各种取对数或者模意义下的运算。。。 不过这道题可以用long double水过去。。。- -| 代码:
阅读全文
摘要:SW算法是求全局最小割的一种O(n^3)算法,虽然可以用堆优化到O(n^2logn),但在稠密图上效果好像并不太好。 算法流程 :1)设图G的min_cut=INF 2)设集合A为空集,w为累计权,随机选一个节点s,将s加入A,将所有与s相连的点i的wi加上s->i的边权 3)选出一个w值最大的不在
阅读全文
摘要:栈模拟dfs,学到了新姿势 这种题很显然应该用虚树去搞,之前也没写过虚树 具体来说就是先维护dfs序,之后每次询问按dfs序排序后一个一个压入栈内,相当于dfs中的进入递归 如果当前压入栈中的元素与之前栈顶元素的Lca深度小于栈顶元素,那么就把栈顶元素弹出,相当于dfs中的返回 虚树上就很好dp了,
阅读全文
摘要:费用流 把每个工人点拆成n个,代表是修的倒数第几辆车,这样费用就很好设定了。 总体构图 : 源点向所有顾客连边(1,0) 所有工人点向汇点连边(1,0) 顾客向工人点连边,第i位顾客向第j个工人拆出的第k个点连边(1,k*cost[i][j]) 代码 :
阅读全文
摘要:一开始想到是树套树,空间28m树套树就狗带了 这题可以用莫队去做,如果在莫队下跑的是树状数组或者线段树的话复杂度要多带个log,可能跑不过 所以换成是分块。为什么分块,因为分块可以o(1)修改。 这里分块是针对值域来分而不是下标,外面套个莫队时间复杂度m*sqrt(n)+n*sqrt(n) 代码:
阅读全文
摘要:蒟蒻不知道约数和公式。QAQ 然后自己手玩出来了,但是没去想DFS- -| 反正这篇博文也只是记录一下自己的愚蠢,代码就贴的是popoqqq神犇的代码。 顺便约数和公式 : 设n=p1^k1*p2^k2.....pn^kn , D_sum(n) = (p1^0+p1^1+..+p1^k1)*(p2^
阅读全文
摘要:原本想每个点建个五元异或方程组高斯消元解的,发现时间有点紧,就去压位卡常,结果调试的时候把自己挂在键盘上了。- -| 正解是从第一排推出第m+1排的异或表达式,然后因为m+1排的数全为0,转回来解这个异或方程组。 实现上我是消的对角线,消成上三角可能会快。出于习惯,我是把n,m互换了的。 代码:
阅读全文
摘要:组合计数+容斥原理的题目 考虑对于每一类特产分给所有人有多少种方式,就是把每类特产分给所有人的方案数乘积 把x个物品分给n个人的方案数可以看成n-1个分隔符和x个物品的排列数,即为n-1+x个物品中选出x个物品的方案数,即C(x,x+n-1) 但是这样会把不合法的状态也算入答案,所以可以容斥一波 n
阅读全文
摘要:考虑如果我们已经到达了终点,那么从终点出发显然可以异或上图中任何地方一个环的异或值后再回到终点,那么我们显然可以在到达终点后根据环的异或值调整自己 所以我们可以先处理出环上的异或值,我的做法是先做一颗生成树,然后dfs确定每个点到根的异或值再加入非树边,这时每条非树边都对应一个环,其他复杂环都可以由
阅读全文
摘要:贪心 先按终止时间排一次序,能抢修的就抢修 如果超过了时间限制,就和之前加入的时间最长的点比较,如果这个建筑的t1<max(t1),因为我们是按t2升序排列,所以不修之前建筑的话这个建筑肯定能修,并且不会使解变差,如果这个建筑t1>max(t1)那么加入这个建筑就会使解变差 代码:
阅读全文
摘要:显然我们可以对路径长度贪心选取 那么问题就转化成了求1到n的k短路,可以用A*去求。 然后交了两发MLE。QAQ 对于卡空间行为表示强烈谴责 然后卡了卡空间,主要对于一个点超过 魔法值/最短路 次数以上和花费超过当前mana的路径都不必扩展 代码:
阅读全文
摘要:一开始sb以为是数位dp,想到状态是十维每维代表每个数字出现次数,再加一维代表余数。空间时间都要炸飞。。。 后来想了想可以直接用数字在原串上出现的位置来代替那十维,结果没有意识到这就是状压dp。。。导致写出来常数爆炸 不过过了就懒得改了。- - 代码看看就可以了:
阅读全文
摘要:对于一个半径为n的圆,圆上整点显然是满足x^2+y^2=n^2的x,y的整数解 由于圆的对称性,我们只有考虑第一象限上的整点,最后乘4再加上坐标轴上4个点即为所求 我们将上式变化一下不难得到: y^2=n^2-x^2=(n+x)(n-x) 设d为gcd(n+x,n-x),A=(n-x)/d,B=(n
阅读全文
摘要:按时间来建一棵主席树 下一个时间和上一个时间的改变就是那个时间点任务的改变 具体我们可以把任务拆成两个时间点,前一个代表加上这个数,后一个是删除这个数 代码:
阅读全文
摘要:pollard-rho是对大数分解质因数的算法 先要米勒罗宾判下素数 主要思想是选取随机数,随机数生成是只与前一个随机数有关的。 这样因为生日悖论,选取重复导致出现循环的期望是根号n的 选取随机数 ri 计算ai = ri mod n 这时我们假定有 n1 | n ,bi = ai mod n1 当
阅读全文

浙公网安备 33010602011771号