uva:10131 - Is Bigger Smarter?
来源:互联网 发布:ubuntu不能安装ssh服务 编辑:程序博客网 时间:2024/06/11 18:26
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=1072
简单dp,是最长上升子序列问题的变种。要注意样例,对于其输出结果,得到得先将输入的序列进行排序,然后再动规。由于要输出对应的序列号,所以这里我们就直接采用O(n^2)算法。由于输出的序列是按照给定的要求的,所以这里我们可以从数组尾进行动规计算,然后不断的记录一个节点的下一个节点。这点与前一个动规的输出相似。代码如下:
/*ID: csuchenanPROG: 10131 - Is Bigger Smarter?LANG: C++*/#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>using namespace std ;struct Node{int w ;int s ;int index ;}node[1005] ;int dp[1005] ;//用于存储结果int pr[1005] ;//用于对应的前驱点int n ;int cmp(const void * a , const void * b){Node * c = (Node *)a ;Node * d = (Node *)b ;if(c->w!= d->w)return c->w - d->w ;return c->s - d->s ;}int main(){//freopen("10131.in" , "r" , stdin) ;//freopen("10131.out" , "w" , stdout) ;int i ;i = 0 ;n = 0 ;while(cin>>node[i].w>>node[i].s){node[i].index = i + 1 ; i++ ;}n = i ;//先进行排序 qsort(node , n ,sizeof(node[0]) , cmp) ;int j ;int temp ;int index ;memset(dp , 0 , sizeof(dp)) ;memset(pr , 0 , sizeof(pr)) ;dp[n - 1] = 1 ;pr[n - 1] = -1 ;for(i = n - 2 ; i >= 0 ; i --){temp = 0 ;index = -1 ;for(j = n - 1 ; j > i ; j --){if(temp < dp[j] && node[i].w < node[j].w && node[i].s > node[j].s){temp = dp[j] ;index = j ;}}dp[i] = temp + 1 ;pr[i] = index ;}j = 0 ;for(i = 1 ; i < n ; i ++){if(dp[i] > dp[j])j = i ;}cout<<dp[j]<<endl ;while(j!=-1){cout<<node[j].index<<endl ;j = pr[j] ;}return 0 ;}
- 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?
- 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?
- 无意中看到的好书
- python相关网址
- 第六章(一维数组)
- 第九周实验报告(五)
- TCO2012Round1C-1-PasswordXGuessing
- uva:10131 - Is Bigger Smarter?
- C\D\E\F盘的作用
- 数据类型
- vc++工程中.def文件的作用和动态库导出函数的方法.
- HGE tutorial 03 学习笔记及摘录
- 学习linux kernel的好书
- thread和process的区别
- FusionCharts或其它flash的div图层总是浮在最上层?
- vc读写二进制文件中的奇怪现象