HDU1160FatMouse's Speed
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<set>
#include<stack>
using namespace std;
const int maxn=;
struct point
{
int w,s,per,id;
}p[maxn];
int cmp(point a,point b)
{
return a.s>b.s;
}
int dp[maxn];
int main()
{
int i,j,k,n,m;
n=;
memset(dp,,sizeof(dp));
while(scanf("%d%d",&p[n].w,&p[n].s)!=EOF)
{
p[n].id=n;
p[n].per=;
n++;
}
sort(p+,p+n,cmp);
int max;
dp[]=;//dp[i]记录以第i个元素结尾的最长递增的长度
for(i=;i<n;i++)
{
max=;
for(j=;j<i;j++)
{
if(p[j].w<p[i].w && p[j].s>p[i].s)
{
if(dp[j]>=max)
{
max=dp[j];
p[i].per=j;//记录i位置的前驱
}
}
dp[i]=max+;
}
}
max=-0x3f3f3f3f;
int end;
for(i=;i<n;i++)
{
if(max<=dp[i])
{
max=dp[i];
end=i;
}
}
printf("%d\n",max);
stack<int> ok;
while(end!=)
{
ok.push(end);
end=p[end].per;
}
while(!ok.empty())
{
printf("%d\n",p[ok.top()].id);
ok.pop();
}
return ;
} /*二分写法*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
struct X{
int s,w,sb;
};
bool cmp(X a,X b)
{
return (a.s>b.s)||(a.s==b.s&&a.w>b.w);//这里排序注意了,由于本题数据水的不能再水,a.w<b.w也过了,正解应该是a.w>b.w
}
X xx[];
int pre[];
int fnm[];
int shuchu[];
int main()
{
int i=,n=,w,s;
while(scanf("%d%d",&w,&s)!=EOF)
{
xx[n].w=w;
xx[n].s=s;
xx[n].sb=n++;
}
n--;
sort(xx+,xx+n+,cmp);/*
for(i=1;i<=n;i++)
printf("%d %d\n",xx[i].w,xx[i].s);*/
int lsb=,j,l,r;
fnm[]=;
pre[fnm[]]=-;
for(i=;i<=n;i++)
{
l=,r=lsb;
while (l<=r) //二分查找
{
int mid = (l+r)>>;
if (xx[fnm[mid]].w < xx[i].w)
l=mid+;
else
r=mid-;
}
j=l;
if(j>lsb)
lsb++;
fnm[j]=i;//存下标,相当于c[j]=a[i];
if(j!=)//fnm小标从0开始,所以要判断第一个
pre[i]=fnm[j-];//j-1的元素肯定是最长递增中的元素
else
pre[i]=-;
}
printf("%d\n",lsb+);
int xsb=fnm[lsb];
i=;
while(pre[xsb]!=-)
{
shuchu[i++]=xx[xsb].sb;
xsb=pre[xsb];
}
printf("%d\n",xx[xsb].sb);
for(i=lsb-;i>=;i--)
printf("%d\n",shuchu[i]);
return ;
}
HDU1160FatMouse's Speed的更多相关文章
- HDU-1160-FatMouse's Speed(线性DP,LIS)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 动态规划:HDU1160-FatMouse's Speed(记录动态规划状态转移过程)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU-1160-FatMouse's Speed(DP, 最长递增子序列)
链接: https://vjudge.net/problem/HDU-1160 题意: FatMouse believes that the fatter a mouse is, the faster ...
- hdu FatMouse's Speed 动态规划DP
动态规划的解决方法是找到动态转移方程. 题目地址:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=3§ionid ...
- LYDSY模拟赛day2 Dash Speed
/* 弃坑 */ #include<cstdio> #include<algorithm> using namespace std; ,M=N*; ],nxt[N<< ...
- FatMouse's Speed——J
J. FatMouse's Speed FatMouse believes that the fatter a mouse is, the faster it runs. To disprove th ...
- OpenVZ VPS加速方案–Final Speed
body,td { font-family: 微软雅黑; font-size: 10pt } OpenVZ VPS加速方案–Final Speed OpenVZ VPS加速方案–Final Spe ...
- UNITY3D单词学习 speed和velocity的区别
在日常用语中,这两个词没有区别,可以通用. 而在物理学里,velocity 是一个矢量(vector quantity)表示起点与终点间直线距离的长度除以所用时间所得的量,并注明方向;而 speed ...
- HD1160FatMouse's Speed(最长单调递增子序列)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- chmod 777 修改权限
http://william71.blogbus.com/logs/33484772.html 在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限.例如我 ...
- 解决instance中文命名导致nova list报错问题
当创建instance之后,如果使用英文命名,执行nova list的时候,无问题,但是,如果instance中出现中文,执行nova list的时候,会报以下错误: [root@controller ...
- 谷歌Volley网络框架讲解——Network及其实现类
我们看到Network接口只有一个实现类BasicNetwork,而HttpStack有两个实现类. BasicNetwork这个类是toolbox工具箱包里的,实现了Network接口. 先来看下N ...
- MongoDB复制集原理
版权声明:本文由孔德雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/136 来源:腾云阁 https://www.qclo ...
- java.util.ConcurrentModificationException 多线程访问ArrayList引起
http://blog.csdn.net/androiddevelop/article/details/21509345 Java ConcurrentModificationException ...
- codevs 5967 [SDOI2017]相关分析
[题解] /* WA://50分 last:(r-l+1)<-- (r-mid) (r-l+1)<-- (mid-l+1) now:int mid=l+r>>1; tr[l ...
- 【BZOJ2815】[ZJOI2012]灾难 拓扑排序+LCA
[BZOJ2815][ZJOI2012]灾难 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从 ...
- 【BZOJ3387】[Usaco2004 Dec]Fence Obstacle Course栅栏行动 线段树
[BZOJ3387][Usaco2004 Dec]Fence Obstacle Course栅栏行动 Description 约翰建造了N(1≤N≤50000)个栅栏来与牛同乐.第i个栅栏的z坐标为[ ...
- Shell脚步之监控iostat数据
在性能测试中,进行iostat监控数据显示太不美观,看起来很痛苦,如下图 为了显示美观,写个shell脚本进行改造,如下: #! /bin/bash interval= ]; then interva ...
- 设备加速传感器(accelerometer) ---- HTML5+
模块:Accelerometer Accelerometer模块管理设备加速度传感器,用于获取设备加速度信息,包括x(屏幕水平方向).y(垂直屏幕水平方向).z(垂直屏幕平面方向)三个方向的加速度信息 ...