摘要:
CDQ分治优化斜率优化DP。 有个结论就是每天买完卖完....知道这个之后考虑今天卖的是哪天买的就能写出n²DP了。 发现形式是fi = max(aibj + cidj)的形式。我们可以把ci除出来,就是斜率优化了。 然后发现横坐标和斜率全部没有单调性,于是CDQ分治搞一搞。 1 #include 阅读全文
摘要:
解:略一思索:网络流啊!(别问我是怎么想到的......) 发现跟志愿者招募有点像。于是把图建一下,在下面开一条通道,但是每个点又都要经过,这时我们就无脑上下界一波。 通道向点连边,有费用。每个点向它下一次出现的点连边,费用0。每个点还向通道连边,费用0。 上下界费用流跑一下就出来费用了。然后是输出 阅读全文
摘要:
解:发现这苟东西是个3千万位的二进制数......毒瘤吧。 拆位考虑,如果一个地方本来是1然后+1,就会把它和它前面连续的一段1变成0,并把第一个0变成1。 如果本来是0然后-1了,就会把它和它前面连续的一段0变成1,并把第一个1变成0。 然后发现这两个操作都可以用线段树。于是得到了一个60分算法。 阅读全文
摘要:
题意:给定线段树,上面若干个节点坏了,求能表示出多少区间。 区间能被表示出当且仅当拆出来的log个节点都是好的。 解:每个区间在最浅的节点处计算答案。 对于每个节点维护从左边过来能有多少区间,从右边过来能有多少区间即可。 说起来水的一批为什么会被评成黑题啊。 1 #include <bits/std 阅读全文
摘要:
就是按照 % 体积的余数来分组,每组单调队列优化。 直接上模板好了。 1 #include <bits/stdc++.h> 2 3 typedef long long LL; 4 const int N = 100010; 5 6 int n, V, cnt[N], cost[N]; 7 LL f[ 阅读全文
该文被密码保护。 阅读全文
摘要:
后缀自动机构造后缀数组。 因为有个SB题洛谷5115,它逼迫我学习后缀数组...(边分树合并是啥?)。[update]现在这题已经有了至少两种SAM做法 一些定义:sa[i]表示字典序排第i的后缀是从哪里开始的。Rank[i]表示后缀i的排名。height[i]表示排名i和i - 1的后缀的最长公共 阅读全文
摘要:
解:step1:猎人死了之后不下台,而是继续开枪,这样分母不变...... 然后容斥,枚举猎人集合s,钦定他们在1之后死。定义打到1的时候结束,枚举游戏在i轮时结束。 发现式子是一个1 + x + x2 + x3 + ... = 1 / (1 - x) 但是枚举子集不现实,发现值域很小,我们用小Z的 阅读全文
摘要:
解:首先minmax容斥变成经过集合t的第一个点就停止的期望步数。对于某个t,设从x开始的期望步数为f(x) 如果x∈t,f(x) = 0。否则f(x) = ∑f(y) / in[x] + 1 树上高斯消元。从叶子往上,可以发现每个点都可以表示为Af(fa) + B 于是我们推一波式子,参考,就可以 阅读全文
摘要:
有点权边权的树,选出k个关键点,根必须选。每个点的贡献为点权 * 到最近的关键祖先的距离。求最小总贡献。 解:树形DP是最毒瘤的算法...... 设fxij表示以x为根的子树中选了j个关键点,且x的最近关键祖先是它的i级祖先时的最小贡献。 初态:fxi0 = val[x] * dis(),fx01 阅读全文