动态规划
A_loud_name
23333333~~~
展开
-
poj 3311 Hie with the Pie floyd+状态压缩dp
题目大意 给你n个城市(1~n)和一个PIZZA店(0),要求找一条回路,从0出发,又回到0,而且距离最短。分析先用floyd把任意I,j两点的最短路找出来。再DP: D[I,j]=min(d[I,j],d[i xor (1 shl (j-1)),k]+f[k,j])((i and (1 shl (j-1))) 其中i表示用二进制表示n个城市,1表示经过,0表原创 2016-04-23 08:23:10 · 692 阅读 · 3 评论 -
The Highest Mark hdu 5501 贪心+背包
分析考虑a,b两道题 如果先a后b A1-B1* C1+A2-(C1+C2) *B2 如果先b后a A2-B2* C2+A1-(C1+C2) *B1 如果令先做A再做B的得分更高些,那么有 A1-B1* C1+A2-B2* (C1+C2) >= A2-B2* C2+A1-B1* (C1+C2) 化简得: B2C1<=B1C2原创 2016-11-15 20:22:10 · 383 阅读 · 0 评论 -
poj 1742 coins dp
题目描述银岛上的人使用银岛币。这些金币分别价值A1,A2,A3…An银岛币。一天托尼打开他的钱包,发现有一些银岛币。他决定在附近商店买一个非常好的表。他想给商店正好的钱(就是商店不用找零)并且他知道表的价格不会超过m银岛币。但他不知道表的精确价格。 你的任务是写一个读入A1,A2,A3…An和C1,C2,C3…Cn的程序。(C1,C2,C3…Cn表示托尼有A1,A2,A3…An的个数)判断1到m中原创 2016-12-14 17:31:44 · 326 阅读 · 0 评论 -
最大值 (补档) dp+前缀和优化
题目描述找到一个数组的最大值的一种方法是从数组开头从前到后对数组进行扫描,令max=a[0](数组下表从0..N-1),如果a[i]>max,就更新max,这样就可以在O(N)的时间里找到一个数组的最大值。 这个问题是相当简单的,但是想到了另一个问题,如果一个包含N个元素的数组a里面的元素的值是在1…K之间的整数,存在多少个不同的数组a,进行了如上扫描之后,max恰好进行了p次更新? 下面是N原创 2016-11-12 13:47:35 · 655 阅读 · 0 评论 -
2016年提高组模拟题(20161111) 配饰 ssl 2569 LCIS的集合
Description但是小L想考验一下小T,所以,他给小T出了一个难题. 他拿出了他所有的配饰并摆成两列,如果两个配饰的型号一样并且出现在不同列中,那么我们就可以认为这两个配饰为情侣配饰.另外,由于某些不为人知的原因,我们规定,在顺序选取的情况下,每选定的一对配饰必须比前面选定的一对配饰的型号要大.小T最多能够选取多少对配饰呢?Input共四行 第一行一个数N 表示第一列配饰的个数 第原创 2016-11-11 20:54:13 · 570 阅读 · 0 评论 -
2016年提高组模拟题(20161114) 物品选取 ssl 2572 dp_背包
分析对于不同的物品有 1.枚举所有可能的体积取值分成m种物品转01背包 2.多重背包转01背包 3.完全背包转01背包 然后裸的01背包可以对了代码#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<string>#include<algorithm>using原创 2016-11-14 21:17:36 · 363 阅读 · 0 评论 -
垃圾陷阱 洛谷1156 dp
题目描述卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中。“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺。卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己的生命。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。假设卡门预先知道了每个垃圾扔下的时间t(0< t<=1000),以及每个垃圾原创 2017-01-22 19:08:29 · 521 阅读 · 1 评论 -
平衡二叉树 ssl 2633 dp
题目大意这种二叉树的每个叶子节点上都标注了权值,而且具有以下有趣的特性:每个非叶子节点,其左右子树叶子节点的权值之和相等。 我们称这种二叉树叫平衡二叉树。 我们将一棵平衡二叉树叶子节点的权值从左到右列出来,假如这个权值序列是另一个序列A的子序列,我们称这棵平衡二叉树“隐藏”在序列A当中。在本题中,我们称一个序列S2是另一个序列S1的子序列,当且仅当S2可以由S1中删除0个或多个元素,但不改变S1转载 2017-04-05 20:47:39 · 329 阅读 · 0 评论 -
洛谷2214 哞哞哞Mooo Moo dp
题目大意农民约翰忘记了他到底有多少头牛,他希望通过收集牛叫声的音量来计算牛的数量。他的N (1 <= N <= 100)个农场分布在一条直线上,每个农场可能包含B (1 <= B <= 20)个品种的牛,一头品种i的牛的音量是V(i) ,(1 <= V(i) <= 100)。一阵大风将牛的叫声从左往右传递,如果某个农场的总音量是X,那么将传递X-1的音量到右边的下一个农场。另外,一个农场的总音量等于原创 2017-12-06 17:09:55 · 416 阅读 · 0 评论 -
【汕头市选2014】舞伴 jzoj 3632 状压dp
题目N 个男孩,N 个女孩,男孩和女孩可能是朋友,也可能不是朋友。现在要组成N 对舞伴,要求每对舞伴都是一男一女,且他们是朋友。统计不同配对方案的数量,因为结果很大,所以只要求除以M 的余数。N分析因为N只有20,所以直接想到状压dp 设f[i,s]表示做完前i个男生,女生被匹配的状态为s的方案数 枚举i,s接着枚举第i个男生选了哪个女生,然后转移code原创 2018-01-30 12:21:00 · 149 阅读 · 0 评论 -
poj 2228 Naptime
题目从N个元素(环形队列)中选出B个,求最大得分。(元素得分仅当其前面的元素也被选择了)分析我就不想口胡了 链接现在知道了处理环上的dp还能这样玩code#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include&l...原创 2018-03-14 20:59:44 · 268 阅读 · 0 评论 -
【GDKOI2015】看门狗
题目分析dp走起:f[i][j] = max{ f[i-1][k] + vx[i] + vy[j] | k < j and (i, j) ∈ E, f[i-1][j], f[i][j-1], f[i-1][j-1]}可以用线段树优化原创 2018-03-20 21:51:30 · 264 阅读 · 0 评论 -
乌龟棋 洛谷1541
题目乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中M张爬行卡片,分成4种不同的类型(M张卡片中不一定包含所有4种类型的卡片,见样例),每种类型的卡片上分别标有1、2、3、4四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行卡片中选择一张...原创 2018-04-07 21:41:18 · 339 阅读 · 0 评论 -
【GDKOI2015】星球杯
题目分析先枚举第一轮排名为第k名的选手(分数为x),则必存在一种最优方案有: 1. 对于分数少于x的0国选手,都安排在第一轮; 2. 对于分数少于x的1国选手,都安排在第二轮。做一下预处理 1. 第一轮分数低于x的1国选手对答案无贡献,所以我们先筛除这部分选手; 2. 剩下:1国选手 和 第一轮分数不低于x的0国选手; 3. 对于剩余部分的选手,按照第二轮分数从高到低排序...原创 2018-03-21 21:18:29 · 322 阅读 · 0 评论 -
[Ahoi2009]self 同类分布 bzoj 1799
题目给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。分析设f[i][j][k][l] 表示由i位数字(可以有前导零),各位数字和位j,对k取莫余数为l的数有多少个。枚举第i为数字p f[i][j][k][l]=f[i-1][j-p][k][(l-p*10^(i-1))%k]然后就每一位的填数计算方案即可。...原创 2018-04-10 20:40:33 · 300 阅读 · 0 评论 -
Apocalypse Someday poj 3208
题目问你在所有包含666的数中,第n大的是多少。(1 ≤ n ≤ 50,000,000) 。开头几个是666, 1666, 2666, 3666, 4666, 5666…分析套路 先dp预处理,再一位位的填数。code#include<iostream>#include<cstdio>#include<cstdlib>#inc...原创 2018-04-11 18:23:04 · 283 阅读 · 0 评论 -
The Counting Problem poj 2282
题目求出区间内0~9的个数分析因为前导0的干扰,为了计算方便暂时都先计算在内,之后再减; 如果是0~199,那么百位上的0和1各出现一次,s剩下的就是两个00~99,总共两百个二位数,而每个数出现的次数都一样,都是2*(99-00+1)/10; 那么任意的数都可以分解成类似的数字,如3426,则可以分成0000~2999,3000~3399,3400~3419,3420~3...原创 2018-04-11 21:20:36 · 221 阅读 · 0 评论 -
旅行 纪中1281 vijos 1661
Description 今天又是个神圣的日子,因为LHX教主又要进行一段长途旅行。但是教主毕竟是教主,他喜欢走自己的路,让别人目瞪口呆。为什么呢,因为这条路线高低不平,而且是相当的严重。 但是教主有自己的办法,他会魔法。 这段路可以用一个长度为n的序列A[i]来表示,A[i]表示了第i这段路的高度。毕竟教主即使会使用魔法他还是个人,教主如果想穿越这条路线,他必须从第1段路开始走,走原创 2016-10-06 18:40:54 · 445 阅读 · 0 评论 -
假期 code[vs]3622 dp+单调队列
Description经过几个月辛勤的工作,FJ决定让奶牛放假。假期可以在1…N天内任意选择一段(需要连续),每一天都有一个享受指数W。但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不能得到足够的休息;假期也不能超过Q天,否则奶牛会玩的腻烦。FJ想知道奶牛们能获得的最大享受指数。Input Description第一行:N,P,Q.第二行:N个数字,中间用一个空格隔开。Output Descri原创 2016-09-23 22:31:22 · 529 阅读 · 0 评论 -
刪數 纪中3097 dp
Description小明现在有 n 个不同的正整数 X1 , X2 , … Xn 排成一行。 小明每可以将左边或右边删掉连续的若干个数(只能从两边删数 ) 。 每次删数可以得到一个值,若删除从 i 到 j 的数(iInput第一行一个整数 n 。 第二行 n 个整数,表示 X 。Output输出仅一行一个整数,表示能得到的最大价值。原创 2016-08-12 16:29:01 · 351 阅读 · 0 评论 -
2003年分区联赛提高组之三 加分二叉树 dp
题目大意 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下: subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数 。若某个子树为主,原创 2016-05-04 21:40:46 · 413 阅读 · 3 评论 -
二*苹果树 树型动态规划
题目大意 对于一个二叉树,除根节点外,每个节点都有相应的一个权值。在此基础上,求保留多少个点使得其仍然满足树的性质且权值总和最大。 分析 先建树。 ch[v,1],ch[v,2]分别存V节点的左右孩子。dp[v,l]存以V为根的树保留L个节点的最大权和。Num[v]为点v的权值。 dp[v,l]=max{dp[ch[v,1],j]+dp[ch[v,2],l-j-1]原创 2016-05-05 20:42:29 · 742 阅读 · 3 评论 -
书架_纪中2931_dp_堆_单调队列
题目大意 当Farmer John闲下来的时候,他喜欢坐下来读一本好书。 多年来,他已经收集了N本书 (1 <= N <= 100,000)。 他想要建立一个多层书架,来存放它们。 每本书 i 拥有一个宽度 W(i)和一个高度 H(i)。 所有的书需要按顺序,放到书架的每一层。 举例来说,第一层书架放k本书,应该放书1...k;第二层书架从第k+1本书开始放……。 每层书架的宽度最多为L原创 2016-07-10 10:49:04 · 897 阅读 · 3 评论 -
邦德 纪中 1236 状压dp
题目大意 每个人都知道詹姆斯邦德,著名的007,但很少有人知道很多任务都不是他亲自完成的,而是由他的堂弟们吉米邦德完成(他有很多堂弟),詹姆斯已经厌倦了把一个个任务分配给一个个吉米,他向你求助。每个月,詹姆斯都会收到一些任务,根据他以前执行任务的经验,他计算出了每个吉米完成每个任务的成功率,要求每个任务必须分配给不同的人去完成,每个人只能完成一个任务。 请你编写程序找到一个分配方案使得原创 2016-07-11 17:30:26 · 757 阅读 · 3 评论 -
区间 纪中 1382 最长不上升子序列o(n logn)
Description Alice收到一些很特别的生日礼物:区间。即使很无聊,Alice还是能想出关于区间的很多游戏,其中一个是,Alice从中选出最长的不同区间的序列,其中满足每个区间必须在礼物中,另序列中每个区间必须包含下一个区间。 编程计算最长序列的长度。Input 输入文件第一行包含一个整数N(1<=N<=100000),表示区间的个数。 接下来N行,每行两个整数A和B描述一原创 2016-07-13 17:09:08 · 516 阅读 · 3 评论 -
取数游戏 纪中 1308 蜜汁dp
Description Alice想让Bob陪他去看《唐山大地震》,但由于Bob是个很感性的人,怕流泪不想去,但又不好意思以这个作为拒绝的理由,便提出玩一个游戏。 N个正整数围成一圈,规则如下: •两个玩家轮流取数; •最开始先手的玩家可以取任意一个数x; •从第二步开始当前玩家只能取x(上一玩家刚刚取的数)左右两边相邻的数; •直到取完所有的数,游戏结束; •原创 2016-07-14 07:54:04 · 748 阅读 · 2 评论 -
积木游戏 纪中 1440 类dp 预处理
Description 在一个N*N的区域玩积木游戏,每个单元格正好跟积木的底面相等,每个单元格里放有若干个积木,Alice想重新摆放积木,使得每个单元格最多只能放一个积木,并且所有积木正好形成一个矩形。 把一个积木从一个位置移到另一个位置称为一次操作。 给出初始状态,编程计算最少需要多少次操作才能达到上述要求。Input 第一行包含两个整数N和M(1<=N<=100,1<=M<=N原创 2016-07-15 16:19:33 · 667 阅读 · 3 评论 -
Mobile Service_纪中_1327
题目大意 一个公司有三个移动服务员。如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动。被请求后,他才能移动,不允许在同样的位置出现两个员工。从p到q移动一个员工,需要花费c(p,q)。这个函数没有必要对称,但是c(p,p)=0。公司必须满足所有的请求。目标是最小化公司花费。分析 这是一个dp,这一眼就可以看出。原创 2016-07-07 17:00:42 · 439 阅读 · 2 评论 -
烽火传递 dp+单调队列
题目大意 烽火台又称烽燧,是重要的军事防御设施,一般建在险要或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息;夜晚燃烧干柴,以火光传递军情,在某两座城市之间有n个烽火台,每个烽火台发出信号都有一定代价。为了使情报准确地传递,在连续m个烽火台中至少要有一个发出信号。请计算总共最少花费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确传递。分析 要用动原创 2016-07-08 07:48:08 · 985 阅读 · 3 评论 -
地铁建设 纪中2568 水dp
Description某地铁沿线共设N站,可分为U(地面式)、D(地下式)和C(复合式)三种类型。为避免单调,相邻地铁站的类型不能重复。同时,由于地铁站所处环境和地质条件有所差异,每个站点按不同类型的建设成本也不尽相同。现给定各站点的三种建设成本,请计算出该地铁线的最低总造价。Input输入文件subway.in包含N+1行: 第1行为一个正整数,表示地铁站的总数N。 第2行到第N+1行分别包含原创 2016-08-15 15:46:57 · 1193 阅读 · 0 评论 -
Travel 纪中1782 分层图+spfa
Description 给出一个有 个顶点 条边的有向图,对于一条边长度为len的边有两种走法。 1、如果a和b可以互达,则走过这条边的时间为len 2、如果a和b不可以互达,则走过这条边的时间为2*len 现在给出一个k,问,从顶点1到顶点n,满足第二种走法不超过k次的最短时间是多少。Input 第一行有3个整数n,m,k(1<=n<=100,1<=m<=10000,0<=k原创 2016-08-16 12:22:13 · 579 阅读 · 0 评论 -
环中环 纪中1347 dp+线段树优化 玄学
Description 被认为天才的小头遇到麻烦了!!这天数学课老师给出了一道难题,而小头居然没能在3秒内解决,可见此题难度之大。 问题是这样的:n个整数围成一个环,老师要求选出其中的若干数,使得选中的数所组成的环中,两个相邻数的差的绝对值不等于1。在满足这个前提下,问最多能取多少个数。Input 第一行一个正整数n,表示有n个数 第二行n个整数,a1、a2……an 按顺时针方向围成原创 2016-08-16 16:47:37 · 638 阅读 · 0 评论 -
密码盘 纪中 3067 状压dp
Description如图是某人设想中的N×N的密码盘,用以显示自己强大的智商以及计算能力。图中每列上面有一个0或1的值,每行左边也有一个0或1的值。密码盘中有最多N*N个按钮,每个按钮有一个数值。按钮按下去之后,你会获得按钮上的分数,然后对应行和对应列的值会改变。你的任务是,使每列上面的值和每行左边的值一一对应相等(从左到右和从上到下),并且取得最大的积分。当然了初始积分为0。Input第一行一个原创 2016-08-18 12:44:59 · 566 阅读 · 4 评论 -
方格取数 纪中2541 类dp
Description 给定一个N*M的矩阵,记录左上角为(1,1),右下角为(N,M),现在从(1,1)开始取数,每次只能向下或向右移动一个单位,最终到达(N,M),我们把路径上所有的数相乘,记为C。使C的结果最大已经不能满足我们了,现在我们想让C末尾的零最少。 Ps.11000末尾有3个零,100000100末尾有2个零。Input 输入文件matrix.in的第一行包含两个正整数N,原创 2016-08-11 14:40:15 · 501 阅读 · 0 评论 -
采药 纪中2540 背包问题
Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”原创 2016-08-11 16:37:13 · 572 阅读 · 0 评论 -
跳舞 纪中2545 dp
Description 小明今天得到一个跳舞毯游戏程序Dance。游戏每次连续出N 个移动的“箭头”,箭头依次标号为1 到N,并且的相应的分数S[1..N]。如果你能“踏中”第i 号箭头,你将获得相应的分数S[i];否则将被扣除相应的分数。 另外,游戏还有一个累计奖励机制:如果踏准次数累计达到T,并且是在踏中第i个箭头达到的,则将得到B[i]的奖励分数,累计也将清零,重新开始。 例如:原创 2016-08-12 14:38:42 · 380 阅读 · 0 评论 -
【GDOI2018Day1模拟4.17】药香沁鼻
题目分析首先求出这棵树的dfs序,设lx表示以x为根的子树中的dfs序最小值(即点x的dfs序),设rx表示以x为根的子树中的dfs序最大值。 然后按照dfs序枚举点,每个点维护一个背包,对于点x,如果选这个点,就 把它加到lx+1的背包里,如果不选这个点,就把点x的背包与rx+1的背包合并 (这个合并是直接合并,即Ci= max(Ai,Bi))。 这样,不管这个点选或不选,都...原创 2018-04-17 18:54:57 · 315 阅读 · 0 评论