DP
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
【NOIP2017提高组模拟12.10】幻魔皇
Description幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。 请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。Solution把一段路径拆成两段,x->lca,lca原创 2016-12-12 22:15:35 · 609 阅读 · 0 评论 -
【JSOI2014】支线剧情2
DescriptionSolution这题明显是DP。 设f[i][0]和f[i][1]表示以i为根的子树打不打标记的最小值。 设shu[x]表示x为根的子树有多少个叶子节点。 f[x][0]+=f[last[i]]+chang[i]*shu[last[i]] f[x][0]的转移很显然,因为子节点与x要走叶节点的个数次。 f[x][1]的转移就有好几种情况: 1:儿子打了标记,那么走完原创 2017-01-18 07:24:54 · 921 阅读 · 0 评论 -
【NOIP2014八校联考第4场第2试10.20】准备复赛
Description今年的NOIP初赛真是简单,小可可不用吹灰之力就考进了复赛,但是复赛可没有那么简单了,小可可想要好好准备复赛,争取复赛拿个省一。今天小可可在复习树和图的最大匹配时就碰到这样的一个难题:n个节点满足以下性质的不同的树有多少种。 1、树是有标号的,每个节点被标上1到n之间的整数; 2、每个节点最多和其他3个节点相连,但是1号节点最多和其他2个节点相连; 3、这棵树的最大匹配(原创 2017-01-19 07:36:30 · 1271 阅读 · 0 评论 -
【NOI2014模拟7.11】【WC2008游览计划加强】挖宝藏
DescriptionSolution可以发现,直接做spfa会比较难做。 我们考虑把一层一层的做。 首先有一个很显然的结论:一层的挖过得洞一定是一棵树。 单层的话,很容易想到状压DP。 肯定要DP每层的每个节点覆盖宝藏的情况且当前这个节点被挖过。 那么我们设g[i,j,s]表示点的坐标为(i,j)覆盖宝藏的情况为s。 为了合并s,我们肯定要先枚举s。 然后g[i,j,s原创 2017-03-19 11:52:03 · 806 阅读 · 0 评论 -
【NOI2017模拟.4.1】 Dice【概率,期望,DP,精度优化】
DescriptionSolution这道题的期望转移其实不难,但是精度很难卡。 先考虑第一个答案 设 g[i][j]为取到第i次,取得数为j的概率g[i][j]为取到第i次,取得数为j的概率 f[i][j]为取到第i次,取得数为j的期望f[i][j]为取到第i次,取得数为j的期望 g[i][j]=∑k≠pg[i−1][k]∗Pg[i][j]=\sum_{k≠p} g[i-1][k]*P原创 2017-04-07 10:28:42 · 1397 阅读 · 0 评论 -
【NOI2017模拟.4.1】Shoes【DP决策单调性,主席树,分治】
DescriptionData ConstraintSolution动态规划如果只有一个鞋柜,那么真的是相当的简单,直接找个中位数就可以了,但是有多个鞋柜该怎么办? 还有一个很显然的性质,就是鞋柜肯定是放在鞋子上的,就是现在放鞋柜的点缩小为2n。 我们的鞋柜肯定是越靠近两个鞋子的中点越优,所以把鞋子按中点排序 那我们考虑可不可以从k-1个鞋柜推到k个鞋柜。 很明显,可以设一个DP: f[i原创 2017-04-07 14:54:49 · 929 阅读 · 0 评论 -
【NOIP模拟】序列
DescriptionSolution这道题有两个方法。方法1:差分加贪心首先可以求出每个点从a[i]到b[i]的步数c[i]。 然后处理出两两之间的差分d[i]。显然在不调整之前(加4),答案的值是∑max(0,d[i])\sum max(0,d[i]),画一下图就知道了。 那么假设现在对区间[l,r]的每个数加4,那么对于差分的影响,只会影响到l和l-1的差分还有r和r+1之间的差分。 如原创 2016-09-19 20:38:44 · 819 阅读 · 0 评论 -
【GDSOI2017第二轮模拟】树
*Descriptionn个点,它们从1到n进行标号,第i个点的限制为度数不能超过A[i]. 现在对于每个s (1 <= s <= n),问从这n个点中选出一些点组成大小为s的有标号无根树的方案数。Solution这题一眼就是prufer序列,但是比赛的时候忘记了prufer序列的性质了。 prufer序列就是每个数的出现次数不会超过这个点的度数,那么直接一个DP: f[i][j][k]表示做原创 2017-04-18 12:24:02 · 483 阅读 · 0 评论 -
【GDOI2017第二轮模拟day2】开房间
DescriptionA君与B君正在玩一款闯关游戏,游戏共有n关,每一关的目标只有一个:开房间。 每一关都会有m个房间(从1~m进行编号),A君与B君每关各打开一个房间即可过关,但两人不能打开同一个房间。 通过每一关后,m个房间会重新关上,在第i关打开第j个房间需要消耗t[i][j]的体力值。并且无论A君还是B君,除了第一关外,若上一关自己开了a号房间,这一关开了b号房间,则需要额外消耗K*|a原创 2017-04-18 14:19:48 · 606 阅读 · 0 评论 -
【NOI2017模拟4.5】机器人游戏【搜索,DP】
Description小A和小B在一个R行S列的棋盘上玩游戏,棋盘上的每一个棋格都有一个方向标记(上、下、左或右)。游戏按如下方式进行: 小A先将K个棋格涂上黑色(初始为白色),并且他不能涂黑最后一列的棋格;随后,小B在第一列的任意一个棋格上放一个小机器人;此时,小机器人将会不停地沿着他所在的棋格所指示的方向走到一个相邻的棋格,直到他到达最后一列的棋格,游戏结束。 游戏胜负规则如下: ●如果小原创 2017-04-06 17:17:34 · 951 阅读 · 0 评论 -
【NOIP2014八校联考第4场第1试10.19】圣诞树(tree)
Description圣诞节到了,小可可送给小薰一棵圣诞树。这棵圣诞树很奇怪,它是一棵多叉树,有n个点,n-1条边。它的每个结点都有一个权值。小可可和小薰想用这棵树玩一个游戏。 定义(s,e)为树上从s到e的简单路径,我们可以记下在这条路径上经过的结点,定义这个结点序列为S(s,e)。 我们按照如下方法定义这个序列S(s,e)的权值G(S(s,e)):假设这个序列中结点的权值为Z0,Z1,…,Z原创 2017-01-17 22:09:22 · 1607 阅读 · 0 评论 -
NOIP2014八校联考第3场第1试10.4】反抗希碧拉系统续(regex)
Description虽然一科的反抗行动失败了,但那次行动已使反抗希碧拉系统的观念深入人心,而作为分析官的你也找到了系统的某处漏洞,机会依然存在,你要为下一次反抗做好准备。 直接使用电磁脉冲破坏系统在上次被证明是不可行的,现在只能试图渗透进系统寻找突破口。你现在可以从漏洞监听到中枢中每个单元大脑间的通信,并筛选出其中符合某规则的一些进行更深入的分析。规则可以描述为一个特殊的正则表达式,有如下递归定原创 2017-01-17 21:26:25 · 1081 阅读 · 0 评论 -
【NOIP2014八校联考第1场第2试9.21】大水题(water)
Descriptiondzy 定义一个n^2 位的数的生成矩阵A 为一个大小为n*n 且Aij 为这个数的第i*n+j-n位的矩阵。 现在dzy 有一个数n^2 位的数k,他想知道所有小于等于k 的数的n*n 生成矩阵有多少种。(如果不足n^2 位则补前缀零)Solution其实题意转化一下就是在k里面找到所有的要求的数的个数(如果翻转过来也存在,那么只算一次) 我们正难则反。 设f(i)为i原创 2017-01-17 21:05:04 · 881 阅读 · 0 评论 -
【51Nod 1294】修改数组
Description给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数。问最少需要修改几个数?Solution首先需要严格递增,而且要改成正整数。 那么就是第i位至少要是i,那么如果a[i]Code#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#i原创 2016-12-07 22:24:11 · 844 阅读 · 0 评论 -
【51 Nod1378】夹克老爷的愤怒
Description夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织起来暴力抗租。 夹克老爷很愤怒,他决定派家丁常驻村中进行镇压。 诺德县 有N个村庄,编号0 至 N-1,这些村庄之间用N - 1条道路连接起来。 家丁都是经过系统训练的暴力机器,每名家丁可以被派驻在一个村庄,并镇压当前村庄以及距离该村庄不超过K段道路的村庄。 夹克老爷一贯奉行最小成本最大利润的原则,请原创 2016-12-16 22:46:54 · 662 阅读 · 0 评论 -
【NOIP2017提高组模拟12.17】巧克力狂欢
DescriptionAlice和Bob有一棵树(无根、无向),在第i个点上有ai个巧克力。首先,两人个选择一个起点(不同的),获得点上的巧克力;接着两人轮流操作(Alice先),操作的定义是:在树上找一个两人都没选过的点并获得点上的巧克力,并且这个点要与自己上一次选的点相邻。当有一人无法操作 时,另一个人可以继续操作,直到不能操作为止。因为Alice和Bob是好朋友,所以他们希望两人得到的巧克力总原创 2016-12-17 19:47:05 · 1063 阅读 · 0 评论 -
【NOIP2017提高组模拟12.17】向再见说再见
DescriptionSolution我们现在的目的是,a队赢(k+n)/2和(n-k)/2的方案数。 我们考虑正难则反,我们a队肯定赢i次的情况=至少赢i次的情况-肯定赢j次的情况的出现次数(j>i)我们先来考虑至少赢i次的情况。 我们设f[i][j]表示a队的前i的至少赢j次的情况(不考虑那些不确定的,因为要求至少的情况) 先把两个数组排序一下。 那么f[i+1][j+1]+=f[i][原创 2016-12-17 20:33:29 · 1117 阅读 · 0 评论 -
【JZOJ 4931】A
Description有N家洗车店从左往右排成一排,每家店都有一个正整数价格Pi。 有M个人要来消费,第i个人会驶过第Ai个开始一直到第Bi个洗车店,且会选择这些店中最便宜的一个进行一次消费。但是如果这个最便宜的价格大于Ci,那么这个人就不洗车了。 请给每家店指定一个价格,使得所有人花的钱的总和最大。Solution还以为是什么强大的可以构造的题目,然后并不是。 如果有一个k位置,它填的值很小原创 2016-12-24 16:30:27 · 636 阅读 · 0 评论 -
【NOIP2017提高组模拟12.18】C
Description给出一个H的行和W列的网格。第i行第j列的状态是由一个字母的A[i][j]表示,如下: “.” 此格为空。 “o” 此格包含一个机器人。 “E” 此格包含一个出口,保证出口在整个网格中有且只有一个 每次可以选择上,下,左,右之一的方向,将所有剩余的机器人向这个方向移动一个格子,如果一个机器人被移出了网格,那么这个机器人会爆炸,并立即消失。如果一个机器人移动原创 2016-12-20 15:35:15 · 644 阅读 · 0 评论 -
【51Nod 1201】 整数划分
Description将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。由于数据较大,输出Mod 10^9 + 7的结果即可。Solution这是一道非常神奇的DP题,用背包直接做会超时。 不过这个DP方程式其实是我推二维背包的时候不小心打错的时候推出来的。 我们设f[i][j]f[i][j]表示用i个数推出j的方案数。原创 2016-12-20 17:09:12 · 1025 阅读 · 0 评论 -
【NOIP2014八校联考第2场第2试9.28】帮助Bsny(help)
DescriptionBsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数。例如,如果书的高度是30,30,31,31,32,那么混乱值为3;30,32,32,31的混乱值也为3。但是31,32,31,32,31的混乱值为5,这实在是太乱了。 Bsny想尽可能减少混乱值,但他有点累了,所以他决定最多取出k本书,再随意将它们放回到书架上。你能帮助原创 2017-01-14 22:05:36 · 1253 阅读 · 0 评论 -
JZOJ 4937【GDKOI2017模拟1.12】与运算
DescriptionSolution有一个很显然的性质就是如果一个x的所有二进制位都≥y的所有的二进制位,那么x肯定放在y的前面会比较优。 所有我们设f[i]表示填i时的最大答案。 我们设sum[i]表示二进制包含i到数的个数。 那么f[i]=max(f[i],f[i|er[j−1]]+i∗(sum[i]−sum[i|er[j−1]]))f[i]=max(f[i],f[i|er[j-1]]+原创 2017-01-12 19:30:00 · 785 阅读 · 0 评论 -
【NOI2017模拟4.5】无限棋盘【哈希,字符串,倍增】
Description无聊的小A在一个无限大的棋盘上玩游戏,这个棋盘由一个M*N的模板不停重复生成。例如,当模板为: honi hsin 时,我们会生成如下棋盘: …honihonihonihoni… …hsinhsinhsinhsin… …honihonihonihoni… …hsinhsinhsinhsin… 其中,该棋盘在任意一个方向都可以无限延伸。 现在小A在棋盘上随机挑选原创 2017-04-06 16:58:09 · 1177 阅读 · 0 评论 -
【GDOI2017模拟一试4.11】颜色树(容斥||点剖||DP)
Description思源湖畔有一棵树,那是独孤玉溪最喜欢的地方。 传说中,这棵不见边际的树有N个节点,每个节点都有1片叶子,每片叶子都拥有K种颜色中的一种,独孤玉溪喜欢爬到这棵树上,沿着一条路线摘叶子,并拥有所有颜色的叶子。 独孤玉溪会选择一个起点,并沿着树边走,然后最终停在一个终点上(起点和终点可能相同),当然了每一个结点只能经过一次(每一片叶子只能摘一遍)。独孤玉溪突生奇想,有多少种不同的原创 2017-04-16 08:58:20 · 1172 阅读 · 0 评论 -
【JZOJ5262】【GDOI2018模拟8.12】树(DP,性质题)
DescriptionSolution首先我们可以知道两个性质:1、路径u-v和路径v-w可以合并为路径u-w;2、路径u1-v1加路径u2-v2和路径u1-v2加路径u2-v1是等价的(就是起始点和终点可以互换) 那么知道这些性质之后就很好做了。我们只用知道每个点多少次做起点和多少次做终点。 我们设f[i]表示满足i子树的需求i上的值要是多少。 那么枚举i的所有儿子,判断a[i]-f[i],原创 2017-08-21 07:57:16 · 474 阅读 · 0 评论 -
【JZOJ5336】【NOIP2017提高模拟】提米树(DP、前缀和)
DescriptionSolution首先剪枝是对于一个点的,就是要把这个点下面的所有边给删掉。 然后有些点是两两不能做相邻的叶子的,只有dfs序相邻的叶子到他们lca上的点之间可以做相邻的叶子对,这样可以做到dfs序相邻。 然后我们可以设f[i]表示以i节点作为dfs序结尾的最大决心数量,那么枚举相邻的叶子,然后把上面的点两两配对来更新,这样是n^2log(带lca)的。但是要注意当一个点被更原创 2017-08-24 19:59:00 · 593 阅读 · 0 评论 -
【JZOJ5335】【NOIP2017提高组模拟】早苗(DP、矩阵乘法)
DescriptionSolution这题的DP其实很显然。 首先显然有一个状态是f[i][j]表示做到第i个,向前最多连续j个不同的方案数。 我们既然不能有m个不同的,那么我们只要不向m转移就好了。 转移也是比较的显然首先可以新加一个颜色f[i][j]–>f[i+1][j+1]*(m-j) 或者可以把前面的连续j个颜色断开f[i][j]–>f[i+1][1~j-1] 然后用矩阵乘法。Co原创 2017-08-24 20:06:07 · 810 阅读 · 0 评论 -
【JZOJ5272】【GDOI2018模拟】神奇的重复序列(DP,性质题)
DescriptionSolution如果两个串重叠的话,那么很明显这个串会是一个周期串(画个图就知道了)。 枚举两个串的左端点的间距k,那么根据周期串的性质,在%k相同的地方都是相同的,那么我们枚举k,然后在枚举第一个串的左端点,然后用一个指针j向右扫过去。如果要把%k相同的修改为相同的话,那么就是保留其中出现次数最多的字符。那么我们对于%k的位置要存储每个字符出现多少次还有出现最多的是什么,和原创 2017-08-23 08:00:18 · 489 阅读 · 0 评论 -
【ZJOI2016&&BZOJ4574】【NOIP模拟】作弊(DP&&随机数据)
DescriptionSolution一开始这道题就看错题了,我直接用一轮的期望作为下一轮的值,结果还以为很容易就能用n^3搞出来,结果搞了半天。 因为最后序列的答案不会超过原序列的最大值,所以我们可以考虑对原序列离散化一下,然后考虑每个位置最后的值是原序列第k大的期望,那么我们可以设sum[i][j]表示第i个点值小于等于序列中第j大的方案是多少,然后用sum[i][j]-sum[i][j-1]原创 2017-09-04 22:44:28 · 731 阅读 · 0 评论 -
【JZOJ5330】【NOIP提高组模拟】密码(库默尔定理、数位DP)
DescriptionSolution这题和[51Nod 1569二项式系数的个数]是用一道题。 就是要求Cmn|pkC_{n}^m|p^k 根据库默尔定理,CmnC_{n}^m中p的次幂数就是n+m(加法)在p进制下的进位次数。 那么题意就变成了选小于等于n的两个数,在p进制下的进位次数为k。 知道这个之后我们就可以数位DP。 我们设f[i][j][k][l]表示做到第i为,进位次数为j原创 2017-08-23 22:24:42 · 1548 阅读 · 0 评论 -
【JZOJ5316】【清华集训模拟】merge(DP、括号序)
DescriptionSolution我们可以想到一个很显然的错误的DP,f[i][j]+=f[i-1][j]+f[i][j-1] 这样明显是会算重的,所以我们要考虑怎样去重。 你可以找一下规律。 我们知道如果在(i,j)前面有一段连续的相同的数的话是会算重的,那么在这之中的转移我们可以强制要求i>=j,那么这个就相当于一个括号序(()()),但是要保证括号影响的连续性,我们需要保证括号外面(原创 2017-08-23 22:37:52 · 410 阅读 · 0 评论 -
【NOIP模拟】赤壁情(DP)
DescriptionSolution这是一个计数的问题,一个关于排列的方案数的问题。 但是用一般的排列求是不行的,对于插入排列因为要去绝对值,所以很麻烦。 对于绝对值来说,我们可以把贡献给拆开,|i-j|把它拆开,那么就从小到大插入,先放入的j放入值-j,后放入的值i放入值i,因为不知道最后的位置是什么,所以一开始只存储相对的位置,那么到最后个数成为n个的时候就是一个排列了。 然后每次插入的原创 2017-09-02 19:28:54 · 491 阅读 · 0 评论 -
【NOIP2017提高A组集训10.22】友谊
DescriptionFlowey 是一朵能够通过友谊颗粒传播LOVE 的小花.它的友谊颗粒分为两种, 圆粒的和皱粒的,它们依次排列组成了一个长度为2m 的序列.对于一个友谊颗 粒的序列,如果存在1<=iSolution这道题60分很好打,设f[i][j][k]为做到第i个,偶数的圆粒和皱粒的个数,然后转移,注意要看到只有前偶后奇才能转移就很简单了。 我们发现,最麻烦的东西就是上面的限制。原创 2017-10-25 21:03:36 · 504 阅读 · 0 评论 -
JZOJ5242【GDOI模拟】矩阵
Description给出一个n*m 的01 矩阵,求其中有多少个连续子矩阵,使得其面积大于等于k,且其中不包含1。Solution非常经典的一道题目。 首先我们很容易知道n^3的方法。 那么我们来优化一下。 我们先求出f[i][j]表示从(i,j)向右连续1的数量。 然后把这些从大到小的插入(桶排一下) 然后如果上面或下面已经有了就合并,然后算出贴底的(就是有一边在第j列)的新增矩形方案原创 2017-08-09 10:42:59 · 536 阅读 · 0 评论 -
JZOJ3773【NOI模拟】小 P 的烦恼(拓扑排序,贪心,找桥)
Description小 P 最近遇上了大麻烦,他的高等代数挂科了。于是他只好找高代老师求情。善良的高代老师答应不挂他,但是要求小 P 帮助他一起解决一个难题。问题是这样的,高代老师近期要组织班上同学一起去漂流,漂流可以看做是在一张 n 个点 m 条边的有向无环图上进行的,点编号从 0 到 n-1 ,表示景点; 边是连接各景点的一定长度的河道。同时,定义编号为 s 是起点而 t 是终点。我们不妨把从原创 2017-08-09 09:45:24 · 554 阅读 · 0 评论 -
JZOJ5233【GDOI模拟】概率博弈
Description小A和小B在玩游戏。这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值。假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列。 一开始在1号点有一颗棋子。两人轮流将这颗棋子移向其当前位置的一个儿子。假如棋子到达叶子,游戏结束,最终获得的权值为所在叶子对应权值。 小A希望最后的权值尽量大,小B希望尽量小。小A是先手。 在玩了很多局游戏后,小B对其原创 2017-08-09 09:30:54 · 663 阅读 · 0 评论 -
【GDOI2017第二轮模拟day1】最长路径(性质题,容斥,组合数学)
Description在Byteland 一共有n 个城市,编号依次为1 到n,它们之间计划修建n(n-1)/2条单向道路,对于任意两个不同的点i 和j,在它们之间有且仅有一条单向道路,方向要么是i 到j,要么是j 到i。换句话说,这是一个n 个点的竞赛图。 Byteasar 居住在1 号城市,他希望从1 号城市出发,沿着单向道路不重复地访问一些城市,使得访问的城市数尽可能多。 请写一个程序,帮原创 2017-04-16 09:50:11 · 1718 阅读 · 0 评论 -
【GDSOI2017第三轮模拟】Travel Plan(DP)
DescriptionSolution一开始我的DP方程f[i][j]的j设的是代价是多少,但是代价非常的打,所以枚举的时候很容易超时。 但是反着想一想如果f[i][j]的j是满意度,然后求的是最小的代价,那么枚举的东西就很少了。 这样就只能拿40分。 但是100分非常的简单啊,用dfs序思考一下,题目只是要求你不取一段而已,所以前缀后缀匹配一下就好了。 怎么匹配呢?一开始我打的是排序,但是原创 2017-04-22 16:03:31 · 420 阅读 · 0 评论 -
【GDOI2017第三轮模拟day2】魔法咒语(AC自动机,矩阵乘法)
Description Solution这道题目的60分非常的简单,直接用ac自动机直接搞一搞就好了。 但是后面的40分怎么做? 我们发现后面的40分全部都是基本单词长度不会大于2,所以我们可以考虑一下怎么矩阵乘法。 假设我们的转移的矩阵有两个部分:[i-1,i] 那么我们要转移到[i,i+1] 当单词长度为1的时候,可以从i转移到i+1,i-1转移到i 当单词长度为2的识货,可以从i原创 2017-04-22 16:25:43 · 912 阅读 · 0 评论 -
【GDOI2017第三轮模拟day1】影魔(主席树)
Description影魔,奈文摩尔,据说有着一个诗人的灵魂。事实上,他吞噬的诗人灵魂早已成千上万。千百年来,他收集了各式各样的灵魂,包括诗人、牧师、帝王、乞丐、奴隶、罪人,当然,还有英雄。 每一个灵魂,都有着自己的战斗力,而影魔,靠这些战斗力提升自己的攻击。 奈文摩尔有n个灵魂,他们在影魔宽广的体内可以排成一排,从左至右标号1到n。第i个灵魂的战斗力为k[i],灵魂们以点对的形式为影魔提供攻击原创 2017-04-22 17:02:32 · 534 阅读 · 0 评论