2014年8月24日

TYVJ1276

摘要: 多重背包+二进制优化这是怎么了,连做俩题都是这东西,不多说了,TYVJ1194唯一的特点是当mi等于-1时,就 mi=g/gi;剩下的就是普通的多重背包二进制优化了。 1 #include 2 #include 3 #include 4 #include 5 using namespace ... 阅读全文

posted @ 2014-08-24 23:07 round_0 阅读(98) 评论(0) 推荐(0) 编辑

TYVJ1106

摘要: 巨坑。。。和数字三角形原理差不多,就是状态多一点,而且前后状态有影响坑1:在第i行,从第一个位置可以直接走到最后一个位置,说明没一层这是一个圆坑2:第i行的第一个位置可以直接走到上面一行的最后一个位置,这尼玛还是一个圆锥啊。设dp[i][j]表示到(i,j)时最小的分数,从下往上推dp目标 dp[1... 阅读全文

posted @ 2014-08-24 23:06 round_0 阅读(282) 评论(0) 推荐(0) 编辑

TYVJ1195

摘要: 又是水DP设dp[i][0] 用勺子吃完第i个菜需要的最小时间 dp[i][1] 用筷子吃完第i个菜需要的最大时间DP目标min(dp[n][0],dp[n][1])状态转移:dp[i][0] = min(dp[i-1][0]+a,dp[i-1][1]+a+c);dp[i][1] = min(dp... 阅读全文

posted @ 2014-08-24 23:05 round_0 阅读(139) 评论(0) 推荐(0) 编辑

TYVJ1194

摘要: 多重背包的二进制优化题目要求是把所有的物品分成两部分,使得两部分价值之和相等可以先把总的价值之和m求出然后除2,(如果m是奇数,可以直接Can't)然后把第i种大理石分成a[i]个独立的物品,价值和费用都为i,然后把这些物品放入容量为m的背包,如果能恰好放满,则说明可以划分。时间复杂度O(m*n)m... 阅读全文

posted @ 2014-08-24 23:04 round_0 阅读(168) 评论(0) 推荐(0) 编辑

TYVJ1059

摘要: 总的来说这题主要难点不在于怎么DP,而在于怎么优化总的长度有1e9,这根本没办法枚举,所以肯定想办法优化,总的长度有1e9 而石子总共最多才有100个这说明两个相邻石子之间可能有很长一段是空的,而这空的之间肯定会从某个点开始到后面的dp值是一样的,所以问题就在于怎么找到这个开始的点,这有一个定理:两... 阅读全文

posted @ 2014-08-24 23:03 round_0 阅读(123) 评论(0) 推荐(0) 编辑

TYVJ1056

摘要: 和环形石子合并一个德行的一道题,区间DP唯一的区别在于计分方式,转移方程也有所不同dp[i][j]表示合并i到j和能得到的最大的能量dp[i][j] = max{f[i]*r[k]*r[j]+dp[i][k]+dp[k+1][j]|i 2 #include 3 #include 4 #inclu... 阅读全文

posted @ 2014-08-24 23:02 round_0 阅读(128) 评论(0) 推荐(0) 编辑

TYVJ1057

摘要: 这题我真的不想说什么了,真尼玛恶心,整整一个晚上,就让一个下标从0从1开始给整这了这题本身确实不难,就是麻烦,交了8次,错了8次,本来以为是状态转移的时候出了问题,一直在那找,改了改又改,从对改到错,又从错改到更错,最后没办法又找的别人的代码。。算了,啥也不多说了。。就是个01背包DP时,对于附件直... 阅读全文

posted @ 2014-08-24 23:01 round_0 阅读(141) 评论(0) 推荐(0) 编辑

TYVJ1067

摘要: 灌水。最长有序子序列设dp[i][0]表示以i结尾的最长的上升子序列的长度dp[i][1]以i开始的向后的最长的下降子序列的长度dp[i][0]+dp[i][1]-1表示以i为中间最高的人时所需要的人数,求出这个最大值,在被n减去就是ans 1 #include 2 #include 3 #in... 阅读全文

posted @ 2014-08-24 23:00 round_0 阅读(129) 评论(0) 推荐(0) 编辑

TYVJ1014

摘要: 水题,凑数。区间DP设dp[i][j]表示从取完i到j所能得到的最小分数枚举区间半径 r(最大为n-2) 枚举起点i,同时可以得到j转移方程去看代码DP目标dp[2][n-2]; 1 #include 2 #include 3 #include 4 #include 5 #define... 阅读全文

posted @ 2014-08-24 22:44 round_0 阅读(163) 评论(0) 推荐(0) 编辑

TYVJ1414

摘要: 多进程DP现在才知道多进程的是有多么的恶心。。。做过了1011传纸条,这题就没什么难度了,只要在传纸条上加上一维就行,最恶心的地方在于,这题没有限定走过的不能走,所以,对于每个状态有八个方向可以转移过来。。。。具体看代码吧 1 #include 2 #include 3 #include 4 ... 阅读全文

posted @ 2014-08-24 22:43 round_0 阅读(216) 评论(0) 推荐(0) 编辑

TYVJ1011

摘要: 数字三角形的扩展,数字矩形*2路径假设两个指条同时出发,同一时刻,两指条必定在同一条从左下到又上的对角线上k,假定指条1出发时向下,2向上,则指条1所在的行又必定在指条2所在行的下面,所以设dp[k][i][j]表示两指条走到k对角线时,1在i行,2在j行所得到的最大分数,则有 ... 阅读全文

posted @ 2014-08-24 22:42 round_0 阅读(235) 评论(0) 推荐(0) 编辑

TYVJ1305

摘要: 题解上说这是DP+单调队列优化,我觉得这已经不算是DP了,只算是练习单调队列吧。设dp[i]表示以a[i]结尾的不超过m个的最大的子段和dp[i] = max(sum[i]-sum[i-k])1 2 #include 3 #include 4 #include 5 #define INF 0x... 阅读全文

posted @ 2014-08-24 22:41 round_0 阅读(273) 评论(0) 推荐(0) 编辑

POJ2823

摘要: 题目:给出n个数(n 2 #include 3 #include 4 using namespace std; 5 const int maxn = 1000005; 6 struct node 7 { 8 int value; 9 int index;10 }que[maxn]... 阅读全文

posted @ 2014-08-24 22:40 round_0 阅读(204) 评论(0) 推荐(0) 编辑

TYVJ1299

摘要: 这题纠结了N久,就是想不通,8000个人每个人用一次8000*8000的01背包,后来看别人的题解也看不下去,然后不知道看到了点什么,突然灵光一闪,打表! 其实也不算是打表了。。一开始想不到这个主要还是因为二维的01背包用的太少了,以前都是偷懒用一维,(这里用二维的也不行,会MLE,只要把每次i循环... 阅读全文

posted @ 2014-08-24 22:39 round_0 阅读(163) 评论(0) 推荐(0) 编辑

TYVJ1275

摘要: 一道水题01背包,因为一时疏忽WA了4次RE1次这题不一样的地方就是打每个小怪必须打死也就是说每个小怪两下打不死要认为是三下。背包容量k,物品数量ndp[j] = max(dp[j],dp[j-w[i]]+v[i]);//667672#include #include #include #inclu... 阅读全文

posted @ 2014-08-24 22:37 round_0 阅读(130) 评论(0) 推荐(0) 编辑

TYVJ1246

摘要: 存在性DP没多少好说的bool dp[i][j] 表示跳到第i个格子能不能得到j的得分对于每一个格子,枚举可以跳到这个格子的其他的格子,在从这些格子中选出其可以跳到的分数,将其反应到i中即dp[i][k] = true 最后遍历dp[n][m-1 -> 0]找出值为true的最大j值即是ans ... 阅读全文

posted @ 2014-08-24 22:35 round_0 阅读(156) 评论(0) 推荐(0) 编辑

TYVJ1214

摘要: 大水题,凑数恰好装满的完全背包求最大最小价值复习:完全背包从小到大枚举,恰好装满初始化要为无穷大正负分别考虑 1 #include 2 #include 3 #include 4 #include 5 #define INF 11111111 6 using namespace std; ... 阅读全文

posted @ 2014-08-24 22:34 round_0 阅读(139) 评论(0) 推荐(0) 编辑

TYVJ1199

摘要: 这题切了,顿时感觉很爽,这题彻底摆脱别人的思路和代码,完全是自己想自己写的,本来以为可能会超时,但是想不到别的方法就想把自己的思路写出来验证一下对不对,后来经过无数次的修改调试,最后A了,当时就算是返回TLE也不会感觉有什么,没想到竟然A了,oh yeah~这题还是验证性的dpdp[0][i][j]... 阅读全文

posted @ 2014-08-24 22:31 round_0 阅读(139) 评论(0) 推荐(0) 编辑

TYVJ1076

摘要: 数字三角形2从三角形顶端走到最下面一行所经过数字的和sum mod 100要最大一开始,我就想确定最后的值是最大的关键的地方在哪里,想老久也想不出,觉得这不可能的事情嘛,后来看了题解,原来这是类似于存在性验证的一类DP,即求出0...99哪个结果可能出现,然后取其中的最大值就是结果。设状态vis[i... 阅读全文

posted @ 2014-08-24 22:30 round_0 阅读(378) 评论(0) 推荐(0) 编辑

TYVJ1190

摘要: 新技能get!首先先说一个小模型吧算是,给你n个数,求这n个数能组成的数有哪些(前提n和a[i]不能太大),这n个数的和为sum开一个标记数组vis[i][j]表示前i个数是否可以组成j初始化vis[i][j]为0,vis[i][0]=1(0a[i];for(int i = 1;i=a[i];--j... 阅读全文

posted @ 2014-08-24 22:29 round_0 阅读(141) 评论(0) 推荐(0) 编辑

导航