HDU 1160 FatMouse's Speed (DP)
来源:互联网 发布:java分布式 编辑:程序博客网 时间:2024/05/16 01:36
这道题的思路想通了就很简单。不需要DP转移公式,想多了,一直想推出来反而写错了。明明刘春英讲DP的时候已经想通了还是会错,还是练得少啊。
根据题意的意思就是要先将数据按体重递增,速度递减排序后找最长子序列。
所以推荐用sort函数排好后循环判断就好。
不过题目要求的是输出数据的位置,所以还要定义一个结构体去储存下。
//题意自己看,不会度娘
#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std; struct node{int w;int s;int flag; }a[1005];struct node1{int num;int count;}dp[1005];bool cmp(node a,node b){if(a.w==b.w)return a.s>b.s;return a.w<b.w;}int main(int argc, char *argv[]){int max,t;int i,j,k;i=0;while(scanf("%d %d",&a[i].w,&a[i].s)!=EOF){a[i].flag=i+1;i++;//printf("*%d",i); }sort(a,a+i,cmp);//printf("*1\n");for(j=0;j<i;j++){dp[j].num=1;dp[j].count=0;}max=1;t=1;for(j=1;j<i;j++){for(k=0;k<j;k++){if(a[j].s<a[k].s&&a[j].w>a[k].w){if(dp[j].num<dp[k].num+1){dp[j].num=dp[k].num+1;dp[j].count=k;} }}if(dp[j].num>max){max=dp[j].num;t=j;}}printf("%d\n",max);int m[1005];for(j=1;j<=max;j++){m[j]=t;t=dp[t].count;}for(k=max;k>=1;k--)printf("%d\n",a[m[k]].flag); return 0;}
//Start-ZJ
//2017/12/19/10:38
阅读全文
0 0
- hdu 1160 FatMouse's Speed (DP)
- HDU 1160 FatMouse's Speed DP
- HDU 1160 FatMouse's Speed(DP)
- HDU 1160 FatMouse's Speed(dp)
- HDU 1160 FatMouse's Speed--经典DP
- HDU 1160 FatMouse's Speed DP题解
- HDU 1160 FatMouse's Speed(DP)
- HDU 1160 FatMouse's Speed(DP)
- hdu 1160 FatMouse's Speed dp
- 【HDU】 1160 FatMouse's Speed (DP)
- dp hdu 1160 FatMouse's Speed
- HDU---1160-FatMouse's Speed (DP)
- HDU 1160 FatMouse's Speed(DP)
- DP-HDU-1160-FatMouse's Speed
- hdu 1160 FatMouse's Speed dp
- hdu 1160 FatMouse's Speed【dp】
- hdu 1160 FatMouse's Speed(DP)
- HDU 1160 FatMouse's Speed (DP)
- filter
- Spring mvc Controller 处理安卓post和get请求
- 为什么 parseInt(0.0000008) === 8?
- uWSGI的安装与配置(官网摘录)
- static在工具类中的使用
- HDU 1160 FatMouse's Speed (DP)
- vue书写注意事项(1)
- sql server 截取字符串写法
- 97 Things Every Programmer Should Know
- frameset
- Spring Framework 5.0:Resources资源文件获取接口
- 骑驴找马面试难,你可以这样解决!
- JAVA中NIO,AIO,BIO详解
- windows下安装OpenSSL+vs2010(不使用ms\do_ms命令)