动态规划
outer_form
OI/ACM
展开
-
【CROATIAN OPEN COMPETITION IN INFORMATICS 3rd round, November 29th, 2014】HONI
题目:比赛已经进行到了第三场,开始有人预测第三场比赛选手们的排名了。怎么预测呢,我们假设存在以下的规律: 如果选手A在前两场比赛的分数都高于B,则第三场比赛选手A的分数不可能低于B。 排名的规则是这样的,总分相同则名次并列。比如说,如果有5个选手的分数为1000,1000,900,900,800,则他们的名次为1,1,3,3,5. 现在我们知道N个选手在前两场比赛的成绩,如果上述规律始终成立,原创 2015-09-07 21:36:10 · 645 阅读 · 0 评论 -
【DP】[NOI2011]NOI 嘉年华
题目描述DescriptionNOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办。每个嘉年华可能包含很多个活动,而每个活动只能在一个嘉年华中举办。 现在嘉年华活动的组织者小安一共收到了 n个活动的举办申请,其中第 i 个活动的起始时间为 Si,活动的持续时间为Ti。这些活动都可以安排到任意一个嘉年原创 2016-07-13 00:46:26 · 681 阅读 · 0 评论 -
【DP】[NOI2011]智能车比赛
题目描述Description 新一届智能车大赛在JL大学开始啦!比赛赛道可以看作是由n个矩形区域拼接而成(如下图所示),每个矩形的边都平行于坐标轴,第i个矩形区域的左下角和右上角坐标分别为(xi,1,yi,1)和(xi,2,yi,2)。题目保证:xi,1<xi,2=xi+1,1,且yi,1< yi,2,相邻两个矩形一定有重叠在一起的边(如图中虚线所示),智能车可以通过这部分穿梭于矩形区域之间。选手原创 2016-07-13 01:18:22 · 509 阅读 · 0 评论 -
【基环树DP】[NOI2012]迷失游乐园
题目描述Description放假了,小Z觉得呆在家里特别无聊,于是决定一个人去游乐园玩。进入游乐园后,小Z看了看游乐园的地图,发现可以将游乐园抽象成有n个景点、m条道路的无向连通图,且该图中至多有一个环(即m只可能等于n或者n-1)。小Z现在所在的大门也正好是一个景点。小Z不知道什么好玩,于是他决定,从当前位置出发,每次随机去一个和当前景点有道路相连的景点,并且同一个景点不去两次(包括起始景点)。原创 2016-07-13 10:17:11 · 601 阅读 · 0 评论 -
【DP】[NOI2013]书法家
题目描述小 E 同学非常喜欢书法,他听说 NOI2013 已经开始了,想题一幅 “NOI” 的字送给大家。小 E 有一张非常神奇的纸,纸可以用一个 nn 行 mm 列的二维方格矩阵来表示,为了描述方便,我们定义矩阵左下角方格坐标为 (1,1)(1,1),右上角方格坐标为 (m,n)(m, n)。矩阵的每个方格有一个整数的幸运值。在格子上面写字可以增加大家的幸运度,幸运度的大小恰好是所有被笔写到的方格原创 2016-07-07 22:32:18 · 924 阅读 · 0 评论 -
【树DP+基环树】[NOI2013]快餐店
题目描述小 T 打算在城市 C 开设一家外送快餐店。送餐到某一个地点的时间与外卖店到该地点之间最短路径长度是成正比的,小 T 希望快餐店的地址选在离最远的顾客距离最近的地方。快餐店的顾客分布在城市 C 的 NN 个建筑中,这 NN 个建筑通过恰好 NN 条双向道路连接起来,不存在任何两条道路连接了相同的两个建筑。任意两个建筑之间至少存在一条由双向道路连接而成的路径。小 T 的快餐店可以开设在任一建筑原创 2016-07-07 23:39:16 · 824 阅读 · 0 评论 -
【DP or 生成函数】[CodeForces - 712D]Memory and Scores
题目大意Memory 和 Lexa分别取数,取t轮,每一轮取的数字的范围为[−k,k][-k,k],并且将取的数字加他们的得分,问有多少种方案Memory的得分严格大于Lexa。分析算法1 :DP很容易想到计算一个人在游戏开始后得分的动态规划。 令f[i][j]f[i][j]表示取了ii轮得jj分的情况,显然f[i][j]=∑l=−kkf[i−1][j−l]f[i][j]=\sum_{l=-k}^原创 2016-09-12 11:07:13 · 930 阅读 · 0 评论 -
【DP+线段树优化】[CQBZOJ2933]数据
题目描述 Mr_H 出了一道信息学竞赛题,就是给 n 个数排序。输入格式是这样的: 试题有若干组数据。每组数据的第一个是一个整数 n,表示总共有 n 个数待排序;接下来 n 个 整数,分别表示这 n 个待排序的数。 例如:3 4 2 –1 4 1 2 3 4,就表示有两组数据。第一组有 3 个数(4,2,-1),第二组有 4 个数(1,2,3,4)。可是现在 Mr_H 做的输入数据出了一些原创 2015-10-11 14:17:09 · 1141 阅读 · 2 评论 -
【DP】[CodeForces - 713C]Sonya and Problem Wihtout a Legend
题目大意给你一个序列,每次操作你可以使一个数+1或-1,问最少需要多少次操作能够使这个序列严格递增。分析严格递增就是要ai+1>=ai+1a_{i+1}>=a_i+1,我们两边同时减去i−1i-1,就是ai+1−(i+1)>=ai−ia_{i+1}-(i+1)>=a_i-i 我们令bi=ai−ib_i=a_i-i,原问题就等价于使bb序列不降,这是一个经典问题。 可以参考poj3666或者cf1原创 2016-09-19 13:31:57 · 4215 阅读 · 0 评论 -
【状态压缩DP】[2016"百度之星" - 初赛(Astar Round2A)]Sitting in Line
题目Problem Description 度度熊是他同时代中最伟大的数学家,一切数字都要听命于他。现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了。游戏的规则十分简单,参与游戏的N个整数将会做成一排,他们将通过不断交换自己的位置,最终达到所有相邻两数乘积的和最大的目的,参与游戏的数字有整数也有负数。度度熊为了在他的数字仆人面前展现他的权威,他规定某些数字只能在坐固定的位置上,没有被度度熊限原创 2016-05-21 21:41:12 · 583 阅读 · 0 评论 -
【AC自动机+DP】[USACO JAN2012 GOLD Problem 1: Video Game Combos]
题目 AC自动机模板题。 构建trie,然后DP. p是当前节点,l是已经构造的串的长度。 没有保存father,可以使用刷表法。 f[p->ch][l]=max(f[p][l-1],f[p->ch][l])+p->ch->cnt; f[p->fail][l]=max(f[p][l],f[p->fail][l]);#include<cstdio>#include<cstring>#i原创 2015-12-23 19:09:58 · 1068 阅读 · 0 评论 -
【DP】[USACO 2016 February Contest, Gold]Circular Barn Revisited
题目大意还是这个谷仓,有n(3<=n<=100)个房间。当然,奶牛可能不止n头了。奶牛都在谷仓外面。现在约翰想要让第i个房间关ri(1<=ri<=1000000)头奶牛按顺时针方向走,直到到达合适的房间。这k(1<=k<=7)个门开在哪里,才能使得奶牛们走的路程最少。奶牛在谷仓外可以随意移动,可以随意选择k个门中的任意一个排队,这不计入最终的路程。 输入格式: 输入包含n和k。接下来n行包含r1原创 2016-03-12 15:51:38 · 1241 阅读 · 2 评论 -
【树DP】[CodeForces - 581F]Zublicanes and Mumocrates
Codeforces - 581F分析:根据题意,这是一棵树,在看看数据范围和时间,显然是树DP 用f[u][j][c]表示以u为根,当前点党派为c是,选取j个叶子节点(dead end squares)给0党派的时候,连接双方的边的最小值。f[u][j+k][c]=min(f[u][j+k][c],f[u][j][c]+f[s][k][c’]+(c!=c’));显然,在状态转移的时候,会有更新了原创 2015-09-29 11:14:04 · 73 阅读 · 0 评论 -
【DP】【Greedy】[CodeForces - 581E] Kojiro and Furrari
CodeForces - 581E分析:根据题意(f < e),只能向右走,如果向左走,必定还要向右走,会消耗更多的油。 f[i][1/2]表示以空油箱从i向右走需要消耗的93#/95#油; 因为要求尽量多使用编号较大的油,所以对于i,它的编号为ai,如果在它向右s以内有编号aj>=ai,最近的为j,则加油至正好能到达j,否则,加满,然后在保证编号尽量大的情况下到最远的一个加油站加油。可以用一个原创 2015-09-29 22:35:30 · 682 阅读 · 0 评论 -
【状态压缩DP】[APIO2007]动物园
2040: 【APIO2007】动物园 时间限制: 1 Sec 内存限制: 128 MB 提交: 22 解决: 8 [提交][状态][我的提交] 题目描述 新建的圆形动物园是亚太地区的骄傲。圆形动物园坐落于太平洋的一个小岛上,它包含一大圈围栏,每个围栏里有一种富有异国风情的动物。如下图所示: 你是动物园的公关主管。你要做的是,让每个参观动物园的游客都尽可能高 兴。今天有一群小朋友来原创 2015-09-28 15:12:26 · 764 阅读 · 0 评论 -
【树DP+LCA】[CQBZOJ2937]避难向导
题目描述 “特大新闻,特大新闻!全国爆发了一种极其可怕的病毒,已经开始在各个城市 中传播开来!全国陷入了巨大的危机!大量居民陷入恐慌,想要逃到其它城市以 避难!经调查显示,该病毒来自于C 市的A 学校的一次非法的……” “哎。”你关上电视,叹了口气。作为A 学校的校长,你一天前为了保命,独自 逃离了A 学校,抛弃了全校师生,包括那个曾经帮你计算并拆除道路的工程师。 你良心受到了巨大的谴责,因此决原创 2015-10-11 12:25:55 · 887 阅读 · 0 评论 -
【DP】[ZJOI2008][HYSBZ/BZOJ1037]生日聚会Party
题目链接分析很容易想到可以用DP 用f[i][j][x][y]表示已经有i个男孩,j个女孩坐下来,从右往前男孩最多比女孩多x个,女孩最多比男孩多y个。 这道题状态转移用刷表法比较方便。 f[i+1][j][x+1][max(y−1,0)]+=f[i][j][x][y]f[i][j+1][max(x−1,0)][y+1]+=f[i][j][x][y]f[i+1][j][x+1][max(y-1,原创 2016-02-05 17:01:37 · 459 阅读 · 0 评论 -
【树DP】【基环树】[ZJOI2008][HYSBZ/BZOJ1040]骑士
题目链接分析看穿题目如果一个骑士痛恨另一个骑士,就在两个骑士直接连接一条无向边。题目就是要求图中的最大权值独立集。实现方法如果这道题的图是一棵树(或森林)的话,显然可以用树形动态规划解决。 令f(u)f(u)表示以u为根的子树中的最大权值的独立集,令s(u)=∑v是u的儿子vf(v)s(u)=\sum_v^{v是u的儿子} f(v),gs(u)=∑v是u的孙子vf(v)gs(u)=\sum_v^{原创 2016-02-05 18:00:29 · 873 阅读 · 0 评论 -
【DP+矩阵优化】[HNOI2008][HYSBZ/BZOJ1009]GT考试
题目链接分析令fi,jf_{i,j}表示匹配计算到准考证第i位,后缀最大可以匹配不吉利数字的前j位 fi,j=∑kA1....Aj是A1....Akb可以匹配的最大前缀fi−1,k∗cntb(0≤b≤9,cntb为使A1....Aj是A1....Akb可以匹配的最大前缀的b的数量)\begin{array}{}f_{i,j}=\sum_{k}^{A_1....A_j是A_1....A_k b可以匹原创 2016-02-03 23:03:00 · 710 阅读 · 0 评论 -
【DP+斜率优化】[HNOI2008][HYSBZ/BZOJ1010]玩具装箱toy
题目链接分析我们很容易想到DP,并且得到状态转移方程式(ff为费用,sumsum为C数组的前缀和) fi=min(fj+sumi−sumj+i−j−1−L)2f_i=min(f_j+sum_i-sum_j+i-j-1-L)^2 直接做肯定超时,考虑优化。 令j,k为i之前任意两个决策点,j < k,k更优 (fk+sumi−sumk+i−k−1−L)2≤(fj+sumi−sumj+i−j−1原创 2016-02-03 23:19:05 · 559 阅读 · 0 评论 -
【DP+二分】[CodeForces - 713D] Animals and Puzzle
题目大意给你一个01矩阵,询问一个矩形区域内最大的全1正方形。分析令f[i][j]f[i][j]表示以(i,j)(i,j)为右下角的最大全1正方形。 显然f[i][j]=min(f[i−1][j],f[i][j−1],f[i−1][j−1])+1f[i][j]=\min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1 然后用二维st表维护f数组的区间最大值 然后对于每个询原创 2016-09-19 13:44:54 · 693 阅读 · 0 评论