HDU 1160(我真的不会DP啊啊啊啊)
来源:互联网 发布:linux 脚本优先级 编辑:程序博客网 时间:2024/04/19 21:48
题意:有一大坨老鼠,每只老鼠都有体重和速度两个属性,为了证明越重的老鼠速度越慢,你需要找到一个最长的序列:体重递增,速度递减。
思路:动态规划,注意要记录下老鼠的原始编号。
AC代码: 参考kuangbinju哒哒哒~
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxx 1005struct M{ int w,v,index;}m[maxx];bool cmp(M a,M b){ if(a.w!=b.w) return a.w<b.w; else return a.v>b.v;}int main(){ int n=1; int dp[maxx],res[maxx],pre[maxx]; while(scanf("%d%d",&m[n].w,&m[n].v)!=EOF) { dp[n]=1; m[n].index=n; n++; } int maxlen=0,maxi=0; sort(m+1,m+n+1,cmp); for(int i=1;i<n;i++) { for(int j=1;j<i;j++) { if(m[j].w<m[i].w&&m[j].v>m[i].v&&(dp[j]+1)>dp[i]) { dp[i]=dp[j]+1; pre[i]=j; if(dp[i]>maxlen){ maxlen=dp[i]; maxi=i;} } } } int num=maxlen; res[num]=maxi; num--; while(num) { res[num]=pre[maxi]; maxi=pre[maxi]; num--; } printf("%d\n",maxlen); for(int i=1;i<=maxlen;i++) { printf("%d\n",m[res[i]].index); } return 0;}
0 0
- HDU 1160(我真的不会DP啊啊啊啊)
- DP啊啊啊啊啊啊啊啊!
- 啊啊啊啊啊 !!我的heap!!!!
- 啊啊啊啊我
- 我的背包 ,啊啊
- 妈的果然让我做出来了, 我的特等奖啊啊啊啊啊啊啊啊啊
- 我 啊啊
- 我 啊啊
- 我 啊啊
- 我 啊啊
- 啊啊啊啊啊啊 !!! 大仙收了我吧!!
- 啊啊啊啊让我出去。
- 啊啊
- 啊啊
- 啊啊
- 啊啊
- 啊啊
- 啊啊
- Vijos P1680距离
- Object-C KVC模式使用详解(一)
- jquery $(document)
- C++函数的返回值——返回引用类型&非引用类型
- day04
- HDU 1160(我真的不会DP啊啊啊啊)
- jQuery框架下的多选文本框
- c++三种野指针
- javascript生成对象编程模式
- java核心类与性能优化
- 记C++课程设计--学生信息管理系统
- C++网络爬虫的实现——WinSock编程
- 读写文件:每次读入大文件中的一行、读写.CSV文件
- iOS应用程序开发过程的简述