2011年2月24日

poj 1463

摘要: 题意:一城堡的所有的道路形成一个n个节点的树,如果在一个节点上放上一个士兵,那么和这个节点相连的边就会被看守住,问把所有边看守住最少需要放多少士兵。点覆盖问题树形dp或二分图都可以过。代码:View Code #include<iostream>#include<fstream>#include<vector>using namespace std;typedef struct e{ int data; vector<int> a;}e;e edge[1501];int dp[1501][2];int v[1501][2];int n;int s 阅读全文

posted @ 2011-02-24 19:48 宇宙吾心 阅读(538) 评论(0) 推荐(0)

poj 1159

摘要: 题意:插入字符来得到回文串,求插入字符最小数目dp当c[i]==c[j]dp[i][j]=dp[i+1][j-1];否则dp[i][j]=min(dp[i+1][j],dp[i][j-1]) +1;用滚动数组做,不用滚动数组时,可以用short int 水过(比较有趣)。代码:View Code #include<iostream>#include<fstream>using namespace std;char c[5001];int dp[3][5001];void read(){// ifstream cin("in.txt"); int i, 阅读全文

posted @ 2011-02-24 17:07 宇宙吾心 阅读(215) 评论(0) 推荐(0)

poj 2336

摘要: 题目大意:有一些汽车在左岸,你要用一条小破船把它们拉到右岸去。每个测试点包含多个测试数据。第一行的整数C表示测试数据的数目。接下来每个测试数据的第一行为三个整数N, T, M表示一次可以运送N辆汽车,到达对岸的时间为T,汽车的总数是M。接下来的M行每行有一个整数,表示这辆汽车什么时候会来到左岸。对于每个测试数据,输出两个整数,分别是最少要耗用多少时间(包括你等车的时间,就是从0开始直到最后一辆车到达右岸),以及在这个前提下你最少要运送多少次。只要到右岸去就算作一次。dpdp[i]=max(dp[j],a[i])+2*t,(i-n<=j<i).cnt[i]=cnt[j]+1(有待证明 阅读全文

posted @ 2011-02-24 14:47 宇宙吾心 阅读(402) 评论(0) 推荐(0)

poj 3756

摘要: 题目描述:类似大富翁的游戏,给你一条长度为n的条状棋盘,起点为0号,终点为n号,一共有n 1个点。每个点有4种状态:1:无状态。2:从此点往前走k步。3:从此点往后退m步。4:下一回合不能动。每一回合仅能启用一种状态(比如中了状态2往前走k步后,刚好又碰到状态3,则状态3不起作用)如果退到0点或者n点还有剩余的步可以走,则往相反的方向走(既不能丢弃多余的步,也不能走出棋盘)。问你从0走到n所需的回合的期望。解题报告:dp,dp[i][j]表示第i回合走到第j号点的概率是多少,开始时dp[0][0] = 1,其他都为0.若dp[i][j] != 0, 根据规则,容易求的从j开始抛骰子的以下六个位 阅读全文

posted @ 2011-02-24 14:26 宇宙吾心 阅读(452) 评论(1) 推荐(0)

poj 1745

摘要: 题目描述:给你n个整数,和一个k值(2<=k<=100),问在这n个数之间的n-1的位置任意放加减号,问有没有一种情况使结果整除k。典型dp。 dp[i][j]=dp[i-1][j-a[i]]||dp[i-1][j+a[i]];当然要考虑余数为负数的情况。代码: #include<iostream>#include<fstream>using namespace std;int a[10001];int dp[10001][101];int n,m;void read(){// ifstream cin("in.txt"); int i, 阅读全文

posted @ 2011-02-24 11:20 宇宙吾心 阅读(687) 评论(0) 推荐(0)

poj 1141

摘要: 题目大意:给你一贯括号序列(只包含小括号和中括号),让你找出长度最小的regular brackets sequence包含此子序列.注意有空行。细心。代码:#include<iostream>#include<fstream>#include<cstring>using namespace std;int dp[110][110];char c[220];int n;void print(int i,int j){ int s; if(i>j) return; if(i==j) { if(c[i]=='('||c[i]==') 阅读全文

posted @ 2011-02-24 10:31 宇宙吾心 阅读(224) 评论(0) 推荐(0)

导航