![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 87
Cold_Chair
我XXX就是饿死,死外边,从这里跳下去,也不会再做你九条可怜一个测试点
展开
-
【NOI2019模拟2019.6.27】幻化成风(集合容斥系数,胡乱dp)
Description:题解:xjb乱搞题,卡死在无序了。考虑肯定是枚举个集合划分,然后强制一个集合里的选的b一样嘛,就可以无限背包了,然后发现如果按题意说的无序的话特别难做,不妨考虑有序,即每一个a[i]都有标号,最后除以∏cnt[a[i]]\prod cnt[a[i]]∏cnt[a[i]]就好了。先思考暴力枚举集合划分,系数是什么,系数应该是只和这个集合包含的元素有关的,不妨设f[...原创 2019-06-27 21:38:43 · 807 阅读 · 1 评论 -
51 nod 1048 整数分解为2的幂 V2
传送门.题解:把n转成二进制,设二进制下是1的位是x1、x2…xm。结论: 把一种分解方案按升序排序,则一定可以从左到右划分成2^x1,2^x2……2^xm证明很显然。于是设gi,jgi,jg_{i,j}表示搞到了xi,当前最大的是2^j的方案数。设fi,jfi,jf_{i,j}表示把2^i分解,最大的是2^j的方案数。转移:gi,j=∑jk=1gi−1,k∗fx...原创 2018-07-02 20:32:00 · 301 阅读 · 0 评论 -
【TJOI2015】组合数学
Description:题解:这个东西一看就是二维偏序吗?首先考虑把一个权值为v的点拆成v的相同的点,这v个点相互不可比的。这样答案变成了最小链覆盖。dilworth定理:最小链覆盖=最大反链。一个点拆成了v的点,因为这v个点互不可比,那这v个点肯定要同时选,所以其实相当求点权和最大的反链,这个写个sb动态规划就行了。Code:#include<c...原创 2018-05-23 21:15:43 · 387 阅读 · 0 评论 -
【GDOI2018Day1模拟4.20】锡林郭勒(状压dp)
Description:锡林郭勒坐落于美国加州,与赤峰、二连浩特、巴彦卓尔一起组成了闻名世界的科技集散地“硅谷”。在刚果河的滋润下,这里的葡萄酒产业也是美誉世界。夜晚将至,人们纷纷前往摩尔庄园参加宴会。夏威夷吉他的律动,拨动着夜晚的树影婆娑,跳跃着夜空的星河璀璨,引人们结伴共舞。 庄园主人阿金咔咔为了助兴,向来宾们抛出了一个问题:有 n 个黑点与 m 个白点,其中第 i 个黑点与第 j 个白点之间原创 2018-04-26 12:12:10 · 444 阅读 · 0 评论 -
【gdoi2018 day1】小学生图论题
题目大意:lj竞赛图。题解:考虑把强联通分量缩点,大概是这样的(画图水平有限): 看那些红色标记的边,强联通分量个数=红色边的个数+1红色边的判定条件?设它左边的点集为S,右边的为T。S到T的边方向一定要是S->T。当m=0时,枚举S的大小,就可以算答案了。Ans=∑n−1i=1Cin∗2i∗(n−i)Ans=\sum_{i=1}^{n-1}C_n^i*2^{i*(n-i)}当m>0时,考虑用背包原创 2018-05-09 17:13:43 · 565 阅读 · 0 评论 -
【JSOI2012】分零食
Description:这里是欢乐的进香河,这里是欢乐的幼儿园。 今天是 2 月 14 日,星期二。在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着。校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们。听到这个消息,所有同学都安安静静地排好了队,大家都知道,校长最不喜欢调皮的孩子。 同学们依次排成了一列,其中有 A位小朋友,有三个共同的欢乐系数 O,S 和 U。如果有一位小朋友得到了 x 个糖果原创 2018-04-20 19:42:28 · 449 阅读 · 0 评论 -
【GDOI2018Day1模拟4.17】凫趋雀跃
Description: 题解:把(0,0)也视为一个kik_i。显然要容斥原理。枚举一个s,去求至少有s步是不合法的方案数。这个要dp三个东西。fi,jf_{i,j}表示走了i步,∑k\sum k=j*10的方案数。横纵坐标没有关联,可以分开dp。pi,jp_{i,j}表示走了i步,横坐标之和为j的方案数。qi,jq_{i,j}表示走了i步,纵坐标之和为j的方案数。那么Ans=∑i,j(−1)i原创 2018-04-19 21:02:49 · 438 阅读 · 0 评论 -
【GDOI2018Day1模拟4.17】药香沁鼻
Description:题解:比赛时写了个O(np)O(np)加了掉优化就过了——呵呵呵这道题wwt之前应该是讲过的,但是忘了。做法是从上往下dp。转成dfs序,因为子树会在一个连续区间内。对于x,两种转移,选它,走子树内(直接传给下一个),不选它,传到子树外的那个点。也可以直接dfs。对于点x,设有子节点y。把x的背包copy给y,y去dp,再copy回来。两种做法都是O(np)O(np)。原创 2018-04-19 20:38:43 · 316 阅读 · 0 评论 -
【NOI2018模拟4.2】table
Description:、 题解:做法1:一行一行的看。每次变换相当于乘上多项式(bx+a)。所以可以搞出(bx+a)−(p−1)(bx+a)−(p−1)(bx+a)^{-(p-1)}乘第p行的数就可以还原出第一行,之后的用个组合数搞搞就行了。(bx+a)−(p−1)(bx+a)−(p−1)(bx+a)^{-(p-1)}的话,只用n项就可以了,并不用全部。...原创 2018-04-13 20:34:17 · 278 阅读 · 0 评论 -
【CF261D】Maxim and Increasing Subsequence
Description:Maxim喜欢数列,尤其是严格递增的那些。他想要知道数列a的最长上升子序列。 数列a给定如下: 1、数列的长度为n*t; 2、ai=b((i-1) mod n)+1 (1≤i≤n*t),其中运算x mod y表示x除以y所得的余数。 长度为r的数列s1,s2,…,sr被称为数列a1,a2,…,an的子序列,当且仅当存在递增的下标i1,i2,…ir (1≤i1Maxim原创 2018-04-02 20:02:40 · 199 阅读 · 0 评论 -
【GDKOI2015】星球杯
Description: N≤200, Xi, Yi 的总和小于 2^31。题解:由于比较蠢,比赛时不知道怎么做。这种动态规划遇的很少,在这里总结一下。先给出一种O(n^4)的动态规划。枚举第一组第k大的是多少,设为h。把这些选手以y为关键字从大到小排序。设fi,j,kfi,j,kf_{i,j,k}表示确定了前i个选手,放到一组且大于等于h的有j个,有k个放到第...原创 2018-03-19 20:02:18 · 284 阅读 · 0 评论 -
【NOI2018模拟3.10】占领
Description:题解:第一问是经典的dp。先随便选一个作为根。设fif_i表示i已经被占,占领其子树需要的最少步数。转移就把i的子节点的f值从大到小排序,fi=max(fson+numson)f_i = max(f_{son}+num_{son})之后考虑换根,没有什么区别,维护前缀max,后缀max就行了。第二问的话考场时没有想到,太弱了。把a-b的路径提出来,O(n2)O(n^2)就是枚原创 2018-03-14 20:21:55 · 503 阅读 · 0 评论 -
【NOI2014模拟】疫苗(burnside引理)
Description:中二病正在危害人类!不知何时爆发的中二病,起初还毫无任何症状,最近却连续出现致命症状,已经成为了一种不治之症。科学家们正在着手研发疫苗。科学家从患者体内提取出了中二病病原体,并找出了其致病DNA。这条DNA可以被分为n段,第n段和第1段相接,呈环形。要制作疫苗的话,需要从中取出若干段DNA。 然而,中二病的生存和复制能力特别强。如果疫苗中存在两段在原DNA中距离小于k的DNA原创 2018-01-23 21:49:24 · 687 阅读 · 0 评论 -
【GDOI2016模拟3.16】幂
Description: 题解:设x=∏pqiix=∏piqix=\prod p_i^{q_i},d=gcd(qi)d=gcd(qi)d=gcd(q_i)若d&amp;gt;1d&amp;gt;1d&gt;1,我们先不考虑它。若d=1且x&amp;gt;n−−√d=1且x&amp;gt;nd=1且x&gt;\sqrt n,则xyxyx^y一定不会与其他有重的,贡献为B。若d=1且x&原创 2018-07-17 19:59:27 · 275 阅读 · 0 评论 -
【雅礼联考DAY02】Path
Description:给定一个 n∗ m 的网格,你在左下角 (n,1),你只能往前走或者右拐,障碍和走过的点不能走。求走到 (y,x) 的方案数 mod k 的值。n,m ≤ 100,k ≤ 10^9.题解:考虑当前走到了一个点,剩下的能走的范围是一个矩形。于是倒着dp,设fp,x1,y1,x2,y2fp,x1,y1,x2,y2f_{p,x1,y1,x2,y2}表示当前...原创 2018-07-14 21:44:13 · 334 阅读 · 0 评论 -
水果拼盘(反演求容斥系数)
Description:题解:出题人本意是考反演,结果没学好期望线性可加。最近一直在练容斥反演,所以一看就上容斥反演。设f(S)f(S)f(S)表示选的水果的集合是S的方案数,g(S′)g(S′)g(S')表示选的水果是S’的子集的方案数。显然g(S′)g(S′)g(S')是非常好算的,记cntcntcnt表示拼盘里的水果都属于S’集的拼盘的个数,则g(S′)=Ckcn...原创 2018-08-19 19:10:18 · 847 阅读 · 0 评论 -
JZOJ6232 【NOI2019模拟2019.6.25】喜欢最最痛(凸函数,贪心,动态dp)
Description:神树大人种了一棵有边权的树,由于这是神树大人种的树,所以这棵树被命名为神神树。神神树的边权为正. 整. 数. 。神树大人命令龚诗锋从 1 号点开始走一个路径并最终回到1 号点,且这条路径经过了所有的边。一条路径的代价就是它经过的边的边权之和。龚诗锋可以加若干条额外边,第 i 条加的额外边的边权为正. 整. 数. Ai。注. 意. ,龚. 诗. 锋.不. 一. 定...原创 2019-06-26 20:00:37 · 580 阅读 · 0 评论 -
「CTS2019」重复(KMP自动机dp)
传送门.我这么菜怎么可能会标算的神仙解法?我们发现如果直接考虑有一个子串<S的话,是很有难度的。不妨转换为没有子串<S,也就是把T丢到S的KMP自动机 上,一直跑,注意只能走合法边。合法的意思是假设现在匹配了S[1…x],新加一个字符c,不存在s[1..y]=s[x−y+1..x],且s[y+1]>c(y可以=0)s[1..y]=s[x-y+1..x],且s[y...原创 2019-06-21 22:11:15 · 514 阅读 · 0 评论 -
「PKUWC2018」随机算法(状压dp)
传送门.感觉这个状压题还是挺有意思的。最基本的状压就是0表示没选,1表示选了不在独立集里,2表示选了在独立集里,枚举下一个点然后用位运算加速转移即可。复杂度O(3n∗n)O(3^n*n)O(3n∗n)考虑其实1、2可以合并。记0表示没选,1表示选了。当选一个点到独立集时,就直接把它的邻点拿来提前安排了,这些点以后选的时候一定是不能放到独立集的,这样这个状态才是对的。由于不知道独立集...原创 2019-06-19 15:20:12 · 254 阅读 · 0 评论 -
【GDOI2019Day1模拟2019.4.28】星际穿越(简单容斥+EGF+多项式求逆)
Description:题解:不难发现当r=1时就是选若干上升序列。而一列至少有一行不满足就不稳定的。这个破限制肯定要想方设法用容斥搞掉。至少一行不满足太难算了,不妨改成算全部都满足,假设有i个列需要不稳定,即0列全部满足,但是有j个列全部满足,即稳定,则容斥系数为(−1)j(-1)^{j}(−1)j这样就可以得到一个显然的dp,先把整个序列每k个分块,最后一块不完整先不管。设f[...原创 2019-04-28 20:50:20 · 413 阅读 · 0 评论 -
CodeForces 1110 D. Jongmah
传送门.看错题交了11发才过。给出n个数,分最多组,使得每组标号相邻递增或全部相同。1<=n<=10^6首先自然地想到dp设前两个有多少个,当然这个dp会超时。不难想到如果一个数出现的次数比较多,那么应该先把他自己取了。那么这个数具体是多少呢?如果我们取了(a,b,c)三次,是可以转成取a,b,c分别三次。那么一个数最多作为前中后分别2次,最多的次数就是2*3=6次也...原创 2019-02-20 22:14:13 · 456 阅读 · 0 评论 -
【WC2019模拟2019.1.12】二分的代价(状态互换dp)
Description:题解:非常容易想到一个O(n3)O(n^3)O(n3)的dp,于是做不动了。考虑一个数变大,这个序列的答案只会更大,所以答案不会超过9∗log n9*log~n9∗log n因此状态互换。设fi,jf_{i,j}fi,j表示从i开始,在花费j的代价最远能走到哪里。枚举一个点p:fi,j=max(fi,j−1,[fi,j−a[p]&...原创 2019-01-15 22:05:39 · 411 阅读 · 0 评论 -
JZOJ 5990. Bear(斜线dp)
Description:n<=12,m<=30题解:很容易想到一种一行一行的dp,我们觉得n太小了,想一列一列做,发现不行。然后脑洞打开,直接斜着dp,发现就没有了。Code:#include<cstdio>#include<cstring>#define pp printf#define ll long long#define fo(i,...原创 2019-01-15 21:55:06 · 234 阅读 · 0 评论 -
2019.1.17模拟
T1:求∑i=1nti∗Cn−ik−1\sum_{i=1}^nt^i*C_{n-i}^{k-1}∑i=1nti∗Cn−ik−11&lt;=k&lt;=1e7,1&lt;=n&lt;=1e91&lt;=k&lt;=1e7,1&lt;=n&lt;=1e91<=k<=1e7,1<=n<=1e9也不知道怎么搞...原创 2019-01-17 18:46:18 · 257 阅读 · 0 评论 -
SnackDown 2019 - Online Elimination Round Suffix Palindromes
原题链接.没上OEIS真的是亏了。题目大意:问有多少个字符集大小为|S|的长度为n的字符串,不存在一个长度大于1的回文后缀。1<=n<=10001<=|S|<mo=1e9+7题解:这种题一看就要容斥原理首先总方案数是S^n减去后缀是回文串的,但是我们发现直接减肯定减重。不妨设f[i]f[i]f[i]表示长度为i的回文串,且它也不存在长度大于1的回文后缀的...原创 2018-12-10 22:04:59 · 298 阅读 · 0 评论 -
动态dp学习小记
据说这东西猫锟在WC2018讲过,怎么一点印象都没有呢?当时应该是在冬眠NOIP2018T6如果用动态dp去看就是一道裸题,不过因为询问是相互独立的,即修改没有时效性,可以直接用倍增代替动态dp。先看一道题:P4719 【模板】动态dp如果没有修改,这题就是树形dp入门题:没有上司的晚会设f(x,0/1)f(x,0/1)f(x,0/1)分别表示以x为根的子树中,选x的最大独立集,不选x...原创 2018-11-20 22:46:41 · 395 阅读 · 0 评论 -
高维前缀和学习小记
问题引入:现有a[i](0&amp;lt;=i&amp;lt;2n)a[i](0&amp;lt;=i&amp;lt;2^n)a[i](0&lt;=i&lt;2n)对于每一iii,求∑j∈ia[j]\sum_{j∈i}a[j]∑j∈ia[j]这里的∈∈∈指二进制状态下的被包含。暴力解决问题:即暴力枚举子集求和。复杂度计算:∑i=0nCni∗2i\sum_{i=0}^nC_{n}^i*.原创 2018-11-03 10:58:13 · 819 阅读 · 0 评论 -
JZOJ 5929. 【NOIP2018模拟10.26】情书(n的排列LIS期望长度)
题目大意:求长度n的排列的LIS的期望长度。1<=n<=29题答。题解:以前有个经典的做法,就是dp套dp。考虑正常做LIS是怎么做的,有一个辅助数组l[i]表示长度为i的上升子序列的结尾最小是多少。那么很容易想到设fi,jf_{i,j}fi,j表示确定了排列的前i个,S是一个压缩状态,对于每一个数,0表示没有出现过,1表示出现了,但是不在l里,2表示出现了,且在l中。...原创 2018-10-26 22:48:09 · 597 阅读 · 0 评论 -
【2011集训队出题】Digit
Description: 在数学课上,小T又被老师发现上课睡觉了。为了向全班同学证明小T刚才没有好好听课,数学老师决定出一道题目刁难一下小T,如果小T答不出,那么…… 情节就按照俗套的路线发展下去了,小T显然无法解决这么复杂的问题,可怜的小T只能向你求助: 题目是这样的: 求一个满足条件的n位数A(不能有前导0),满足它的数字和为s1,并且,A*d的数字和为s2. 1原创 2018-01-05 18:54:09 · 530 阅读 · 1 评论 -
【中山市选2011】辽哥游戏
Description: 张辽是一个长发飘飘的非常聪明的男孩,人人都称他为“辽哥”。辽哥喜欢玩一个有趣的电脑游戏。这个游戏开始的时候有n个碉堡,每个碉堡拥有一个防御值和一个附加值。玩家拥有一个初始的攻击力。如果玩家破坏了一个碉堡,则他能得到1分。每一次,辽哥会选择一个碉堡进行攻击。所有未被破坏的碉堡会联合起来防御,因此为了破坏那个碉堡,辽哥的攻击力必须大于或者等于所有未被破坏的碉堡的防御值之和原创 2018-01-05 18:44:59 · 460 阅读 · 0 评论 -
【HNOI2016模拟4.10】线性代数与逻辑
题目:题解:对于读入的A数组的1部分,反转之后变为0,那我们构建的数组B这个位置必须为1,若这个位置是(i,j),则y[i]^y[j]=1。 我们对y进行染色,如果有冲突,则无解. 否则求出每个联通块的两种颜色的点数。 我们要使!B|A的零的个数最多,则使B的1的个数最多,即y中0,1的个数差距最小。 那么可以直接贪心或者背包求出答案。Code:#include <cstdio>#incl原创 2017-07-15 16:44:33 · 556 阅读 · 0 评论 -
【NOIP2017提高A组模拟7.14】紧急撤离
题目大意:给出一个n*m的0,1矩阵(1<=n,m<=500),规定一种规则,从一个点出发,每次只能向下或向右走,不能走1,多组询问(1<=Q<=600000),问是否能从一个点走到另一个点。题解:这题质量很高。 很容易想到这是离线做的。 我们可以对列分治。 假设现在要弄询问的列在[x..y]区间内的,设m=(x+y)/2,把第m列作为连接列。 设fi,j,Sf_{i, j, S}表示(i,原创 2017-07-15 15:50:30 · 608 阅读 · 0 评论 -
JZOJ 5167 【NOIP2017模拟6.26】下蛋爷
题目大意:有n个单词,有一个长度为m的文章,现在你先需要知道每个单词在文章内出现的次数。 现在一共进行k轮,每一轮有p的概率保留出现次数最小的那些单词(不保留就是把那些单词删掉)。 求n轮以后,每个单词保留下来的概率.1<=n<=200,1<=单词长度<=20,1<=m<=10^6题解:分两个部分。 第一部分就直接上ac自动机,可以打up来优化。 ac自动机up优化: up[x]表示x和x原创 2017-06-27 12:48:18 · 388 阅读 · 0 评论 -
JZOJ 3767【BJOI2014】路径
Description:在一个N个节点的无向图(没有自环、重边)上,每个点都有一个符号,可能是数字,也可能是加号、减号、乘号、除号、小括号。你要在这个图上数一数,有多少种走恰好K个节点的方法,使得路过的符号串起来能够得到一个算数表达式 算数表达式。路径的起点和终点可以任意选择。所谓算数表达式 算数表达式,就是由运算符连接起来的一系列数字。括号可以插入在表达式中以表明运算顺序。注意,你要处理各种情况,原创 2017-06-26 19:46:48 · 430 阅读 · 0 评论 -
JZOJ 1322 硬币游戏
题目大意: FJ的奶牛喜欢玩硬币游戏,所以FJ发明了一个新的硬币游戏。一开始有N(5<=N<=2,000)个硬币堆成一叠,从上往下数第i个硬币有一个整数值C_i(1<=C_i<=100,000)。 两个玩家轮流从上倒下取硬币,玩家1先取,可以从上面取1个或2个硬币,下一轮的玩家可以取的硬币数量最少为1个,最多为上一个玩家取的数量的2倍,硬币全部取完比赛结束。 已知玩家2绝顶聪明,会采用最原创 2017-07-05 15:38:12 · 644 阅读 · 0 评论 -
SG函数入门——【2017.5.28提高组模拟】Simple Game
现在绝顶聪明两个人在玩一个游戏:有m个集合,总共有n个元素,两人轮流操作,每次选定一个元素个数大于1的集合,把它分成i(2 <= i <= k)个非空集合,每个集合的大小随便定,最后没得选的人判负。要求建m个总共有n个东西的集合,且使得先手必赢,求方案数。1 <= m <= 10, m <= n <= 600, 2 <= k <= n原创 2017-05-28 16:41:48 · 519 阅读 · 0 评论 -
【NOIP2017提高A组模拟7.13】abcd
题目大意: n≤200,−25≤a[i]<b[i]≤25,1≤c[i]≤20,0≤d[i]≤100000n≤200,-25≤a[i]<b[i]≤25,1≤c[i]≤20,0≤d[i] ≤100000。题解:这其实是个多重背包问题。 只是这个物品的个数是a[i]..b[i],并且可以是负数。 其实是一样的,只需要把一开始的队列处理一下,队列出队的条件是一样的。 我们发现这样的常数有点大,所以需原创 2017-07-13 19:36:48 · 485 阅读 · 0 评论 -
JZOJ 3712【NOI2014模拟6.30】石中剑的考验
题目大意:原来的序列是n的排列,给出原来的序列的的一组最长不下降子序列,求原序列可以多少种。 (1<=n<=15)题解:状态压缩dp加暴力枚举状态。 求最长不下降子序列一种log算法就是开一个辅助数组l,lxl_x表示长度为x的序列的结尾最小是多少。 l是单调递增的。 设fi,Sf_{i, S}表示已经放了i个,状态是S的方案数。 一个数如果已经放了,并且在l里出现了,是2,放了,没在l中原创 2017-07-11 19:24:35 · 641 阅读 · 0 评论 -
SPFA维护dp——【NOI2014模拟7.11】挖宝藏
WC 2008游览计划升级版。原创 2017-03-23 19:26:56 · 534 阅读 · 0 评论 -
GDOI2017 day2 Problem3 小学生语文题
题目大意:给出一个只由小写英文字母组成的字符串,每次可以把一个字母调到它前面的一个位置,求与目标串相等的最少步数,并输出一组方案。原创 2017-05-22 15:53:30 · 698 阅读 · 0 评论