随笔分类 -  动态规划

摘要:bzoj3195[Jxoi2012]奇怪的道路 题意: n座城市。m条道路连接在这些城市之间,一对城市之间可能存在多条道路。对于任何一条道路,设它连接的两个城市分别为u和v,必定满足1 <=|u - v| <= K。此外,任何一个城市都与恰好偶数条道路相连(0也被认为是偶数)。这n个城市之间究竟有多 阅读全文
posted @ 2016-07-30 13:38 YuanZiming 阅读(460) 评论(0) 推荐(0)
摘要:bzoj1609[Usaco2008 Feb]Eating Together麻烦的聚餐 题意: 一个序列只由1﹑2﹑3三种数组成。求最少要改变多少个数使它变成不下降序列或不上升序列。序列大小≤30000 题解: DP。设f[i][j]表示正在考虑第i个数,上一个数是j。求不下降序列最少改变个数方程: 阅读全文
posted @ 2016-07-29 22:47 YuanZiming 阅读(304) 评论(0) 推荐(0)
摘要:bzoj1606[Usaco2008 Dec]Hay For Sale 购买干草 题意: 容器体积为c,n个物体,每个有一个体积,求不超过容器能放入的最大体积。n≤5000,c≤50000 题解: 裸01背包。 代码: 1 #include <cstdio> 2 #include <cstring> 阅读全文
posted @ 2016-07-27 22:58 YuanZiming 阅读(176) 评论(0) 推荐(0)
摘要:bzoj4518[Sdoi2016]征途 题意: n个数,分成m段使每段和的方差尽可能小。 题解: 朴素的dp方程:f[i,m]=f[j,m-1]+(sum[i]-sum[j])2,j∈[1,i-1](sum[i]-sum[j]不用减平均数的原因是最后可以化简成f[n,m]*m-sum[n])复杂度 阅读全文
posted @ 2016-07-25 14:20 YuanZiming 阅读(223) 评论(0) 推荐(0)
摘要:bzoj3156防御准备 题意: n个检查点,在第i个检查点放置塔花费a[i],放置木偶花费为该位置右边最近一个塔离它的距离。求最小花费。n≤1000000 题解: 从右往左处理。在第i个点放塔的费用f[i]=min{f[j]+sigma(k,i+1,j-1)k-i}+a[i],用等差数列求和公式化 阅读全文
posted @ 2016-07-24 16:46 YuanZiming 阅读(214) 评论(0) 推荐(0)
摘要:bzoj2423[HAOI2010]最长公共子序列 题意: 求两个字符串的最长公共子序列长度和个数。字符串长度均≤5000。 题解: dp,设f[i][j]表示x串i位到末位,y串j位到末位的最长长度,g[i][j]表示x串i位到末位,y串j位到末位的最长长度的个数,方程: x[i]==y[j]:f 阅读全文
posted @ 2016-07-22 21:38 YuanZiming 阅读(245) 评论(0) 推荐(0)
摘要:bzoj1087[SCOI2005]互不侵犯King 题意: 在N×N的棋盘里面放K个国王,使他们互不攻击,求共有多少种摆放方案。国王能攻击到它上下左右及左上左下右上右下八个方向上附近的一个格子,共8个格子。 题解: 状压dp。我的做法是像插头dp那样保存当前列右侧的上一行和当前列左侧的当前行的情况 阅读全文
posted @ 2016-07-21 20:03 YuanZiming 阅读(301) 评论(0) 推荐(0)
摘要:bzoj1296[SCOI2009]粉刷匠 题意: 粉刷N条木板,每条木板M 个格子,每个格子要被刷成红色或蓝色。每次只能选择一条木板上一段连续的格子涂上一种颜色。 每个格子最多只能被粉刷一次。 如果只能粉刷 T 次,求最多能正确粉刷的格子数。未被粉刷或者颜色错的格子算错误粉刷。 题解: 非常容易想 阅读全文
posted @ 2016-07-20 20:30 YuanZiming 阅读(249) 评论(0) 推荐(1)
摘要:bzoj1218[HNOI2003]激光炸弹 题意: 坐标系上有n个目标,每个目标有一个价值,现在求一个边与坐标轴平行,边长为R的正方形,使在其内部(原题是不包括边界,然而实际上不是这样)的目标价值最大。 题解: 预处理一下以横纵坐标为节点的二维前缀和,然后枚举正方形右上角坐标即可。注意可以将坐标系 阅读全文
posted @ 2016-07-20 19:12 YuanZiming 阅读(391) 评论(0) 推荐(0)
摘要:bzoj1207[HNOI2004]打鼹鼠 题意: 在一个n*n的网格 中,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这 个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。机器人的移动是指从当前所处的网格移向相邻的网格,且不能走出整个n*n的网格。游戏开始 阅读全文
posted @ 2016-07-09 22:55 YuanZiming 阅读(190) 评论(0) 推荐(0)
摘要:bzoj1037[ZJOI2008]生日聚会 题意: 一排小孩坐着玩游戏。就座的方案满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k。给出男孩数,女孩数和k,求就座方案数除以12345678的余数。 题解: dp方程见程序,i1i2表示当前选了几男几女,i3i4分别表示当前男比女多几个 阅读全文
posted @ 2016-07-09 22:40 YuanZiming 阅读(175) 评论(0) 推荐(0)
摘要:bzoj1566[noi2009]管道取珠 题意: 有个装置,左侧有上下两条管道分别有n个和m个不同颜色的两种球,右侧一条空管道。每次可以选左侧的一条管道将最右侧的球推到右侧管道,经过n+m次操作,右侧管道从右到左形成一个输出序列。求不同种类的输出序列的产生方式数的平方之和。n,m≤500 题解: 阅读全文
posted @ 2016-07-09 22:32 YuanZiming 阅读(510) 评论(0) 推荐(0)
摘要:bzoj2134单选错位 题意: 试卷上n道选择题,每道分别有ai个选项。某人全做对了,但第i道题的答案写在了第i+1道题的位置,第n道题答案写在第1题的位置。求期望能对几道。n≤10000000 题解: 水题,然而我不会。第i题与第i+1题答案一样的概率是1/max(aiai+1) 代码: 1 # 阅读全文
posted @ 2016-07-09 22:28 YuanZiming 阅读(147) 评论(0) 推荐(0)
摘要:bzoj1911 [Apio2010]特别行动队 题意: n个人,拆成若干个队。设x等于队里每个人战斗力之和,则这个队战斗力为ax2+bx+c(a,b,c已知)。求所有队战斗力总和最大多少。 题解: 方程:f[i]=max{f[j]+(sum[i]-sum[j])2*a+(sum[i]-sum[j] 阅读全文
posted @ 2016-07-09 22:24 YuanZiming 阅读(172) 评论(0) 推荐(0)