这题用DP 处理最长子序列 然后在输出他的标号。

#include<iostream>//动态规划
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
const int MAX = 10010;//题目中给了最多1000只老鼠但是没说给几组测试数据所以尽量开大点,这里输出时是特殊输出:Ctrl+Z
int DP[MAX];//最大子序列
int rem[MAX];//记录符合条件的老鼠
using namespace std;
typedef struct Mouse
{int weight;//重量int speed;//速度int num;//编号
}mice;
mice s[MAX];
bool cmp(mice x, mice y)//这里按体重从大到小,速度从小到大排序当然也可以全部反过来
{if (x.weight == y.weight)return x.speed < y.speed;elsereturn x.weight > y.weight;
}
int main()
{int n, m, maxn, i, j, k, t, mark;for (i = 1; i < MAX; i++)//初始化,每只记录的老鼠都是自己rem[i] = i;k = 1;while (cin>>s[k].weight>>s[k].speed)//特殊输入输出,输入完数据按下Ctrl+Z就会出数据{s[k].num = k;k = k + 1;}sort(s + 1, s + k, cmp);//排序,给结构数组排序memset(DP, 0, sizeof(DP));//初始化为0for (i = 1, m = 0; i < k; i++){maxn = 0;//maxn表示(最大的子序列长度)即找到符合条件的最多的老鼠数量for (j = 1; j < i; j++){if (s[i].weight<s[j].weight&&s[i].speed>s[j].speed)//如果符合条件{if (maxn < DP[j])//如果此时数量大于记录的最大数量{maxn = DP[j];//把此时数量赋给maxnmark = s[j].num;//并且记录此时这只老鼠的编号}}if (maxn)//如果最大数量存在rem[s[i].num] = mark;//把用于比较老鼠编号和记录的老鼠编号对应记录下来DP[i] = maxn + 1;//如果不存在此时maxn==0加上1就是1即就算找不到也有它自己啊--找到了那就更新原来的值即+1if (m < DP[i])//m是记录符合条件的最大老鼠数量{m = DP[i];t = s[i].num;//t是记录最后一只符合条件的老鼠编号方便输出}}}if (m == 1)//当m等于1时即没有符合条件的其他老鼠那只能是随便哪只都可以输出所以我就固定输出1(数量)和1(编号){cout << 1 << endl << 1 << endl;}else//否则{cout << m << endl;//输出符合条件的最大数量while (rem[t] != t)//如果此时老鼠编号对应的老鼠不是自己{cout << t << endl;//那么输出这只老鼠的编号t = rem[t];//并且把对应的老鼠的编号重新赋给t}cout << t << endl;//因为对应的最后一只老鼠的编号的rem[对应的最后一只老鼠]=它自己。。所以我们要把对应的最后一只老鼠的编号单独输出来}return 0;//完毕
}

FatMouse believes that the fatter a mouse is, the faster it runs.相关推荐

  1. HDU1160 FatMouse's Speed —— DP

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

  2. 最长有序子序列—动态规划算法

    动态规划使用范围:(http://baike.baidu.com/view/28146.htm) 任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用.同样,动态规划也并不是万能的.适用动态规 ...

  3. 动态规划8FatMouse's Speed

    FatMouse's Speed Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) To ...

  4. 4.15 每周作业 —— 简单DP

    免费馅饼 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  5. 最长上升子序列 (LIS) 详解+例题模板 (全)

    欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/-萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗- ------------ ...

  6. 关于LIS(普通方式及二分查找方式)

    一:关于LIS: LIS及最长上升子序列,就是对于一个长度为n的数组,上升子序列指的是对于数组中任意的i<j都满足a[i]<a[j]的子序列. 例子: 对于固定的数组,虽然LIS序列不一定 ...

  7. Linker Linking (a detail introduction)

    http://eulertao.ycool.com/post.1822428.html 超级长的文章,连载20天,作者牛啊- http://www.airs.com/blog/archives/cat ...

  8. FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)

    题意: n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点. 整理模板ing- 题目: FatM ...

  9. 【HDU - 1078】FatMouse and Cheese (记忆化搜索dp)

    题干: FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimens ...

  10. 序列输出ZOJ1108 FatMouse's Speed

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! ZOJ1108 FatMouse's Speed 最长下落子序列,这题挺好的 ...

最新文章

  1. [原创]Zynq SDIO WIFI SotfAP调试
  2. 图像处理特征不变算子系列之KLT算子
  3. mysql存储过程删除重复记录
  4. 通过示例Hibernate–第2部分(DetachedCriteria)
  5. 【渝粤教育】 国家开放大学2020年春季 2071美学与美育 参考试题
  6. html 表格套表格_HTML表格
  7. php实现tcp连接的原理,PHP实现TCP实例
  8. java 事务管理 子父线程_Java中的父线程与子线程
  9. abcde依次进入一个队列_体育老师必看——详解队列队形及口令(2)
  10. Oracle 官方文档地址
  11. Java实现生成二维码(含logo)
  12. 最全计算机基础知识竞赛试题,计算机基础知识竞赛试题.doc
  13. JS实现弹窗效果,超简单哦
  14. SpringBoot中Redis报错:NOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptio
  15. DingTalk「开发者说」|钉钉小程序开发实践
  16. w ndows10还原点,Windows10系统还原点设置
  17. win10+macOS双系统时间不同步解决方案
  18. 数据库基础(常见面试题)
  19. csapp-buflab
  20. CIMISS数据获取流程

热门文章

  1. 社会的需求对科技进步的作用要超过十所大学
  2. 二项分布的特征函数及期望与方差 - 随机过程
  3. catia切割红色框框_如何在CATIA中对零件的实体进行切割,详细始末
  4. iOS 开发:知识地图(不定期更新)
  5. Hadoop的容错性
  6. IPv4(分类编址)
  7. QT入门(一)——QT概述
  8. python 读取png图片 透明度
  9. 微信小程序云数据库中变量作为字段名与字段取值、字段值取值
  10. 通过终端安装dmg或者pkg文件