HDOJ1160 FatMouse's Speed 弄了一晚上还是WA了,感觉有不止一个解啊
2013-11-07 22:37
351 查看
#include <iostream> #include <algorithm> #include <fstream> #include <vector> using namespace std; struct FatMouse { int id; int next; int weight; int speed; FatMouse(int w,int s) { weight = w; speed = s; } bool operator<(FatMouse f) { if (weight == f.weight) { return speed > f.speed; } return weight < f.weight; } }; int main() { ifstream cin("input.txt"); int w,s,max=0,index=0,n=1; int dp[1000]; vector<FatMouse> v; while(cin>>w>>s) { FatMouse f(w,s); f.id=n++; v.push_back(f); } n--; sort(v.begin(),v.end()); for (vector<FatMouse>::iterator it = v.begin() ; it != v.end(); it++) { cout<<(*it).weight<<" "<<(*it).speed<<" "<<(*it).id<<endl; } for (int i = v.size()-1;i>=0;i--) { dp[i] = 1; for (int j = i+1 ; j < v.size() ; j++) { if (v[i].weight < v[j].weight && v[i].speed > v[j].speed) { if (dp[i] < dp[j] + 1) { dp[i] = dp[j] + 1; v[i].next = j; } } if(max < dp[i]) { max = dp[i]; index = i; } } } cout<<max<<endl; for (int i = 1 ; i <= max ; i++) { cout<<v[index].id<<endl; index=v[index].next; } }
相关文章推荐
- HDOJ1160 FatMouse's Speed[dp](最长上升子序列)
- HDOJ 1160 FatMouse's Speed
- HDOJ 1160 FatMouse's Speed(LIS)
- HDOJ 题目1160 FatMouse's Speed(最长上升子序列,输出路径)
- HDOJ 1160 FatMouse's Speed 杭电 ACM
- HDOJ 1160 FatMouse's Speed
- HDOJ 1160 FatMouse's Speed
- HDU 1160 FatMouse's Speed(求最长递减序列+记录路径)
- J - FatMouse's Speed HDU 1160 (动态规划,最长上升子序列+路径输出)
- HDU1160_FatMouse's Speed【LIS变形】
- hdu 题目1160 FatMouse's Speed (DP)
- hdu 1160 FatMouse's Speed(LIS)
- hdu 1160 FatMouse's Speed 【lis+记录路径】
- hdu1160 FatMouse's Speed(LIS普通法)
- 【排序+dp】HDU 1160——FatMouse Speed
- HDU_1160_FatMouse's Speed
- HDU 1160 FatMouse's Speed(记录结果的最长上升子序列)
- HDU 1160 FatMouse's Speed(最长递减子序列变形)
- HDOJ-1160-FatMouse's Speed 解题报告
- HDU 1160 FatMouse's Speed(LIS)