博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1160 FatMouse's Speed 动态规划
阅读量:4955 次
发布时间:2019-06-12

本文共 1384 字,大约阅读时间需要 4 分钟。

题意:

  要选出一组序列,求老鼠的体重是递增的,而老鼠的速度是递减的这样的序列长度最长是多少,答案有很多种,输出一种即可。

 

坑爹:

  用数组 cd 来记录第i只老鼠前面有多少只是符合条件的,但一开始我是让 j = i - 1 ~ 0 这样找,找到就break,但这样不行,

比如说:

重量      速度        cd数组的值

500       50                1

1000     30                2

1100     90                1

4000     30                2

这样就不对了,是要找到前面能符合条件的最大的cd值。

 

解法:

  将num数组(存输入的值)进行排序,根据老鼠的重量进行由小到大排序,利用 数组 cd 知道最长的序列有多长,然后用了

结构体的成员step来记录当前点的老鼠比他的体重小且速度大的那个老鼠的位置。

 

View Code
1 #include
2 #include
3 #include
4 using namespace std; 5 6 const int maxn = 10000 + 10; 7 8 struct rats 9 {10 int fat;11 int speed;12 int step;13 int count;14 friend bool operator < (rats a,rats b)15 {16 return a.fat
=0; j--)48 {49 if(cd[j]>m)50 {51 if(num[i].speed
num[j].fat)52 {53 m=cd[j];54 cd[i]=cd[j]+1;55 num[i].step=j;56 }57 58 }59 }60 if(cd[i]==0)61 {62 num[i].step=i;63 cd[i]=1;64 }65 }66 67 int MAXN=0;68 int k=0;69 for(i=0; i
MAXN)72 {73 MAXN=cd[i];74 k=i;75 }76 }77 cout<
<
Q;79 while(num[k].step!=k)80 {81 Q.push(num[k]);82 k=num[k].step;83 }84 cout<
<

 

转载于:https://www.cnblogs.com/pcpcpc/archive/2012/09/07/2675693.html

你可能感兴趣的文章
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
hdfs 命令使用
查看>>
prometheus配置
查看>>
定宽320 缩放适配手机屏幕
查看>>
BZOJ 2120 数颜色 【带修改莫队】
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
Codeforces 40 E. Number Table
查看>>
CLR via C#(第3 版)
查看>>
java语法之final
查看>>
关于响应式布局
查看>>
详解ASP.Net 4中的aspnet_regsql.exe
查看>>
python 多进程和多线程的区别
查看>>
hdu1398
查看>>
[android] 网络断开的监听
查看>>
156.Binary Tree Upside Down
查看>>
MongoDB在windows下安装配置
查看>>
Upselling promotion stored procedure
查看>>
sigar
查看>>