摘要: 题意:小智有N个精灵球,皮卡丘有M的初始体力,有K个野生小精灵。要收服尽可能多的野生小精灵,并使皮卡丘的剩余体力最大。 解法:01背包问题,增多一维来存第二个条件。f[i][j][k]表示抓前i个野生小精灵,用了j个精灵球,耗费了k的体力时能抓的最多的小精灵数。(我把[i]的那维简化掉了,PG里的m 阅读全文
posted @ 2016-10-07 21:39 konjac蒟蒻 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个正整数数列,可将其相加或相减,问是否有一个结果能被K整除。 解法:似上一题“糖果”的状态定义,f[i][j]表示是否有一个选了前 i 个数的结果模K余j。 P.S. 可以用滚动数组。 阅读全文
posted @ 2016-10-07 21:14 konjac蒟蒻 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 推荐!!from好友的博客——【网络流】网络流小总结 http://www.cnblogs.com/KonjakJuruo/p/5560129.html 原文转载如下——(当然,我也略修改了一些东西...) 一、dinic最大流 我的模板。模板上已经有了dfs上的优化(比我以前的快多了。。)优化啊优 阅读全文
posted @ 2016-10-07 09:20 konjac蒟蒻 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 题意:求取到总和为K的倍数的糖果的最大值。 解法:用模K的余数作为一个维度,f[i][j]表示在前i种糖果中取到总颗数模K余j的最大总颗数。 注意——f[i-1][j]要正常转移,而其他要之前的状态存在才能状态转移。 阅读全文
posted @ 2016-10-06 16:05 konjac蒟蒻 阅读(491) 评论(0) 推荐(1) 编辑
摘要: 题意: 给两个字符串,可以增、删、改,问使这两个串变为相同的最小操作数。 解法:(下面2种的代码主要区别在初始化和,而状态转移方程大家可挑自己更容易理解的方法打) 1.f[i][j]表示a串前i个和b串前j个完成匹配的最小操作数。 2.f[i][j]表示a串前i-1个和b串前j-1个完成匹配的最小操 阅读全文
posted @ 2016-10-06 15:58 konjac蒟蒻 阅读(292) 评论(0) 推荐(0) 编辑
摘要: {20160927 19:30~21:30} 总分400分,我113.33,稳稳地垫底了......(十分呼应我上面的博客名,hhh~)过了这么多天我才打完所有代码,废话我也就不多说了。不过,虽然时间花费的多,但我觉得我的PG也是“博采众长”了。 T1 接住苹果(bcatch) <!--[if gt 阅读全文
posted @ 2016-10-02 11:56 konjac蒟蒻 阅读(611) 评论(0) 推荐(0) 编辑
摘要: 题意:给2个字符串求其最大公共子序列的长度。解法:这个和一般的状态定义有点不一样,f[i][j]表示 str 前i位和 str2 前j的最大公共子序列的长度,而不是选 str 的第i位和 str2 的第j位。仔细想想就可以知道只表示“前...”的状态可以保证每次拓展答案时,之前的状态已经保证了“公共 阅读全文
posted @ 2016-09-25 17:15 konjac蒟蒻 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 题意我就不写了。解法有3种: 1.O(n^2)。2重循环枚举 i 和 j,f[i]表示前 i 位必选 a[i] 的最长上升子序列长度,枚举a[j]为当前 LIS 中的前一个数。 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 阅读全文
posted @ 2016-09-25 16:27 konjac蒟蒻 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 这题和“山区建小学”除了输入不同,其他都一样。(解析可见我的上一篇随笔) 但是,这次我对dis[][]加了一个优化,画一下图就可明白。 阅读全文
posted @ 2016-09-22 16:17 konjac蒟蒻 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 题意:在m个村庄建n个小学,求所有村到最近小学的距离总的最小值。 解法:由于题目是求“离最近的学校”,而不是前一个学校,所以枚举学校的具体位置不方便,可转化成区间(学校居区间中间)的划分问题。 实现:dis[l][r]存村庄l和村庄r之间建1个小学的最小距离和,即到中间那个村庄的距离和。f[i][j 阅读全文
posted @ 2016-09-22 13:56 konjac蒟蒻 阅读(1443) 评论(0) 推荐(0) 编辑