NOJ 1837 美女购物(DP,DAG图)
来源:互联网 发布:软件编程在哪里学 编辑:程序博客网 时间:2024/04/29 09:26
难得的dp水题。
题目:一天,GG陪佳佳逛街,看到有许多漂亮的衣服,佳佳要让GG给她买衣服,但是GG发现衣服的价格实在高的令人胆寒,GG当然不愿意买这么贵的衣服,但是他又想让佳佳高兴.因此GG就想着从街头逛到街尾买到的衣服价格不能比前一件购买的价格高,绝不回头购买,而且他想尽可能的多买几件衣服,你能帮帮他吗?。。
数据:
16
300 250 275 252 200 138 245 130 300 128 244 243 242 241 240 239
10(300 275 252 245 244 243 242 241 240 239)(购买顺序)
思路:每个数据看做一个顶点,后面输入一个数据只要小于前面的数据,就个看做一个从较大的数到较小的数的有向边,最后求最大即使求有向图中所能走的最大边的长度。
题目:一天,GG陪佳佳逛街,看到有许多漂亮的衣服,佳佳要让GG给她买衣服,但是GG发现衣服的价格实在高的令人胆寒,GG当然不愿意买这么贵的衣服,但是他又想让佳佳高兴.因此GG就想着从街头逛到街尾买到的衣服价格不能比前一件购买的价格高,绝不回头购买,而且他想尽可能的多买几件衣服,你能帮帮他吗?。。
数据:
16
300 250 275 252 200 138 245 130 300 128 244 243 242 241 240 239
10(300 275 252 245 244 243 242 241 240 239)(购买顺序)
思路:每个数据看做一个顶点,后面输入一个数据只要小于前面的数据,就个看做一个从较大的数到较小的数的有向边,最后求最大即使求有向图中所能走的最大边的长度。
#include <stdio.h>#include <string.h>int d[1010],G[1010][1010],p[1010]; //d[]数组存放输入的数据与之对应的编号,将数据转化为编号存入邻接矩阵中 //G[][] 邻接矩阵存放有向图的信息。值为1,表示i到j有有向边存在。int cnt; //p[]数组存放从i点出发所能走的最大距离。int main(){ int judge(int x); int dp(int i); int n,key,k,max; while(scanf("%d",&n) != EOF) { memset(d,0,sizeof(d)); //所有数组均是用全局变量存储,注意数组的初始化。 memset(G,0,sizeof(G)); memset(p,0,sizeof(p)); cnt = 0,max = 0; for(int i = 0; i < n ; i ++ ) { scanf("%d",&key); k = judge(key); //用judge函数来将数据转换存进G数组中,(邻接矩阵存储) for(int i = 0 ; i < cnt ; i++) { if(key < d[i]) { G[i][k] = 1; } } } for(int i = 0 ; i < cnt ; i++) //dp函数计算从每个顶点出发所能走的最远距离。 { if(max < dp(i)) { max = dp(i); } } printf("%d\n",max); //max存放所能走的最远距离。 } return 0;}int judge(int x){ bool flag = false; for(int i = 0 ; i <cnt ; i++) { if( x == d[i]) { flag = true; return i; } } if(!flag) { d[cnt] = x; return cnt++; }}int dp(int i) //递归计算p[]值{ int ans = p[i]; if(ans > 0 ) return ans; ans = 1; for(int j = 0 ; j < cnt ; j++) { if(G[i][j]) { if(dp(j)+1 > ans) { ans = dp(j) + 1; } } } p[i] = ans; return ans;}
- NOJ 1837 美女购物(DP,DAG图)
- 美女购物
- 美女购物
- (POJ 1949)Chores DAG简单DP
- NOJ 1023 防御导弹(dp+贪心)
- 购物(DP/贪心)
- 嵌套矩形 DAG上的dp(深搜+dp)
- Codeforces #374(Div.2)C. Journey【DAG图上的拓扑排序+Dp】
- 【DP】【DAG】分配小组
- bzoj1571【DAG上dp】
- dp(DAG模型)
- shopping 购物 (树型dp)
- smoj2256:购物(普通dp)
- poj3249 Test for job 【图的DAG dp】
- Always on the run+uva+DAG图上的dp
- 【BZOJ1093】[ZJOI2007]最大半连通子图【SCC】【DAG】【DP】
- POJ 2686-Traveling by Stagecoach(DAG图-状态压缩DP)
- uva11324强连通分量在dag图上的dp
- POJ 1287 Networking(kruscal 最小生成树)
- POJ 1611 The Suspects(并查集)
- POJ 1860 Currency Exchange(SPAF or Bell_man)
- POJ 2485 Highways(prim 最小生成树)
- POJ 3259 Wormholes(SPFA or BELL_MAN)
- NOJ 1837 美女购物(DP,DAG图)
- 守护进程例子(二)
- 滚轮鼠标方向失灵
- HDU 1257 导弹拦截(经典的贪心)
- NOJ 1023 防御导弹(dp+贪心)
- HDU 1466 计算直线的交点数(dp)
- HDU 1003 MaxSum(dp)
- HDU 1159 Common Subsequence(LCS)
- POJ 3278 Catch That Cow(bfs+剪枝)