uva 10131 大象。
来源:互联网 发布:统计与自然语言java 编辑:程序博客网 时间:2024/04/25 13:41
就是一个最长上升子序列而已。
状态转移的时候注意一下必须是严格递增的就好
#include<stdio.h>#include<string.h>#include<stack>#include<vector>#include<algorithm>using namespace std;struct P{ int i; int w; int s; P() { i=-1; s=0; } P(int a,int b,int c) { i=a;w=b;s=c; } bool operator <(const P &o)const { return w<o.w; }};P w[10002];vector<P> ele;int res[2000];int dp[2000];int main(){ int tw,ts; for(int i=0;i<2000;i++) res[i]=i; int index=1; while(scanf("%d%d",&tw,&ts)!=EOF&&(tw!=0||ts!=0)) { P tp(index++,tw,ts); ele.push_back(tp); } sort(ele.begin(),ele.end()); memset(dp,0,sizeof(dp)); for(int i=0;i<ele.size();i++) dp[i]=1; int max_=-1; int max_i=0; for(int i=1;i<ele.size();i++) { for(int j=0;j<i;j++) { if(ele[i].s<ele[j].s&&ele[i].w!=ele[j].w&&dp[i]<dp[j]+1) { res[i]=j; dp[i]=dp[j]+1; } } } for(int i=0;i<ele.size();i++) { if(max_==-1||max_<dp[i]) { max_=dp[i]; max_i=i; } } printf("%d\n",dp[max_i]); stack<int> S; while(res[max_i]!=max_i) { S.push(ele[max_i].i); max_i=res[max_i]; } S.push(ele[max_i].i); while(!S.empty()) { printf("%d\n",S.top()); S.pop(); }}
- uva 10131 大象。
- 《大象》
- 大象读书笔记
- 实习-大象
- 大象起舞
- 大象 ThinkingUML
- 大象喝水
- 大象喝水
- 简笔画~大象
- 蚂蚁&大象
- 大象要结婚了
- 蚂蚁和大象
- 把大象放进冰箱
- 蚂蚁和大象系列
- 生活就是大象
- 是什么让大象跳舞?
- 是什么让大象跳舞?
- 《大象》勘误专用帖
- 写样式时不要图一时省事而忽略背景色的声明
- android 关于jni调用出错的那些事
- Android APK软件修改教程,由odex文件生成classes.dex
- java数据库基本操作
- HashTable HashMap TreeMap 区别
- uva 10131 大象。
- 多路RTSP播放器直播与点播技术实现
- XP中打开组策略对象编辑器提示“MMC无法创建管理单元”解决方案
- memcached服务的集群和session支持
- Hibernate的对象的三种状态
- MPMoviePlayerController 电影播放器—IOS开发
- 谈谈我对百度广告管家的一些看法
- jquery通过name绑定单击事件
- python相关常用操作