uva 10131
来源:互联网 发布:c语言从1加到100 编辑:程序博客网 时间:2024/06/05 09:42
题意:给你许多大象的体重和IQ值,证明大象越重,智商越高的结论是错误的.把大象的体重按照升序排列,然后找IQ序列中的最长递减序列.
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <stack>using namespace std;const int maxn = 1010;struct pnt{ int wet;//体重 int iq; int id;}ele[maxn];struct strut{ int num; int pre;}ans[maxn];bool Cmp(const pnt& a,const pnt& b){ if(a.wet == b.wet) return a.iq < b.iq; return a.wet < b.wet;}int main(){ int k = 0; while(~scanf("%d %d",&ele[k].wet,&ele[k].iq)){ ele[k].id = k + 1; k++; } sort(ele,ele+k,Cmp); for(int i=0; i<k; ++i){ ans[i].num = 1; ans[i].pre = i; } int cnt,pre=0; for(int i=0; i<k; ++i){ cnt = 1; for(int j=0; j<i; ++j) if(ele[j].wet<ele[i].wet && ele[j].iq > ele[i].iq && ans[j].num+1>cnt ){ cnt = ans[j].num + 1; pre = j; } if(ans[i].num < cnt){ ans[i].num = cnt; //cout<<cnt<<endl; ans[i].pre = pre; } } int maxnum=1,mark; for(int i=1; i<k; ++i){ if(ans[i].num > maxnum){ maxnum = ans[i].num; mark = i; } } //cout<<temp<<endl; printf("%d\n",maxnum); stack<int> sta; while(maxnum--){ sta.push(ele[mark].id); mark = ans[mark].pre; } while(!sta.empty()){ printf("%d\n",sta.top()); sta.pop(); } return 0;}
- UVa 10131
- uva 10131
- UVA 10131
- uva 10131
- UVA 10131
- uva 10131
- uva 10131 越大越聪明
- uva 10131 大象。
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- Vim使用之配置文件
- oracle基本文件之控制文件
- 李显龙在2013年新加坡国庆大会上的中文演讲
- linux下sort程序简介
- 使用CSS3 Flexbox布局
- uva 10131
- H面试程序(14): 快速排序法
- 金融信息交换协议:Fix协议(一)
- C++用CreateProcess来打开IE
- 将STM32的标准库编译成lib【图文】
- HDU 2546 饭卡 (0/1背包问题)
- Lecture 7 自定义类型
- Linux 中make install安装的软件卸载
- Extjs 4.x 中ComboBox级联问题