
dp
MintGreenTZ
这个作者很懒,什么都没留下…
展开
-
Bzoj 1236 SPOJ1433 KPSUM
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1236 Time Limit: 1 Sec Memory Limit: 162 MB Description 给你一个正整数N,依次把1到N写下来,在每两个数字之间交替的加上+,-号(注意是数字不是数),求这个表达式的值。例如,N=15时,表达式为1-2+3-4+5-6+7原创 2016-07-17 16:51:36 · 562 阅读 · 0 评论 -
日常训练 20161102 隔离区
题意简述:给出一个nn个点的树(有边权),问删除其中一条边,剩下最长链的长度的期望。(乘(n−1)(n-1)输出)题解:经典树形dp,用down1、down2、down3记录每个点向下的第一第二第三长链,up记录每个点向上最长链,son1、son2记录每个点有第一第二长链的两棵子树,dis记每个点到其父亲的边权,down_ans记录每个点向下的答案,lws是longest_without_subtr原创 2016-11-02 16:44:42 · 392 阅读 · 0 评论 -
日常训练 巨神兵 obelisk
题意简述:有一张nn个点,mm条边的有向图,有多少个子图(选定一个边集)是没有环的。答案对1e9+71e9+7取模。n≤10n\leq10 考虑状压dp,一个无环图一定是可以唯一分层的,将一开始入度为00的点放第一层,将这些点去掉,剩下出现的新的入度为00的点为第二层…以此类推,用f[i][j]f[i][j]表示已经取得点集为ii,最后一层点集为jj,枚举新的点集kk。集合kk中的每一个点必须至少原创 2017-01-09 19:29:33 · 782 阅读 · 0 评论 -
日常训练 ID?排列个数
题意简述:考虑一个排列相邻两个元素,后一个比前一个大,记为上升I,后一个比前一个小,记为下降D,?既可以表示I也可以D,给出一个序列S,问合法的排列数。(|S|≤1000)(|S|\leq1000) 因为我们只关心新加进来的数和前面最后一个数的相对大小,所以记f[i][j]f[i][j]为前ii个数,最后一个数是前ii个数中第ii小的,就可以转移了。#include<bits/stdc++.h>原创 2017-03-28 14:58:15 · 369 阅读 · 0 评论 -
伪·最长公共子序列个数
题意简述:给出两个字符串A,B。设最长公共子序列长度为LL,求A中有多少长度为LL的子序列也在B串中出现。(注意不是最长公共子序列)(length(a),length(b)≤1000)(length(a),length(b)\leq1000) 设f[i][j]f[i][j]为A串中前ii个和B串中前jj个最长公共子序列长度,g[i][j]g[i][j]为A串中前ii个和B串中前jj个最长公共子序列原创 2017-03-28 14:46:40 · 651 阅读 · 0 评论 -
Bzoj 2431: [HAOI2009]逆序对数列
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2431 用f[i][j]f[i][j]表示前ii个数字为止产生jj个逆序对的方案数,显然第ii个数放进去会产生00~i−1i-1个逆序对,用前缀和优化转移即可。#include<bits/stdc++.h>const int N = 1005;const int K = 1005;co原创 2017-04-04 16:21:32 · 374 阅读 · 0 评论 -
Bzoj 4824: [Cqoi2017]老C的键盘
题意简述:给出一个大小为nn的完全二叉树,每条边上有一个符号,表示相邻两节点数的大小关系,把一个nn的排列填进去,问合法方案数。 题解:用f[i][j]f[i][j]表示第ii个节点,排名为jj的方案数。对于每个点,把它的子树一棵一棵合并上来,设一棵子树AA排名为ii,另一棵子树BB有jj个元素插到ii的前面,合法的BB的排名是一个连续的区间,能用前缀和优化,jj个数插到ii前面,size[B]s原创 2017-04-14 21:01:43 · 1199 阅读 · 0 评论 -
Bzoj3484 [Baltic2012]brackets
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=3484 题意: 我们把一种由[、]、(、)组成的序列成为合法的: 单独的“()”和“[]”是合法的。 如果A和B是合法的,那么AB也是合法的。 如果A是合法的,那么(A)和[A]也是合法的。 有一个序列A,他的所有的“[”和“]”都被替换成了“(”,这样形成了序列B,现在已知序列B原创 2017-06-08 21:36:03 · 475 阅读 · 0 评论 -
Bzoj 3663: Crazy Rabbit
传送门: http://www.lydsy.com/JudgeOnline/problem.php?id=3663 题意: 兔子们决定在自己的城堡里安排一些士兵进行防守。 给出 n (1≤n≤2000)n\ (1\le n\le2000) 个点的坐标,和城堡里一个圆心在原点的圆形的障碍,兔子们希望从中选出 nn 个兔子,使得它们两两所在的直线都不与圆相交。 兔子们希望知道最多能选出多少兔子。 题原创 2017-06-21 20:07:14 · 650 阅读 · 0 评论 -
日常训练 20170622 数字游戏
题意简述: 给出两个正整数数列 A1A_1 , A2A_2 , 序列长度分别为 L1L_1 和 L2 (L1,L2≤2000)L_2\ (L_1, L_2 \le 2000),每次可以移除序列 A1A_1 的最后 K1K_1 个数(可以是整个序列)并得到它们的和 S1S_1 , 同时移除序列 A2A_2 的最后 K2K_2 个数(可以是整个序列)并得到它们的和 S2S_2 , 那么这次移动的费用为原创 2017-06-22 18:28:34 · 429 阅读 · 0 评论 -
Bzoj 1596: [Usaco2008 Jan]电话网络
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1596 有点像“没有上司的舞会”,但因为两座塔可以距离最多为3,所以要记三种状态。f[i]f[i]表示ii这个点已经放了,g[i]g[i]表示ii这个点没放但已经子树的通讯塔范围内了,h[i]h[i]表示ii这个点没放而且不在子树的通讯塔范围内。具体转移不难,如果不会可以参考代码。type原创 2016-10-30 22:31:15 · 492 阅读 · 0 评论 -
Bzoj1775 [Usaco2009 Dec]Vidgame 电视游戏问题
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1775带依赖关系的背包。为了防止泛化物品之间的并,对于一个泛化物品,强制取那个子树的物品,传给它的子树。(具体表现是传给它的时候就减去它的体积,计算答案时强行加上权值)。 对于当前点有fi,对于它的一棵子树s,先将fi传给fs,并且强制减去体积,计算完fs时,fs已经包含fi,这时候将fi与原创 2016-10-18 19:16:10 · 715 阅读 · 0 评论 -
Poj1384 Piggy-Bank
原题网址:http://poj.org/problem?id=1384Piggy-BankTime Limit: 1000MS Memory Limit: 10000K Total Submissions: 10512 Accepted: 5118 DescriptionBefore ACM can do anything, a budget must be prepar原创 2016-07-07 21:36:57 · 326 阅读 · 0 评论 -
Codeforces Round #363 (Div. 1) C LRU
原题网址:http://codeforces.com/contest/698/problem/C 法一(cf上的题解):把问题倒过来想。假设从最晚访问的元素开始向前加元素,加到k个为止。求第i个出现的概率。这样就不同考虑从缓存区有文件出来了。 将20个元素压位,dp[mask]记录mask状态(由 0/1 表示的状态)出现的可能性。当1<< i在mask中为0,也就是第i个元素没有出现过时,原创 2016-07-20 20:40:11 · 582 阅读 · 0 评论 -
2016SCZSC Day6
T1 看电影 n个人围成一圈,在n个人中每次随机删掉一个位置的人,若已经被删,则顺时针找接下来第一个没有被删的人。直到剩k人,问站在id号位没被删的期望是多少。(0<=k<=n<=10^9,n>1)因为每个位置期望相同,则期望为k/nT2 树塔狂想曲 数塔每次 ban 掉一个点(即规定哪个点不能经过),然后询问你不走该点的最大路径和。(每次他在原图的基础上ban掉一个点,而不是永久化的修改)原创 2016-08-17 00:42:41 · 373 阅读 · 0 评论 -
Codeforces Round #360 (Div.1) C.The Values You Can Make
原题网址:http://codeforces.com/contest/687/problem/C 用f[i][j][k]=0/1表示用前i种货币,付出j圆,j圆中又有k圆是否可行。 方程:f[i][j][k]=f[i-1][j][k] or f[i-1][j-c[i]][k] or f[i-1][j-c[i]][k-c[i]] 注意不要MLEvar f,g:array[-501..50原创 2016-08-10 22:42:27 · 386 阅读 · 0 评论 -
Bzoj2595: [Wc2008]游览计划
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2595标算是斯坦纳树,其实类似状压dp。 首先答案一定是树形的,否则断开一条环上边,不影响连通性,答案不会变劣。 用f[x][y][s]表示以x,y为根的,经过了至少 s的景点的树,这里的s是压过的0/1表示的景点是否访问过的状态。 有两种状态转移,一种是合并两棵树f[x][y][s]:原创 2016-09-13 11:17:14 · 400 阅读 · 0 评论 -
codevs1050 棋盘染色 2
原题网址:http://codevs.cn/problem/1050/ 插头dp板子题 论文链接:http://wenku.baidu.com/link?url=ppnlF-_UyXkM0fWq4lByxGxjd4K67RpRywuLSgWUNwqAqsT69Hx3plGfBeaUR7pW55_CO5PaxfpH3mbRIzJm2XdNvFRepBwUk5y88_gEH1u很早理论上就会了,但一原创 2016-10-11 19:35:46 · 1001 阅读 · 0 评论 -
日常训练20161013 棋盘上的象
一开始想用类似8皇后的位运算来做,但皇后每行只能放一个,象每行可以放多个,同样的方法枚举复杂度就会高很多。复杂度无法估计,每层转移2^n但不满,反正这种复杂度只过了70%的点。var n,k,limit:longint; ans:int64;function count(x:longint):longint; begin count:=0; while x>0 do原创 2016-10-13 16:22:38 · 586 阅读 · 0 评论 -
日常训练20161013 括号表达式
法一:用f[i][j][k]表示前i位,最深深度为j,当前深度为k的方案数。枚举第i+1位左括号还是右括号,O(1)转移。总复杂度O(n*d^2)。var f:array[0..201,-1..151,-1..151] of int64; n,d,i,j,k:longint;begin assign(input,'bracket.in');reset(input); assign(原创 2016-10-13 15:36:17 · 521 阅读 · 1 评论 -
Bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1231 题目简述:给出nn(4≤\len≤\le16)个数,求满足任意相邻元素差大于kk的排列数。 题解:看数据范围像是压位,实际上就是压位。用f[i][j][s]f[i][j][s]表示前ii位,最后一位是jj,已经放过的集合是ss的方案数。枚举第i+1i+1位放什么,直接转移即可。va原创 2016-10-27 18:35:32 · 554 阅读 · 0 评论 -
日常训练 20170620 技能树skill
题意: 热爱电子娱乐的同学们对于技能树一定不陌生.就是说,要先学习低级的垃圾技能,特定的几个垃圾技能学会了,才能学习更强的技能.比如说,要先学火球术和烈火墙,才能学习地狱烈焰.科技树也是一样.要先研究出电力和内燃机,才能研究工业学.那么,现在我们把问题简化, 这是一个技能树(或者科技树).格子上的数,是威力值.要先学会第一排第二个和第三个,才能学会第二排的第二个.每个技能学习的前提都原创 2017-06-22 19:00:25 · 917 阅读 · 0 评论