hdu1160

题意:给出很多老鼠的数据,分别是它们的体重和跑速,为了证明老鼠越重跑得越慢,要找一组数据,由若干个老鼠组成,保证老鼠的体重依次增加而跑速依次减小,问这组数据最多能有多少老鼠,并按体重从小到大输出这些老鼠的顺序。

并不是难题,我觉得有点类似穷国富国或者是堆砖块,我的做法就是首先将这些老鼠按体重从大到小排序(为什么从大到小呢,因为我是用结构体模拟指针记录了上一只老鼠的序号,所以最终会倒序输出,排序的时候就按倒序排序了)

昂,介绍下我的结构体,是记录了 w(weight),s(speed),n(number),l(last),体重和速度肯定是要记录的用于比较,n 是由于我要进行排序,数组下标会被打乱,所以用 n 单独记录这只老鼠原本的位置,l 则是记录这只老鼠上一只老鼠的数组下标,如果前面没有老鼠,那就是指向第 0 只老鼠(重量是极大,速度是 0,n 、 l 都初始化为0).

当对体重排完序之后,就从前往后开始 dp ,对第 i 只老鼠,遍历从 0 到 i - 1 的老鼠 j ,如果 j 比 i 重而且速度慢,那就 dp[ i ] = max ( dp [ i ] , dp [ j ] + 1 ),并且判断 dp [ i ] 是不是最大值,如果是就记录下 i 便于最后输出数据量最大的一组老鼠。

然后就这么结束了。

恩,接下来是吐槽时间,看见我代码里面一堆堆绿翔色的 debug 代码了吗```是的,一开始我读入都不对,我计数的 c 是在读取数据的时候 ++c 的,但是每次读两个数据,我就很自以为是地一个用了 ++c 一个直接 c,以为会在第一个加了,第二个就是沿用加过的,于是```各种坑,++这种东西还是要足够水平才能用啊,我这种渣渣还是老老实实后面加 c++ 吧```;

这并不是全部,然后我在纠结样例那个顺序究竟是怎么得到的呢!!!为什么我每次都和它有一两个不一样,我试了要不要排速度? dp 值相等的时候要不要取?各种各种,正当我即将绝望想要求助学长的时候```我突然看到说只要求一种可行解就可以了!!!英语啊我的英语啊谁来拯救我的英语啊!!!

恩并不止是这样,当我明白是其中一种正确解就可以的时候我果断提交!WA!!!WTF!!!我换了种姿势又WA了一发,我觉得是时候找学长们谈论一下人生了```然后我突然又发现```由于读入的时候没有说读入多少个只是读到文件结束,所以我自己加了个读 9 个数据就跳出读取循环为了测试给的样例,但是我并记不住把它删掉!```果然把它注释掉就 AC 了,我的心好累,连 hdu 都要欺负我这种智商不过关的渣渣啊```

 #include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define max(a,b) a>b?a:b
#define inf 0x3f3f3f3f
int dp[]; struct Mouse{
int w,s,n,l;
}m[]; int cmp(Mouse m1,Mouse m2){
if(m1.w==m2.w)return m1.s<m2.s;
return m1.w>m2.w;
} int main(){
int c=,i,j;
while(scanf("%d%d",&m[c].w,&m[c].s)!=EOF){
m[c].n=c;
m[c].l=;
// if(c==9)break;
c++;
}
/*
printf("\n");
for(i=1;i<=c;i++)printf("%d %d\n",m[i].w,m[i].s);
printf("\n");
*/
sort(m+,m+c+,cmp);
m[].w=inf;
m[].s=;
m[].l=;
m[].n=;
int ans=;
/* printf("\n");
for(i=0;i<=c;i++){
printf("%d %d\n",m[i].w,m[i].s);
}
printf("\n");
*/ for(i=;i<=c;i++){
dp[i]=;
for(j=;j<i;j++){
if(m[j].w>m[i].w&&m[j].s<m[i].s){
if(dp[j]+>=dp[i]){
dp[i]=dp[j]+;
m[i].l=j;
if(dp[i]>dp[ans])ans=i;
}
}
}
}
printf("%d\n",dp[ans]);
while(m[ans].l!=){
// printf("%d %d ",m[ans].w,m[ans].s);
printf("%d\n",m[ans].n);
ans=m[ans].l;
}
// printf("%d %d ",m[ans].w,m[ans].s);
printf("%d\n",m[ans].n);
return ;
}

hdu1160 dp的更多相关文章

  1. HDU1160(KB12-J DP)

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. dp求顺序hdu1160

    题意是仅仅求一次的顺序.先依照速度从大到小排序,速度想等到按体重增序排列. 然后基本就变成了求已定顺序序列的最长递增序列递增,跟那个求一致最大序列和的基本一致. dp[i]里存储的是到当前i最大的递增 ...

  3. hdu1160简单dp最长下降子序列

    /* 简单dp,要记录顺序 解:先排序,然后是一个最长下降子序列 ,中间需记录顺序 dp[i]=Max(dp[i],dp[j]+1); */ #include<stdio.h> #incl ...

  4. HDU1160 FatMouse's Speed —— DP

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

  5. DP总结 ——QPH

    常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一 ...

  6. DP一下,马上出发

    简单DP i.May I ask you for a dance(体舞课软广植入) 这题的状态转移方程为:dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);( ...

  7. dp 入门

    1.HDU 1003 求最长连续相加的和. dp[i]=max(a[i],dp[i-1]+a[i]); dp[i]表示以 i 结尾的最大值. 再开/个strat去标记从哪里开始. #include & ...

  8. 「kuangbin带你飞」专题十二 基础DP

    layout: post title: 「kuangbin带你飞」专题十二 基础DP author: "luowentaoaa" catalog: true tags: mathj ...

  9. POJ3616 Milking Time —— DP

    题目链接:http://poj.org/problem?id=3616 Milking Time Time Limit: 1000MS   Memory Limit: 65536K Total Sub ...

随机推荐

  1. react notes

    jsx 在JSX中嵌入用户输入是安全的,默认情况下, 在渲染之前, React DOM 会格式化(escapes) JSX中的所有值. 从而保证用户无法注入任何应用之外的代码. 在被渲染之前,所有的数 ...

  2. HTTP协议的请求与响应和CSS属性和定位

    HTTP协议的请求与响应和CSS属性和定位 一.HTTP协议 1.1 HTTP定义 HTTP(Hypertext Transport Protocol),超文本传输协议. 一种详细规定了浏览器和web ...

  3. Python解析Wav文件并绘制波形的方法

    资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...

  4. Laravel JsonResponse数组获取

    有一个JsonResponse数据的格式如下: object(Illuminate\Http\JsonResponse)[474] protected 'data' => string '{&q ...

  5. 新手如何正确使用CLion之输出hello world

    以前只使用过vc6.0,在用过jetbrain的pycharm后就考虑换个c++的编译器了,第一还是考虑了vs2017但用惯了色彩鲜艳的jb产品后竟然有点不习惯vs,最后还是果断选择了jb的CLion ...

  6. 使用API失效供应商地址Demo(转)

    原文地址  使用API失效供应商地址Demo DECLARE lv_return_status ) := NULL; ln_msg_count NUMBER; lv_errmsg ); lt_vend ...

  7. CSS3提供的transition动画

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  8. 用Maven构建Mahout项目

    转载请注明出处:http://blog.fens.me/hadoop-mahout-maven-eclipse/ Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, ...

  9. 遍历HashMap的方法(四)

    Map map = new HashMap(); for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { Map.Entr ...

  10. python3.6 连接mysql数据库

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...