zoj 3160(区间dp 简单)
来源:互联网 发布:巴基斯坦核试验数据 编辑:程序博客网 时间:2024/05/18 00:39
题目链接:点击打开链接
题目大意:一些人编号为(0~n-1),有些关系在某相邻两人中间,若有关系则就离开这个队列;求离开人数最多的是?
连连看的即视感,仔细分析为区间dp
#include<cstdio>#include<algorithm>#include<cstdlib>#include<cstring>int dp[305][305],queue[305],map[305][305];//MAP用于存储关系,queue用于存站队顺序using namespace std;int main(){ int m,n,i,j; while(scanf("%d%d",&n,&m)!=EOF) { memset(map,0,sizeof(map)); memset(dp,0,sizeof(dp)); for( i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); map[a][b]=map[b][a]=1; } for( j=1;j<=n;j++) scanf("%d",&queue[j]); for(i=1;i<=n;i++) { if(map[queue[i]][queue[i+1]])//原始的数据处理;dp表示在队中,第i号到第j号最多可以跑走的人 dp[i][i+1]=2; } for(i=n-2;i>=1;i--) { for(j=i+2;j<=n;j++) { if(dp[i+1][j-1]==j-i-1&&map[queue[i]][queue[j]])//若第i和第j中间的人全抛光了,则看i个j是否有关系 dp[i][j]=j-i+1; else { for(int k=i;k<j;k++) { if(dp[i][k]+dp[k+1][j]>dp[i][j]) dp[i][j]=dp[i][k]+dp[k+1][j]; } } } } printf("%d\n",dp[1][n]); } return 0;}
0 0
- zoj 3160(区间dp 简单)
- ZOJ 3160 区间DP
- Zoj 3537 区间DP
- Zoj 3537(区间DP)
- ZOJ 3469 区间dp
- ZOJ 3537 区间DP
- zoj 3469 区间dp
- ZOJ 3469(区间DP)
- ZOJ 3537 区间dp
- ZOJ 3469 区间DP
- zoj 3537 三角剖分 简单区间DP
- ZOJ 2744 Palindromes 区间DP
- ZOJ-3894-Chessgame【区间dp】
- 简单的区间 dp
- zoj 2402 简单dp
- zoj 1027 简单dp
- ZOJ Problem Set - 3469(区间dp)
- ZOJ 3469 Food Delivery / 区间DP
- 由Bug延伸的一点有关“兼容与重构”思考
- 苹果移动设备唯一标识的变化
- UVA10391_Compound Words/HDU1247_Hat's Words(字典树)
- 向前端迈进
- Linux下端口被占用解决
- zoj 3160(区间dp 简单)
- linux+oracle 11g 集群的安装
- 寒假训练--dfs+bfs--找朋友
- 守护进程
- 【ios游戏开发】之UDID和OpenUDID扫盲
- 面向对象编程风格 VS 基于对象编程风格(boost::bind/function)
- 设计模式- 主动对象(Active Object)
- poj2251 Dungeon Master
- Visual C++ 技巧:如何合并多个静态库(*.lib)