J - FatMouse’s Speed

题目入口:J - FatMouse’s Speed

解题思路

这道题要求我们排出最大的体重越来越大速度越来越慢的老鼠序列.
首先我们需要一个结构体存放每个老鼠的信息
体重 速度 编号
一个带自定义cmp函数的sort函数排出按体重升序的顺序(这里注意如果体重相等,则让速度快的排前面)
好了 现在我们开始dp
对于一只老鼠1,我们看它后面体重比它大速度比它慢的老鼠2,如果有,取老鼠2得到的最大值加上老鼠1(dp[j]+1)和老鼠1当前最大值(dp[i])的最大值
最后取dp[i]中最大值即为答案
注意本题要求输出路径
那我们我们再加一段代码输出路径
思路是从头遍历老鼠们
如果选取老鼠i得到的最大值(dp[i])为目前最优结果(Max)
说明它是我们的天选之鼠,把它输出出来
我们的最优结果随之减少一个鼠额
随着一个又一个天选之鼠的输出
最优结果已到零则结束挑选

AC代码

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MaxSize 1010  //注意依题更改数组大小
int dp[MaxSize];    //存放当前最大不连续递增子列长度
struct mice{int w;int s;int index;
}m[1005];
bool cmp(mice x, mice y){if (x.w == y.w) return x.s > y.s;return x.w < y.w;
}
int main() {int pos = 1, x, y;while (scanf("%d%d", &x, &y)!=EOF){m[pos].w = x;m[pos].s = y;m[pos].index = pos;pos++;}sort(m+1, m+pos+1, cmp);int Max = 0;for (int i = pos; i >= 1; i--){dp[i] = 1;for (int j = i; j <= pos; j++){if (m[j].w > m[i].w && m[j].s < m[i].s){dp[i] = max(dp[i], dp[j] + 1);}}Max = max(Max, dp[i]);}printf("%d\n", Max);for (int i = 1; i <= pos; i++){if (dp[i] == Max){printf("%d\n", m[i].index);Max--;}if (!Max) break;}return 0;
}

J - FatMouse's Speed相关推荐

  1. 序列输出ZOJ1108 FatMouse's Speed

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

  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. FatMouse's Speed

    FatMouse's Speed // File Name: hdu1160.cpp // Author: rudolf // Created Time: 2013年04月25日 星期四 14时47分 ...

  4. FatMouse's Speed(LIS+路径记录)

    题目:FatMouse's Speed 题解:采用O(n^2)的LIS算法,用path记录路径 #include<bits/stdc++.h> using namespace std; t ...

  5. HDU1160:FatMouse's Speed(最长上升子序列,不错的题)

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=1160 学的东西还是不深入啊,明明会最长上升子序列,可是还是没有A出这题,反而做的一点思路没有,题意就不多 ...

  6. hdu-acm steps FatMouse's Speed

    本想用暴力法先试试的,案例和自己找的数据都过掉了,但是始终wa,本来期待的是tle,结果始终wa.所以也就懒的管了,直接用dp来做了.主要是因为最近在刷暴力法和dp这两个专题,所以才想好好利用一下这道 ...

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

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

  8. FatMouse's Speed hdu 1160(动态规划,最长上升子序列+记录路径)

    http://acm.hdu.edu.cn/showproblem.php?pid=1160 题意:现给出老鼠的体重与速度,要求你找出符合要求的最长子序列.       要求是 W[m[1]] < ...

  9. HDOJ 1160 FatMouse's Speed

    第一个用动态规划完成的题目O(∩_∩)O哈哈~.忘记赋值之前的判断了,结果悲剧WA,算是第一次使用动态规划的一个小教训吧. View Code 1 //#include <fstream> ...

最新文章

  1. Linux下C/C++编译环境搭建
  2. android调试——教你用dumpsys命令调试
  3. Native与H5交互的一些解决方法
  4. 非proguard无法发现jar(已编译)的外部引用错误,(javac + proguard 则会检查)
  5. python字符串连接操作-Python连接字符串过程详解
  6. 大前端时代安全性如何做
  7. java猜单词游戏_9 java基础综合编程练习---猜单词游戏
  8. Spring-@value用法详解与苏宁框架vars的解释
  9. mysql 正则 换行符_MySQL 正则表达式
  10. 以下关于java文件名的叙述正确的有_sun java认证考试题库
  11. Java毕业设计-医院药品管理系统
  12. 华为云OBS数据桶使用
  13. JavaScript 学习笔记 ——document
  14. JPinyin繁体相互转换
  15. 通过泰勒展开求自然常数e,R语言实现
  16. 网联清算平台45家股东名单出炉【附股权明细表】
  17. mysql获取上月26号_根据当前时间查询上月26号的日期 本月月25号的日期
  18. python time模块以秒计时保留两位小数,格式化时间戳
  19. 搭建机器人电控系统——PID算法——什么是PID?
  20. 【zzq‘笔记】HDR成像技术学习(一)

热门文章

  1. 动态规划:5627、石子游戏VII
  2. 港澳台及国外通行证正则匹配
  3. mcrpg服务器文件,【服务端发布】我的世界勇士RPG服务端重新发布!
  4. unpickling stack underflow
  5. 对分查找法(二分查找法,折半查找法)
  6. 创业俱乐部:为创业者指点迷津
  7. webp的js插件_网页webp解决方案
  8. 隐形字符复制_复制器的隐形传送翘曲驱动以及科幻小说实现的可能性更高
  9. php 接入 paypal 支付
  10. js解析一段html标签,js怎么解析html标签