随笔分类 - DP
摘要:题目大意 题解 非常玄学的dp 首先一个很显然的东西,因为把x按照y翻转得到2y-x,所以每个点的最终系数为±2^k 假设有两种不同的方案得到同样的接,那么相减之后把正的放一边负的放另一边,因为10^100非常大以至于把其他的加在一起都不行,因此只要方案不同答案就不同 转化模型,从y向x连一条边,变
阅读全文
摘要:题目大意 题解 结论:一个长度为x的最优解一定是x-1加上当前加上后贡献最大的数 证明: 设x-1集合为S,假设加上一个数x,并且x不在最终的集合里面 设最终是S+S2,把S2中最小于x中最大的x的那个拿出来,设为y 一个数的贡献可以写作ai*k+bi,如果存在i<j且ai>aj那么显然i必选 因为
阅读全文
摘要:题目大意 题解 长的有点像agc030E实际上没有任何关系,仔细地xjb玩了一两天 正难则反,考虑一个串每次把a->bb,b->aa能变成什么,把相同长度的分为一层 a->bb b->aa aa->bba,abb ab->aaa,bbb ba->aaa,bbb bb->aab,baa …… 首先可以
阅读全文
摘要:题目大意 题解 过于巧妙 关键点:无负环=差分约束有解 由于有i->i+1的0边,所以fi>=fi+1,又因为边的绝对值不超1,所以fi<=(fi+1)+1 设f[i][j]表示当前f相同的段是[j+1,i],枚举下一段结尾k转移,负边不能连同一个块,正边只能连同块和相邻两个块的 code #inc
阅读全文
摘要:题目大意 题解 首先只有能被拓扑的点才能被选,分成森林之后考虑计算 如果一个树的根仍连向未选点,那么这个根要选的话只能最后选,dp求 否则一个树没有固定的最后选的,直接算会算重,考虑对于一种方案将其唯一计算 把树提出来,把点按照拓扑序编号,每次硬点前i-1个必选,第i个必不选,这样就可以唯一算到,对
阅读全文
摘要:题目大意 题解 裸题 建SAM,在SAM上面数位dp维护位置和当前长度即可 注意要先枚举新加的数,然后统一跳fail直到可以往下接,否则时间不能保证 时间复杂度O(10*nd^2) code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a
阅读全文
摘要:题目大意 题解 从各种意义上来说都很离谱的题 看到k<=1e3,一眼k^2logn,结果是(n+m)k,1.5s两亿 并且还是上升子序列,所以用nlogn的方法在不确定时维护指针扫一遍转移即可 转移的时候记下来上一个非-1的位置,最后贪心填 关于如果是单调不减的思考(口胡): 在维护的时候维护填入的
阅读全文
摘要:题目大意 题解 一开始想枚举每段的分界再判断,然而不好搞 实际上把每个点到两边的距离设为(x,y),类似https://www.cnblogs.com/gmh77/p/12813589.html,变为用一条折线把所有点分成两个集合 直接dp折线,转移时要么继承上一行位置,要么转移到前面的某个点,线段
阅读全文
摘要:题目大意 给出长度为m的数组s和数字N,求多少个数k满足0<=k<N且对于每个i=0~m-1,都有gcd(k+i,N)=1当且仅当si=1 m<=40,N以Πpi^ai的方式给出,n<=5e5 题解 先把01翻转变成在x%p=0的x处填1,填出来的显然按照Πpi为一个周期,所以只需要考虑ai=1的情
阅读全文
摘要:题目描述 题解 第一次写插头dp 求哈密顿回路:https://blog.csdn.net/litble/article/details/79369147,本质是维护轮廓线+左右括号序列 本题只需要维护下/右插头即可,状态数是C(m,3)级别的,压一压即可 code #include <bits/s
阅读全文
摘要:题目描述 求n个点的无标号无根树的个数,每个点为红蓝黄三种颜色之一,满足红点的度数<=4,蓝黄点度数<=3,并且不能有两个黄点相连,模1e9+7 n=10000 题解 无标号无根树计数,在重心处统计,每次加上当前最大的子树即可 code #pragma GCC optimize(3) #includ
阅读全文
摘要:题目描述 题解 因为被BC搞死了所以没有切掉 菜得真实.jpg 先把pq变成概率 设$f[i][j]$表示B的生命为i,A的生命为j时A先手的存活概率(反过来的话推出来的式子每次要加常数项搞不了),初值为$f[0][j]=1$ 当j=0的时候也是1,可以理解成A先手所以赢了,主要是方便$f[1][1
阅读全文
摘要:题目大意 一棵树,每个点上有标号,按输入顺序扫每条边,如果边的两端都有标记则把一个删掉并记下来,否则不做处理,问最终记录序列的方案 题解 xjb翻题的时候找到的,之前dyp讲过当时并不知道在讲什么东西之后想了一下 按顺序很关键,否则不太可做 对于一个点来说有3种边,在父亲边前的,父亲边,在父亲边后的
阅读全文
摘要:题目描述 题解 签到题,比T3不知道阳间到哪里去了 分开计算每个区间的答案,一次修改对于一个区间有5种情况: ①没有任何影响,即在父亲区间外 ②使当前区间直接覆盖 ③使当前区间及祖先区间清空 ④覆盖祖先区间 ⑤把祖先区间的标记传到当前区间 分别算出五种情况的概率(相加要为1),设dpf[i][0/1
阅读全文
摘要:d1t1 不知道怎么想的写了线段树维护最小最大值来找分界点 实际上维护双方的和,然后树状数组二分即可 树状数组二分:从高往低位确定,新加的部分就是tr[s+i^k] #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c; a++) #de
阅读全文
摘要:四边形不等式 当$a<=b<=c<=d$时有$w(a,c)+w(b,d)<=w(a,d)+w(b,c)$ 也有$w(i,j)+w(i+1,j+1)<=w(i+1,j)+w(i,j+1)$ 区间包含 当$a<=b<=c<=d$时有$w(b,c)<=w(a,d)$ 性质 \(f_{i,j}=\min(f
阅读全文

浙公网安备 33010602011771号