![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
Freopen
这个作者很懒,什么都没留下…
展开
-
小B的夏令营(前缀和优化DP)
嗯,普及组好题。#include<bits/stdc++.h>#define maxn 1505#define mod 1000000007using namespace std;int n,m,a,b,p,K;int f[2][maxn],g[2][maxn],gq[2][maxn],h[maxn],sh[maxn],inv[maxn];void add(int &a,int b){ if((a+=b)>=mod) a-=mod; }int Pow(int ..原创 2020-05-19 15:36:23 · 225 阅读 · 0 评论 -
小B的棋盘(DP)
显然自己下的棋子一定要和不是自己下的棋子对称并且我们可以任意挑对称中心。也就是忽略小于等于K个棋子后剩下的点是中心对称的即可。旋转一个奇怪的角度后按横坐标排序考虑删棋子。dp[i][j]dp[i][j]dp[i][j]表示前i和后j考虑完了之后第i个和第j个匹配最少需要删多少个棋子。dp[i][j]=min(dp[a][b]+(i−a−1)+(b−j−1),x[a]+x[b]=x[i]+x[j] and y[a]+y[b]=y[i]+y[j])dp[i][j] = \mi.原创 2020-05-19 15:33:53 · 202 阅读 · 0 评论 -
牛客网OJ 54842 序列(分段多项式转移方程)
题目好野。写了一发分段多项式。感觉要想清楚才好写。转移是(定)积分的形式,阶乘最后再除也没问题(要记次数)。转移后的常数项,就是Ri≤xR_i\le xRi≤x的部分的贡献。AC Code\mathrm {AC \ Code}AC Code#include<bits/stdc++.h>#define maxn 405#define P 9982...原创 2020-01-17 22:35:41 · 340 阅读 · 0 评论 -
BZOJ 4770: 图样(恶心概率期望DP)
题目考试时推到ppp就嫌麻烦,不想推了。。。讲真写好DP预处理调一年。时间复杂度O(n4m2m)O(n^4m2^m)O(n4m2m)的代码TE(but corret) Code\mathrm {TE (but \ corret)\ Code}TE(but corret) Code//#pragma GCC optimize(3)#include&...原创 2020-01-04 17:21:07 · 190 阅读 · 0 评论 -
20191212 A 状压DP
有一个数组aaa,其中有nnn个元素,现在请构造一个数组bbb,其中也有nnn个元素,使得数组bbb中所有元素的异或值为000,且aia_iai到bib_ibi的距离之和最小。T<=6,n<=15,ai<=1e9T<=6 , n <=15 ,a_i<=1e9T<=6,n<=15,ai<=1e9这个。从高位到低位DPDPDP。当所有...原创 2019-12-12 21:41:10 · 97 阅读 · 0 评论 -
CSP模拟赛20191111 密码(数位DP)
n<=1e1000,p<=1e9,k<=1e9n<=1e1000,p<=1e9,k<=1e9n<=1e1000,p<=1e9,k<=1e9请注意p is primep \ is \ primep is prime对于一个(ls)=l!s!(l−s)!\binom ls = \frac {l!}{s!...原创 2019-11-11 13:52:07 · 195 阅读 · 0 评论 -
CF 1225G To Make 1(转化,状压DP,bitset)
直接按照题目的过程模拟是O(n!)O(n!)O(n!)的,DPDPDP是O(3nΣai)O(3^n\Sigma a_i)O(3nΣai)的。考虑将题目的过程规约到另一个问题。寻找一组解bib_ibi使得1=∑iaik−bi1 = \sum_{i}a_ik^{-b_i}1=∑iaik−bi。首先显然任意的一个可以得出1的合并过程都可以推出一组解bib_ibi证明:一定可以通过bi...原创 2019-11-01 22:18:03 · 322 阅读 · 0 评论 -
NOIP2018 保卫王国(倍增+DP)
吾曾切树,亦曾卫国dpi,j,a,bdp_{i,j,a,b}dpi,j,a,b表示iii的必选/不必选状态为aaa,fai2jfa^{2^j}_ifai2j的必选/不必选状态为bbb然后就倍增和维护DP。AC Code\rm AC \ CodeAC Code#include<bits/stdc++.h>#define maxn 100005#de...原创 2019-10-30 13:55:43 · 209 阅读 · 0 评论 -
LOJ #3053. 「十二省联考 2019」希望(长链剖分+可回退化后缀修改数组)
题目此题是我做过最难的长链剖分/数据结构题。没有之一。紫荆花之恋也太水了吧,xmy每天没事就写一发紫荆花之恋,wk表示这太简单了,每天没事就该写一发Hope1.出题人所说的52pts52pts52pts暴力分。容易发现对于每一组合法的救援范围,在救援范围内满足条件的点uuu,构成了树上一个连通块。但是这一组范围只能被计算一次。利用树上一个连通块中的点和边满足点数-边数 = 1的性质,...原创 2019-10-12 16:32:27 · 591 阅读 · 0 评论 -
01背包问题的变式Openjudge 2985:数字组合
题目详情 2985:数字组合 查看提交统计提问 总时间限制: 1000ms 内存限制: 65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式。如: n=5,5个数分别为1,2,3,4,5,t=5; 那么可能的组合有5=1+4和5=2+3和5=5三种组合方式。 输入 输入的第一行是两个正整数n和t,用空格隔开,其中1<原创 2016-11-17 13:19:45 · 450 阅读 · 0 评论 -
POJ2.6 1481 Maximum sum
1481:Maximum sum 描述 Given a set of n integers: A={a1, a2,…, an}, we define a function d(A) as below: t1 t2 d(A) = max{ ∑ai + ∑aj | 1 <= s1 <= t1 < s2 <= t原创 2016-11-17 14:12:30 · 220 阅读 · 0 评论 -
3325 偷龙
题目描述 易大师又在偷龙了,他有n个技能,每个技能都只能用一次,消耗不同的魔法值,造成不同的伤害。大龙共有x点血量,易大师也只有m点魔法值。 由于敌人已经复活了,所以在使用第i个技能前,至少要剩余qi点魔法值,来准备抢龙。 请问能不能偷掉大龙,如果不能,输出最多造成多少伤害。 输入 【输入格式】 第一行 三个整数n,m,x; 第二到n+1行 每行三个...原创 2017-02-17 13:28:44 · 475 阅读 · 0 评论 -
3380 (NOIP 膜你题2 T3) 小Q的新玩具
说明: 辣鸡出题人,毁我比赛,颓我精神,耗我钱财,废我青春。 样例数据: 8 172 2 2 8 1 8 2 1答案:12这题先找思路,发现是DP(毕竟状态好找) 设f[i]=前i个玩具运完的最小费用设biggestnum(a,b)为闭区间[a,b]中重量最高值。有转移方程f[i]=min(f[j]+biggestnum(j+1,...原创 2017-07-25 17:35:54 · 464 阅读 · 0 评论 -
送你一堆区间
按区间贪心做惯了,遇到按区间DP就傻了。实际上应该按关键点DP,这样计数才更加方便。至于线段树优化,直接把DP数组看做线段树是不是太。。。。。ACcode:#include#include#include#include#define maxn 500005#define mod 1000000009#define lc now<<1#define rc now<<1原创 2018-01-22 20:42:22 · 270 阅读 · 0 评论 -
送你一个DAG
1 送你一个DAG (xmasdag.cpp/in/out, 1s, 512MB)1.1 Description送你一个n 个点m 条边的DAG 和参数k, 定义一条经过l 条边的路径的权值为lk.对于i = 1:::n, 求出所有1 到i 的路径的权值之和, 对998244353 取模.1.2 Input Format第一行三个整数n; m; k, 分别表示DAG 的点数, 边数和参数.接下来m...原创 2018-01-19 17:40:20 · 806 阅读 · 0 评论 -
省选模拟赛Day4T2 攻略
Problem Problem Problem Problem Problem Problem Problem Problem 2 攻略 (game)(game)(game)(game)(game)(game)【题目描述】 【题目描述】一款游戏有 n个场景 (scene) (scene) ,某些场 景可以通过不同的选择支到达其他景。所有场和选择支构成树状结:开始游戏时在根节点 景。所有场和选择支构...原创 2018-03-07 17:06:25 · 326 阅读 · 0 评论 -
O(nlogn)最长上升子序列
NOIP 1999 导弹拦截:#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>#define maxn 5005using namespace std;int h[2][maxn],n=0,seq[maxn],len;int main()...原创 2018-03-10 14:38:24 · 178 阅读 · 0 评论 -
小C的线段树
题目描述输入从文件segment.in中读入数据.一行三个整数n, m, k.输出输出到文件segment.out中.一个整数表示答案对998244353取模的结果.n*m<=100000又是一个关于线段的题,但是这个题的线段并不是特别重要,以至于我们可以直接将他拆成两个端点来考虑(一般只考虑端点比较简单)然后就是愉快的DP了(出题人挖了好多坑,一般人看到(li>li-1 , ri&g...原创 2018-03-05 16:46:29 · 259 阅读 · 0 评论 -
线段树优化DP
线段树优化DP可以按DP方法(刷表法和填表法)分为2类。如果是填表法那么其实就是一个区间求最值等等的,十分简单。但是如果是刷表法那么就很难让人想到了,因为刷表法DP其实是没有填表法DP那么思路流畅的。刷表法就相当于是区间赋值什么的。线段树优化DP最好的一点在于,即使有O(n^2)个状态吗,如果你只需要求出其中的O(q)个状态,将线段树滚动一下或者直接原地转移,那么空间复杂度是O(n)的,时间复杂度...原创 2018-04-12 08:31:48 · 876 阅读 · 0 评论 -
一些与根号有关的性质
1.n个点的图中大小不同的联通块只有sqrt(n)个。2.度数大于自己度数的邻接点最多只有sqrt(n)个。3.一个数的约数个数最多为sqrt(n)级别的。原创 2018-07-08 16:22:33 · 1514 阅读 · 0 评论 -
DP优化:WQS二分 或 斜率凸优化 或 带权二分
标题说的三个玩意都差得不是很多。上论文 :WQS二分例 : 在树上选k条路径使得权值和最大。。。形如这类选k个的问题,一般的做法是在DP中加一维表示已选了几条路径。但是,毒瘤一点的出题人就会把范围开到10^5,MLE+TLE这时就要用WQS二分这个小套路了。既然在DP中加一维不可取,我们只能直接DP。但是DP出来的结果并不一定是选了k个的。大佬开始了他的妄想,要是...原创 2018-06-26 21:03:57 · 1252 阅读 · 0 评论 -
1D1D动态规划优化
论文第一类 :决策单调性优化,根据对于一类dp:j<k时有dp[j]转移点<=dp[k]转移点,利用单调队列维护转移对应区间。第二类 : 单调队列优化。第三类: f(x) = min( a(x) * c(i) + b(x) * d(i) )若决策点(转移点)为kf(x) = a(x) * c(k) + b(x) * d(k)d(k) = - a(x)...原创 2018-06-26 21:19:23 · 1378 阅读 · 0 评论 -
2018 湖南省队集训模拟试题( 七)T2分岔路口 ( 二分求期望 + 点分治卡常数 )
题意 : n个点的树,两种操作1 : 走到相邻点。2 : 等概率传送到任意一点q次询问,问u到v在 最优策略 下的期望最少操作次数正解 :先贪心,最优策略一定是先不停传送直到抽中一个比较好的点然后直接走到终点,因为先走后传送没有意义,是浪费。那么我们一定可以找出一个点集S使得我们在S中的点时选择走路,反之传送。那么我们传送到S中的点的期望步数等于传送到S中的点的概率的相反数。n/|S|S的点走到...原创 2018-06-27 22:42:32 · 1089 阅读 · 0 评论 -
雅礼集训Day3T2
题意:n个点的图,每个点有权值,有一定值m,两点a,b间有边当且仅当val[a]+val[b]>=m,将此图的点分为两部分,求两部分间的最大边数。根据连边条件,val>=m/2的所有点(记为A)构成了一个完全图,其他点(记为B)只与val>=m/2的点有连边。先不考虑B,A中的点可以贪心通过DP求最大边数(尽管可以O(1)求),F[i][j]表示某一个集合有j个点在最大的i个点中...原创 2018-07-04 15:44:59 · 251 阅读 · 0 评论 -
AtCoder Regular Contest 066 F Contest with Drinks Hard
题意:一个长度为n的数组,选出其中几项,要最大化sigma( 1 , 1 <= L <= R <= n 且 对于L<=i<=R的i都被选中 ) - sigma( val[i] , i被选中) , 并回答q次询问 : 只有val[i]改变为k时的最大值。不考虑改变时,可以斜率优化。 改变时,分别计算选和不选i的最大值再处理选的值就行。 不选i的最大值就是正反...原创 2018-08-09 19:53:17 · 271 阅读 · 0 评论 -
HDU 6365 Shoot Game
题意:n(<300)条X轴之上且平行于X轴的线段,每条有个权值,只有你发射的射线的能量大于这个权值且射线与线段相交才能消除这个线段,求消除所有线段的最小的(能量值的和)。 一开始就想到先打最大权值线段,然后就贪心到无法自拔,然而DeadEnd 考虑DP,发现只瞄准线段端点打也可以得到最优解,发现可以把端点用斜率离散,那么我们就把一个二维计算几何问题离散成了一个一维序列问题:平面上有n条线...原创 2018-08-14 20:24:32 · 187 阅读 · 0 评论 -
ARC 063 F
在w * h 的方格中 求不含指定格点的边与方格平行的长方形的最大周长 考虑内部没有任何格点(不管是否指定)的长方形 发现周长最大为min(w , h) * 2 + 2 所以长方形一定穿过横着的中线和竖着的中线的其中一条。 考虑穿过一条线的长方形如何计算? dp[i][j]代表以横坐标为i为右边界,横坐标j为左边界的最大周长, 会发现dp值和i,j,还有i与j之间纵坐标最靠近这条线的...原创 2018-08-03 09:17:00 · 310 阅读 · 0 评论 -
ARC 066D Xor Sum
因为a xor b = a + b - 2 (a & b) 从低位到高位用记忆化搜索实现数位DP#include<cstdio>#include<cstring>#include<algorithm>#include<cctype>#define LL long long#define mod 1000000007#de...原创 2018-08-07 21:47:27 · 353 阅读 · 0 评论 -
HDU 6407 Pop the Balloons
题意:Ex打气球,气球爆了会吹飞同行同列的气球,求引爆K次气球使所有气球消失的方案数。 行列:N<=12 , M<=20 。K <=20各种分析,然后发现你只能打K行,每行每列只能打一个,那么就二进制枚举呗(N<=12) 然后一个状压DP就行了, 从左到右枚举列 , 如果这列除了这K行外还有气球存在,那么这列一定要引爆一个,否则可以不引爆,但是最多只能引爆一个。...原创 2018-08-15 18:34:52 · 446 阅读 · 0 评论 -
Codeforces 1025 D Recovering BST
题意:求图中内嵌二叉搜索树是否存在。 区间DP,dp[i][j]表示i到j的点是否可以构成一颗以i为根的二叉搜索树(i可以大于等于j) 根据二叉搜索树性质,dp[i][j] |= dp[k][j] & dp[k][i+1]…….#include<cstdio>#include<cstring>#include<cctype>#inclu...原创 2018-08-20 11:07:58 · 245 阅读 · 0 评论 -
悬线法
利用极大化思想。 UVA 1330 AC Code:#include<bits/stdc++.h>#define maxn 1005using namespace std;int n,m,u[maxn][maxn],l[maxn][maxn],r[maxn][maxn];bool is[maxn][maxn];char s[3];int main(){ ...原创 2018-08-28 18:49:48 · 350 阅读 · 0 评论 -
[SDOI2011]消耗战(虚树)
虚树就是由树中的几个点及他们的LCA构成的简化的树,因为树的点数被减小,复杂度也随着降低。 首先易证n个点的不同LCA最多只有n-1个,虚树的复杂度就有了保障。 然后我们考虑按照dfs序一个一个点的加入,并用栈维护当前虚树的右链,那么新加入的点x和之前虚树的LCA就是右链最下端的点与x的lca。 然后再维护右链就行。 虚树难在清零和处理非虚树节点的贡献。。。。。。 AC Code:...原创 2018-08-29 09:32:52 · 342 阅读 · 0 评论 -
[bzoj]noip十连测欧贝里斯克的巨神兵(obelisk)——dag图DP,状态压缩
题目大意:有一张n个点,m条边的有向图,有多少个子图(选定一个边集)是没有环的。答案对1e9+7取模。(n≤17)显然求的就是DAG个数,于是考虑一层一层的加点,但是发现显然会算重,因为并不能保证层次分明,可能有两个点为同一层的但是又分两层DP导致算重。然后我就想保存上一层的点,那么选入的新点一定要和上一层的点连边才行,这样虽然不会算重,但是不仅要打恶心的3进制DP还是一个O(4^n)的算法?...原创 2018-10-16 08:53:15 · 638 阅读 · 0 评论 -
卡特兰数
h(n)= h(0)*h(n-1)+h(1)h(n-2) + … + h(n-1)h(0) (n&amp;gt;=2)h(n)=h(n-1)(4n-2)/(n+1);h(n)=C(2n,n)/(n+1) (n=0,1,2,…)h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,…)1.矩阵连乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问...原创 2018-10-16 16:31:50 · 137 阅读 · 0 评论 -
锦标赛游戏
题目描述YJC 很喜欢玩游戏,今天他决定和朋友们玩锦标赛游戏。锦标赛游戏的规则是这样的:一共有 i(1≤i≤n)个人参与游戏,每个人都编上号(之后用 编号代替人)。任意两个人之间都要进行一场比赛(即单循环赛制),每一场比赛双方获胜的 概率都是 0.5。对于两个人 x 和 y(1≤x,y≤i),如果 x=y 或存在一个序列(a1,a2,…,am)(m≥2), 满足 a1战胜了 a2,a2战...原创 2018-10-22 08:40:26 · 338 阅读 · 0 评论 -
NOI.AC热身赛第二场 sequence(序列)
题目描述给一个序列 A ,你可以进行 k 次交换操作,最大化最大子段和。k&amp;lt;=10发现交换的数一定一个在最大子段外,一个在最大子段内。然后就可以dp了。dp[i][a][b][c]表示在前i个点,选了a个子段外的点,b个子段内的点,c=0代表第i个点在最大子段前,c=1代表第i个点在最大子段中,c=2代表第i个点在最大子段后。相当于用一维来使得转移更加清晰的套路。...原创 2018-10-21 22:10:49 · 313 阅读 · 0 评论 -
catalan数
// 有逆元#include&amp;lt;cstdio&amp;gt;#define mod 998244353int h[2000];int Catalan(int n){ h[0] = h[1] = 1; for(int i=2;i&amp;lt;=n;i++) for(int j=0;j&amp;lt;i;j++) h[i] = (h[i] + 1ll * h[j] * h[i - j -原创 2018-10-29 11:46:14 · 107 阅读 · 0 评论 -
NOI.AC 运气大战
运气大战你的班上n个同学要去参加一项集体比赛。每个人有实力值和运气值。每个人的实力值是确定的,但是运气值是飘忽不定的。一个人的发挥是他的实力值wi和运气值的乘积,即wi⋅rci。班级的发挥是所有人发挥之和。每个人有一个初始运气值ri,但是每次比赛的时候,每个人的运气值是所有人运气值的一个排列,并且要满足,排列之后ii的运气值不是ri。即满足,ii的运气值是rci,{ci}是1−n1−n的排列,且...原创 2018-11-03 16:52:09 · 439 阅读 · 2 评论 -
决策单调性优化
决策单调性是对于一些dp式子,比如说ans[i] = max(a[j] + sqrt(i-j)) (j < i)如果在一个i满足a[j] + sqrt(i-j) < a[k] + sqrt(i - k)且j<k,那么可以发现在i变大的时候j也一定会比k劣,没有优于k的可能。但是对于这个决策单调性的利用方式却很多。1.四边形不等式优化二维dp,利用dp[i][j-1]的决策点...原创 2018-11-06 17:38:10 · 4216 阅读 · 0 评论 -
#6039. 「雅礼集训 2017 Day5」珠宝
题目描述Miranda 准备去市里最有名的珠宝展览会,展览会有可以购买珠宝,但可惜的是只能现金支付,Miranda 十分纠结究竟要带多少的现金,假如现金带多了,就会比较危险,假如带少了,看到想买的右买不到。展览中总共有 N 种珠宝,每种珠宝都只有一个,对于第 i 种珠宝,它的售价为 Ci 万元,对 Miranda 的吸引力为 Vi 。Miranda 总共可以从银行中取出 K万元,现在她想...原创 2018-11-06 19:45:39 · 907 阅读 · 0 评论