ZOJ 1108(FatMouse's Speed)
来源:互联网 发布:java写接口供别人调用 编辑:程序博客网 时间:2024/05/17 01:58
//经典dp
//难点在于序列路径的输出(使用“前驱法”)
#include<iostream>#include<algorithm>using namespace std;int dp[1001], pre[1001];struct mice{int order; //记住初始时各只老鼠的顺序,避免后面操作时打乱int weight;int speed;}m[1001];bool cmp(mice &m1, mice&m2) //这里不使用二级结构体排序也可以直接AC{return (m1.weight < m2.weight);}void output(int i) //递归后,正向输出路径{if (pre[i] == 0){cout << m[i].order << endl;return;}output(pre[i]);cout << m[i].order << endl;}int main(void){//freopen("Text.txt", "r", stdin);int i = 1, total, ans = 0, ans_index;while (cin >> m[i].weight >> m[i].speed){pre[i] = 0;//千万千万不要简写成 m[i].order=i++;,WA了一下午//之前自己写的第一个程序直接就AC了,后来看到别人用这个i++就学别人了,结果一直WA//,又不知道原因m[i].order = i; i++;}total = i - 1;sort(m + 1, m + total + 1, cmp);for (int i = 1; i <= total; i++){dp[i] = 1;for (int j = 1; j < i; j++){if (m[j].speed > m[i].speed&&m[j].weight < m[i].weight&&(dp[i] < dp[j] + 1)){dp[i] = dp[j] + 1;pre[i] = j; //记录j的前驱是i,以利于后面路径的输出}}if (ans < dp[i]){ans = dp[i];ans_index = i;}}cout << ans << endl;output(ans_index);return 0;}///////////////////////////////////////////////////////////// 常规的路径输出方法,定义一个路径数组存储路径include<iostream>#include<algorithm>using namespace std;int dp[1001], pre[1001],route[1001];struct mice{int order;int weight;int speed;}m[1001];bool cmp(mice &m1, mice&m2){return (m1.weight < m2.weight);}int main(void){//freopen("Text.txt","r",stdin);int i = 1, total, ans = 0, ans_index;while (cin >> m[i].weight >> m[i].speed){pre[i] = 0;m[i].order = i;i++;}total = i - 1;sort(m + 1, m + total + 1, cmp);for (int i = 1; i <= total; i++){dp[i] = 1;for (int j = 1; j < i; j++){if (m[j].speed > m[i].speed&&m[j].weight < m[i].weight && (dp[i] < dp[j] + 1)){dp[i] = dp[j] + 1;pre[i] = j;}}if (ans < dp[i]){ans = dp[i];ans_index = i;}}cout << ans << endl;//到这里已经知道路径数组的规模为ansint end = ans_index;for (int i = ans; i >= 1; --i) //这里反向存储,便于后面正向输出{route[i] = end;end = pre[end];}for (int i = 1; i <= ans; i++) cout << m[route[i]].order << endl;return 0;}
阅读全文
0 0
- zoj 1108 FatMouse's speed
- ZOJ 1108 FatMouse's Speed
- zoj 1108 FatMouse's Speed
- ZOJ 1108 FatMouse's Speed
- zoj 1108 - FatMouse's Speed
- ZOJ 1108 FatMouse's Speed
- zoj 1108 FatMouse's Speed
- ZOJ 1108 FatMouse's Speed
- ZOJ 1108(FatMouse's Speed)
- zoj 1108 FatMouse's Speed(DP)
- ZOJ Problem Set - 1108 FatMouse's Speed
- hdu 1160 || zoj 1108 FatMouse's Speed
- Chapter06-FatMouse‘s Speed(ZOJ 1108)
- zoj 1108 FatMouse's Speed 基础dp
- ZOJ 1108 FatMouse's Speed【DP】【最大上升子序列】
- zoj 1108 FatMouse's Speed 简单动规
- ZOJ 1108 FatMouse's Speed (HDU 1160) DP
- ZOJ 1108 FatMouse's Speed(dp+路径还原)
- nefuoj574-丑数-枚举
- PHP 底层的运行机制与原理
- 基于C++的开源库dxflib读取dxf文件上手笔记
- Centos7 添加用户及设置权限
- Java实现简单的贪吃蛇小游戏(使用线程、内部类、双向链表等)
- ZOJ 1108(FatMouse's Speed)
- UI框架_转载修改
- action提交表单路径两种方法:web.xml设置和注解
- GameProject-xianxia-neidan
- jQuery中获取和设置标签中的内容
- 如何将系统app移植到Androdi Studio–Launcher3
- 关于eclipse中启动ONE仿真的配置
- BZOJ 1001 狼抓兔子
- PHP底层工作原理