
动态规划
文章平均质量分 75
x_chaos
这个作者很懒,什么都没留下…
展开
-
乘电梯还是走楼梯
http://acm.zjgsu.edu.cn/JudgeOnline.htmlDescriptionblue 新开了一家公司,开张第一天,他邀请ACMers一起去玩。ACMers一定吓了一大跳,因为大厦有31层高。所以大厦里肯定有电梯。每个ACMer都有自己想去的楼层,现在blue想,这些人要从大厦底层到达各自的目标楼层,可以通过搭乘电梯,也可以走楼梯,每原创 2009-09-30 13:32:00 · 1354 阅读 · 0 评论 -
poj 2018 Best Cow Fences
求一段长为n序列的最大平均值子序列,子序列的长度最小为F.类似于最大连续字段和的做法#include #define MAXN 100010using namespace std ;__int64 a[MAXN] , sum[MAXN] ;int main (){ __int64 n , m , i , j , k , s , ncows , nfields ;原创 2010-03-15 13:24:00 · 1430 阅读 · 3 评论 -
Phone Numbers
题目来源完整思路流程:题意是给定以长度不超过100的数字串,给定一个数字对字母的转化表,给定一些单词,求最少用几个单词组成数字串。 第一种:用Trie树把所有的单词载入,再对数字串在Trie树搜索,结果TLE.第二种:看discuss上说BFS和DP, 感觉如果数据是特意构造的话会TLE,随机数据可能会过。 然后发现在考虑第一种方法时应该考虑到的预处理的两种方法原创 2009-12-02 20:19:00 · 594 阅读 · 0 评论 -
Strategic game
原题树形DP#include #include #define MAXN 1600using namespace std ;struct Graph{ int vex , next ;};Graph G[MAXN] ;int first[MAXN] , dp[MAXN][2] ;void TreeDP (int s){ int tot ;原创 2009-10-14 20:31:00 · 608 阅读 · 0 评论 -
Computer net
原题照着PPT的思想做了第一道二次动规#include #include #define MAXN 10010using namespace std ;int pre[MAXN] , leaf[MAXN] , n , child[MAXN] , dis[MAXN][2] , m ;void Readin (){ int i ; scanf ("%d" ,原创 2009-10-14 19:19:00 · 516 阅读 · 0 评论 -
Divisibility
http://162.105.81.212/JudgeOnline/problem?id=1745第二次挤进第一版,同时挤进一千,从Dominoes和Coins得到的启示,k同余等价类,每次状态只在除k余数相同的数之间转移#include using namespace std ;int n , k , num[110] ;bool f[110] ;void R原创 2009-10-12 14:11:00 · 881 阅读 · 0 评论 -
Dominoes
http://162.105.81.212/JudgeOnline/problem?id=1717开始想用O(NC)的算法来写,一直WA,后来发现算法是错的,只好用O(NClbM)#include #include #define INF 3000#define ZERO 6000using namespace std ;int f[13000] ;//void原创 2009-10-12 13:01:00 · 542 阅读 · 0 评论 -
Dream City
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3211省赛的题目,用了最大权值匹配去做,TLE,没有发现它们的先后关系:如果已经从n种树中选出m种,怎么排列使答案最优,贪心,按增幅从小到大排列,有了这个结论,状态转移方程就非常好写了,#include using namespace std ;struc原创 2009-10-08 18:32:00 · 561 阅读 · 1 评论 -
I-Keyboard
http://162.105.81.212/JudgeOnline/problem?id=1404题意:一个长度为L的字符编码,分成n个键,使它们的权值和最小,求如何构造;此题要构造最最优解,必须先算出最小值; f (i , j)表示把前j个字符划分成i个键的最小权值;weight(i , j)表示从第i个到第j个作为一个键的权值 ;f(i , j) = Max (f (原创 2009-10-04 12:36:00 · 697 阅读 · 0 评论 -
Multiplication Puzzle
http://162.105.81.212/JudgeOnline/problem?id=1651一开始以为是贪心每次删最大的数就行了,WA了一次,又尝试删最小的数旁边的数,代入几个例子还是不对。猛然发现时动态规划。和矩阵连乘一样的做法dp[i][j] = Min (dp[i][k] + dp[k][j] + a[i] * a[k] * a[j])(i #include usi原创 2009-10-07 11:40:00 · 376 阅读 · 0 评论 -
poj 3254 Corn Fields
第一道自己写的状态压缩DP.题意是在一个二维矩阵中选一些数,这些数不能相邻,有多少种选法.因为每行的可行状态只与上一行有关,所以只要预先计算两行的可行放置方案,再进行状态转移就可以了#include #define MODULE 100000000#define MAXN 100010using namespace std ;int n , m , ntrans ;原创 2010-03-16 19:59:00 · 1017 阅读 · 0 评论