uva10131 Is Bigger Smarter?
来源:互联网 发布:知乎大神 编辑:程序博客网 时间:2024/05/25 16:38
一开始以为是LIS,再后来想到其实是DAG最长路,每一个大象都看成是一个节点,大象a和b,如果a的体重小于b,而iq大于b,则节点a到节点b有一条路径长度为1的路,只要找最长路就行了。
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int maxn=1001;const int inf=1000000;int g[maxn][maxn],d[maxn],next[maxn];typedef struct elephant{ int num,weight,iq;}enode;bool cmp(enode x,enode y){ if(x.weight!=y.weight) return x.weight<y.weight; if(x.iq!=y.iq) return x.iq>y.iq; return x.num<y.num;}enode node[maxn];int main(){// freopen("in.txt","r",stdin); int n=1; while(scanf("%d%d",&node[n].weight,&node[n].iq)!=EOF) { node[n].num=n;//记录没有排序前的真实大象序列号 n++; } n--; sort(node+1,node+n+1,cmp);//按体重递增,iq递减排序 memset(g,0,sizeof(g)); for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) if((node[i].weight<node[j].weight)&&(node[i].iq>node[j].iq)) g[i][j]=1; for(int i=1;i<=n;i++) d[i]=1;//一个大象本身自己的长度为1 memset(next,-1,sizeof(next)); for(int i=n;i>=1;i--) for(int j=i+1;j<=n;j++) if(g[i][j]) { if(d[i]<d[j]+1) { d[i]=d[j]+1; next[i]=j;//记录大象i的下一个节点j,方便后面打印路径 } } int maxnum=0,pos=-1; for(int i=1;i<=n;i++) if(d[i]>maxnum) { pos=i; maxnum=d[i]; } printf("%d\n",maxnum); for(int i=pos;i!=-1;i=next[i]) { printf("%d\n",node[i].num); } return 0;}
- uva10131 Is Bigger Smarter?
- uva10131 - Is Bigger Smarter?
- UVA10131 Is Bigger Smarter? 简单动态规划
- [动态规划]UVA10131 - Is Bigger Smarter?
- uva10131 Is Bigger Smarter?(经典DP,最长上升子序列,注意保存路径部分)
- 10131 - Is Bigger Smarter?
- 10131 - Is Bigger Smarter?
- UVaOJ_10131 - Is Bigger Smarter?
- Is Bigger Smarter
- UVa 10131 Is Bigger Smarter?
- UVa 10131 Is Bigger Smarter?
- UVA 10131 - Is Bigger Smarter
- uva 10131 Is Bigger Smarter?
- uva:10131 - Is Bigger Smarter?
- uva 10131 Is Bigger Smarter?
- UVA 10131 Is Bigger Smarter?
- UVA 10131 Is Bigger Smarter?
- UVa 10131 - Is Bigger Smarter?
- PHP+Oracle项目笔记
- 发送消息,有字数限制的js监控代码
- c#多线程彻底学习
- 解决win7打开网络看不到局域网的其他电脑/计算机
- [转载]android读取sd卡文件的工具类
- uva10131 Is Bigger Smarter?
- JAVA中字符串转换成整型问题
- java解析xml文件
- Oracle 字符集的查看和修改
- Linux PSP GPIO Driver Guide
- JS操作JSON总结
- (转)【Android游戏开发十一】手把手让你爱上Android sdk自带9patch 工具,让Android游戏开发更方便!
- MFC对话框与数据交换
- oracle 字符集 AL32UTF8、UTF8