Uva103 Stacking Boxes 贪心 深搜 +DP思想
来源:互联网 发布:淘宝法国灰太太正品吗 编辑:程序博客网 时间:2024/05/01 14:23
题目勉强可以算是一个DP题目把,贪心部分很好想到,题意是 给你k个n维的 盒子,如果一个盒子的相应的每一维都比另一个盒子的每一维大,就代表这个盒子包含另一个盒子,问给你的k个盒子中最多几个盒子连续包含,而且每一维的位置并不是固定的,是可以自己排序调整的,那么直接应用贪心思想全部从小到大或者从大到小都是可以的,接下来 就是一个 DFS过程了,每找到一个盒子 他能包含另一个盒子时,再往下一层进行寻找,找另一个盒子下面包含的,找到深度最深的那个就是最大连续包含量,同时利用深搜记录下,是哪几个盒子
#include<iostream>#include<cstdio>#include<list>#include<algorithm>#include<cstring>#include<string>#include<queue>#include<stack>#include<map>#include<vector>#include<cmath>#include<memory.h>#include<set>#define ll long long#define eps 1e-7#define inf 0xfffffffconst ll INF = 1ll<<61;using namespace std;//vector<pair<int,int> > G;//typedef pair<int,int > P;//vector<pair<int,int> > ::iterator iter;////map<ll,int >mp;//map<ll,int >::iterator p;//vector<int> G[35];int dp[35],vis[35];int k,n,ans,maxn;void clear() {for(int i=0;i<=k;i++)G[i].clear();memset(vis,0,sizeof(vis));memset(dp,0,sizeof(dp));ans = 0;}int detal(int cur,int pos) {vector<int> &G1=G[cur],&G2=G[pos];for(int i=0;i<n;i++)if(G1[i] <= G2[i])return 0;return 1;}int caldp(int cur) {if(vis[cur]) return dp[cur];int maxnum = 1;vis[cur] = 1;for(int i=1;i<=k;i++)if(i != cur && detal(cur,i)) {int tmp = caldp(i) + 1;maxnum = max(tmp,maxnum);}ans = ans>maxnum?ans:(maxn = cur,maxnum);return dp[cur] = maxnum;}void Printf(int x) {for(int i=1;i<=k;i++)if(dp[i] == dp[x] - 1 && detal(x,i)) {Printf(i);break;}if(x != maxn)printf("%d ",x);elseprintf("%d",x);}int main() {int x;while(scanf("%d %d",&k,&n)==2) {clear();for(int i=1;i<=k;i++) {for(int j=0;j<n;j++) {scanf("%d",&x);G[i].push_back(x);}sort(G[i].begin(),G[i].end());}for(int i=1;i<=k;i++)caldp(i);printf("%d\n",ans);Printf(maxn);puts("");}returnEXIT_SUCCESS;}
1 0
- Uva103 Stacking Boxes 贪心 深搜 +DP思想
- UVa103 - Stacking Boxes
- uva103 - Stacking Boxes(DAG)
- [动态规划]UVA103 - Stacking Boxes
- DP 练习 uva103 Stacking Boxs
- UVA_103 Stacking boxes(DP)
- uva103 - Stacking Boxes(动归,记忆化搜索)
- uva 103 (dp)Stacking Boxes
- DP-DAG uva_103 Stacking Boxes
- Stacking Boxes - UVa 103 dp
- uva--103Stacking Boxes +dp
- UVa 103 Stacking Boxes (DP&DAG)
- UVA 103 Stacking Boxes 堆砌盒子(DP)
- 【DP】UVA 103 Stacking Boxes 输出路径
- UVA 103 Stacking Boxes (DP)
- UVA103 (DP)
- Stacking Boxes
- Stacking Boxes
- poj 1088 滑雪
- Shark本地安装及可能出现的问题
- mysql是区分表名的大小写
- Genesis-3D学习手册——19.地形指南
- 开发板如何开启telnet服务
- Uva103 Stacking Boxes 贪心 深搜 +DP思想
- SQL删除部分字段重复
- Thrift交流(二)thrift服务端和客户端实现 Nifty
- Genesis-3D学习手册——20.地形高度
- 基于手机端web开发----“个人中心”列表及“我喜爱的商品”flowView的实现
- 【物联网智能网关-17】.NET Micro Framework之MDK C++二次开发
- 未能找到任何适合于指定的区域性或非特定区域性的资源 - 终极解决方案
- Insert Interval
- linux中GFP_KERNEL