题意:一群匪徒要进入一个酒店。酒店的门有k+1个状态,每个匪徒的参数是:进入时间,符合的状态,携带的钱。酒店的门刚开始状态0,问最多这个酒店能得到的钱数。思路1:dp[i][j]表示时间0-i之间,门的状态为j时所能获得的最大利益转移方程 :dp[i][j]=max(dp[i-1][j],dp[i-1][j-1],dp[i-1][j+1])因为转移i只跟i-1有关,所以可以用滚动数组dp[2][k]有一个处理边界的好方法:j的范围 0 —k,不妨向右移动1位,并保证0,k+2时的状态为0代码1:View Code //O(k*t)#include<stdio.h>#include& Read More
posted @ 2012-11-10 19:44
To be an ACMan
Views(1107)
Comments(0)
Diggs(0)
让物体的重量等于价值,用总价值的一半的包去装这些物品,看其是否能装满View Code #include<stdio.h>#include<string.h>int dp[120005], a[8];int max(int a, int b) { return a > b ? a : b;}int main(){ int i, j, cas = 1, n, m; while( ~scanf("%d", &a[1]) ) { int sum = a[1]; for(i = 2; i <= 6; i++) { ... Read More
posted @ 2012-11-10 15:32
To be an ACMan
Views(329)
Comments(0)
Diggs(0)

浙公网安备 33010602011771号