本题就先排序老鼠的重量,然后查找老鼠的速度的最长递增子序列,只是由于须要按原来的标号输出,故此须要使用struct把三个信息打包起来。

查找最长递增子序列使用动态规划法。主要的一维动态规划法了。

记录路径:仅仅须要记录后继标号,就能够逐个输出了。


#include <stdio.h>
#include <algorithm>
using namespace std;const int MAX_N = 1005;struct MouseSpeed
{int id, w, s;bool operator<(const MouseSpeed &ms) const{return w < ms.w;}
};int N;
MouseSpeed msd[MAX_N];
int post[MAX_N], tbl[MAX_N];int main()
{N = 0;while (~scanf("%d %d", &msd[N].w, &msd[N].s)){msd[N].id = N+1;++N;}sort(msd, msd+N); //fullfill condition 1: weight increasefill(tbl, tbl+N, 1);//initialize dynamic tablepost[N-1] = N-1;for (int i = N-2; i >= 0; i--){post[i] = i;    //as the print out terminate termfor (int j = i+1; j < N; j++){if (msd[i].s>msd[j].s && msd[i].w!=msd[j].w && tbl[i]<tbl[j]+1){//strictly increase, so don't forget msd[i].w must < msd[j].wtbl[i] = tbl[j]+1;//update longest subsequencepost[i] = j;//record the post}}}int id = 0, maxSeq = 0;for (int i = 0; i < N; i++)//find the max sequence starting point{if (maxSeq < tbl[i]){id = i;maxSeq = tbl[i];}}printf("%d\n", maxSeq);printf("%d\n", msd[id].id);while (id != post[id]){id = post[id];printf("%d\n", msd[id].id);//print out the original indices}return 0;
}

转载于:https://www.cnblogs.com/lxjshuju/p/7045228.html

HDU 1160 FatMouse#39;s Speed DP题解相关推荐

  1. HDU - 1160 FatMouse's Speed(最长不下降子序列)

    题目链接:点击查看 题目大意:给出许多二元组(W,S),最后要求输出最长的满足W严格递增,S严格递减的子序列长度,以及方案,输出任意一种即可 题目分析:看起来像二维偏序,其实对任意一维排序后求最长不下 ...

  2. HDU1160 FatMouse's Speed —— DP

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1160 FatMouse's Speed Time Limit: 2000/1000 MS ...

  3. hdu 2089 不要62【数位dp】

    HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...

  4. HDU.1009 FatMouse' Trade

    文章目录 一.题目解读 1.原题 2.分类 3.题意 4.输入输出格式 5.数据范围 二.题解参考 1.总体思路 2.思路① (1).分析 (2).一些数据 (3).AC代码 三.评价与后话 1.评价 ...

  5. HDU 1520 Anniversary party(树形dp)

    HDU 1520 Anniversary party(树形dp) 树形dp第一题!!! 题意很清晰,思路也很明确.很容易找到根节点,即最大的boss,通过根节点向下dp. 状态转移方程: int to ...

  6. [JSOI2008]Blue Mary的战役地图——全网唯一一篇dp题解

    全网唯一一篇dp题解 网上貌似全部都是哈希+二分(反正我是大概baidu了翻了翻)(还有人暴力AC了的..) 哈希还是相对于dp还是比较麻烦的. 而且正确性还有可能被卡(当然这个题不会) 而且还容易写 ...

  7. HDU 3001 三进制状压DP

    HDU 3001 三进制状压DP N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方 ...

  8. hdu 5155 Harry And Magic Box(DP)

    题目链接:hdu 5155 Harry And Magic Box dp[i][j]表示i∗j的矩阵方案数,dp[i][j]从dp[i−k][j−1]中转移,枚举前面j-1列中k行为空,那么这些行在第 ...

  9. Java编写胖老鼠的交易,猫鼠交易(贪心) HDU 1009 FatMouse' Trade

    猫鼠交易(贪心) HDU 1009 FatMouse' Trade FatMouse prepared M pounds of cat food, ready to trade with the ca ...

最新文章

  1. android调服务不更新,android – OnUpdate()不调用小部件服务
  2. 京东方网络推广外包将为三星提供OLED 屏幕可造成韩国显示产业动荡
  3. nginx 超时时间_我眼中的 Nginx(四):是什么让你的 Nginx 服务退出这么慢?
  4. linux 安装centos7,linux CentOs7 安装 Autojump 方便高效省事-Go语言中文社区
  5. ElasticSearch——学习笔记
  6. Android 全局悬浮按钮,悬浮按钮点击事件
  7. 第十二届全国大学生服务外包创新创业大赛总结
  8. 关于ajax入门案例
  9. 入门到 精通 JavaScript中的正则表达式RE、RegExp
  10. 帆软复选框选中并打印(按某种格式打印)数据分析、报填可用
  11. QQ附近人/微信附近的人功能被限制使用解决办法
  12. AlphaControls 控件 锐浪报表 Grid++Report 打印浏览显示问题解决
  13. Android自定义View,画一个好看带延长线的饼状图
  14. android 本地存储数组,安卓与iphone自带浏览器对本地存储的支持
  15. Tik Tok账号被封了怎么办?
  16. 计算机教学管理,计算机教育教学管理论文
  17. redis管理工具rdm安装;另一个管理工具medis
  18. gcc: error: : No such file or directory
  19. php access violation,Access Violation
  20. matlab如何读取.mat文件,matlab中读取mat文件

热门文章

  1. 动态分区分配算法代码_【代码】巩敦卫等TEVC论文:基于区间相似度分析的协同动态区间多目标进化优化算法...
  2. Apollo应用接入
  3. ES查看索引库结构和数据
  4. C++ vector 容器的使用
  5. MYSQL5.6服务启动不起来
  6. Android开发笔记(一百二十二)循环器视图RecyclerView
  7. Android开发笔记(八十)运行状态检查
  8. idea 添加注释模版
  9. Oracle 10g DG 数据文件迁移
  10. 如何改变Myeclipse编辑区背景色(转)