dp求顺序hdu1160
题意是仅仅求一次的顺序。先依照速度从大到小排序,速度想等到按体重增序排列。
然后基本就变成了求已定顺序序列的最长递增序列递增,跟那个求一致最大序列和的基本一致。
dp【i】里存储的是到当前i最大的递增序列个数最大的数。
dp[i+1]就是在a【i+1】大于前面的a【j】的情况下,dp【i+1】=dp【j】+1;
输出的就是从最大的dp【】值从后往前输出,所以用了个栈改成从前往后。
以为题意仅仅输出一个正确序列就好。
思路是从開始的结构体排序。打一打就想出来的。bug,调了一天。确定dp【】最大值得时候和
须要记录角标。開始就弄混了,这个bug也是通过出数据找出来的。
第一次交没有输出序列个数,wa了2次。
ac代码:
#include<cstdio>
#include<algorithm>
#include<stack>
using namespace std;
stack<int > s; struct mice
{
int x,y,z;
bool operator < (const mice&b ) const{ if(y==b.y) return x<b.x;
return y>b.y;
}
}a[1010];
int dp[1010];
int main()
{
int i=0;
while(scanf("%d%d",&a[i].x,&a[i].y)!=EOF) { a[i].z=i+1; i++; }
// printf("\n"); // printf("i==%d\n",i); sort(a,a+i); // for(int j=0;j<i;j++) printf("%d %d %d\n",a[j].x,a[j].y,a[j].z); int maxx = 0,maxIndex=0; for(int j=0;j<i;j++)
for(int k=0;k<j;k++){
if(a[k].x<a[j].x ) dp[j]=max(dp[k]+1,dp[j]);
if(dp[j]>maxx) { maxx = dp[j]; maxIndex = j; } }
// printf("maxx==%d\n",maxx); // for(int j=0;j<i;j++) printf("%d ",dp[j]);
// printf("\n"); // printf("%d\n",a[maxx].z);
// printf("%d\n",dp[maxx]+1);
s.push(a[maxIndex].z);
printf("%d\n",dp[maxIndex]+1);
// printf("%d\n",a[maxIndex].z);
dp[maxIndex]-=1;
for(int k=maxIndex-1;k>=0;k--){ if(dp[k]==dp[maxIndex]){
// printf("%d\n",dp[k]);
// printf("%d\n",a[k].z); s.push(a[k].z);
dp[maxIndex]-=1;
}
} while(!s.empty()){
printf("%d\n",s.top());
s.pop();
} return 0;
}
/**
1 5
1 3
2 4
2 2
3 3
4 4
1 3
4 2
5 1
^Z 1 5 1
2 4 3
4 4 6
1 3 2
1 3 7
3 3 5
2 2 4
4 2 8
5 1 9
0 1 2 0 0 2 1 3 4
4
5
3
1
*/
/**
1 5
1 3
2 4
2 2
3 3
4 4
1 3
4 2
5 1
^Z 1 5 1
2 4 2
3 3 3
4 2 4
5 1 5
0 1 2 3 4
5
1
2
3
4
5 */
dp求顺序hdu1160的更多相关文章
- HDU3853-LOOPS(概率DP求期望)
LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Total Su ...
- HDU 4514 - 湫湫系列故事——设计风景线 - [并查集判无向图环][树形DP求树的直径]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4514 Time Limit: 6000/3000 MS (Java/Others) Memory Li ...
- 浅谈关于树形dp求树的直径问题
在一个有n个节点,n-1条无向边的无向图中,求图中最远两个节点的距离,那么将这个图看做一棵无根树,要求的即是树的直径. 求树的直径主要有两种方法:树形dp和两次bfs/dfs,因为我太菜了不会写后者这 ...
- Poj 2096 (dp求期望 入门)
/ dp求期望的题. 题意:一个软件有s个子系统,会产生n种bug. 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中. 求找到所有的n种bug,且每个子系统都找到bug,这样所要 ...
- hdu4035 Maze (树上dp求期望)
dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 ...
- POJ2096 Collecting Bugs(概率DP,求期望)
Collecting Bugs Ivan is fond of collecting. Unlike other people who collect post stamps, coins or ot ...
- POJ 2096 (dp求期望)
A - Collecting Bugs Time Limit:10000MS Memory Limit:64000KB 64bit IO Format:%I64d & %I64 ...
- loj 1038(dp求期望)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25915 题意:求一个数不断地除以他的因子,直到变成1的时候 除的次 ...
- 数位DP 求K进制下0~N的每个数每位上出现的数的总和
好久没写博客了,因为感觉时间比较紧,另一方面没有心思,做的题目比较浅也是另一方面. 热身赛第二场被血虐了好不好,于是决定看看数位DP吧. 进入正题: 如题是一道经(简)典(单)的数位dp. 第一步,对 ...
随机推荐
- 九度oj 题目1491:求1和2的个数
题目描述: 给定正整数N,函数F(N)表示小于等于N的自然数中1和2的个数之和,例如:1,2,3,4,5,6,7,8,9,10序列中1和2的个数之和为3,因此F(10)=3.输入N,求F(N)的值,1 ...
- RAISERROR 的用法(转)
raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql server 2005的帮助 ] 其语法如下: RAISERROR ( { msg_id | msg ...
- P3146 [USACO16OPEN]248 (区间DP)
题目描述 给定一个1*n的地图,在里面玩2048,每次可以合并相邻两个(数值范围1-40),问最大能合出多少.注意合并后的数值并非加倍而是+1,例如2与2合并后的数值为3. 这道题的思路: 状态: ...
- Ionic2如何下拉刷新和上拉加载
下拉刷新: <ion-content> <ion-refresher (ionRefresh)="doRefresh($event)"> <ion-r ...
- Nk 1430 Divisors(因子数与质因数)
Time Limit: 5000 ms Memory Limit: 10000 kB Total Submit : 432 (78 users) Accepted Submit : 10 ...
- AnyChart创建实时仪表
AnyChart创建实时仪表 简述: AnyChart是一款基于Flash和HTML5的图表.仪表控件,所包含的图表类型众多和跨平台以及跨浏览器是该产品的主要特点和优点,另外该产品基于XML文件作为数 ...
- 关于代码调试de那些事
原文出处:http://www.wklken.me/posts/2014/11/23/how-to-debug.html 关于代码调试de那些事 1.你得明白你在做什么, 保持清醒 2.想清楚了再写代 ...
- Android UI设计--半透明效果对话框及activity(可做遮罩层)
下面是style的一些属性及其解释 <style name="dialog_translucent" parent="@android:style/Theme.Di ...
- NRapid前言
开发工具 Visual Studio 2017 数据库 SQL Server 2012 相关技术 Asp.net MVC
- Java生成读取条形码和二维码图片
原文:http://www.open-open.com/code/view/1453520722495 package zxing; import com.google.zxing.BarcodeFo ...