hdu 1025 n*logn最长上升子序列
/*
TLE
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn=5e5+;
int a[maxn],b[maxn],c[maxn],f[maxn<<];
inline int max(int a,int b){return a>b?a:b;}
void swap(int &a,int &b){int t=a;a=b;b=t;}
void qsort(int l,int r)
{
if(l<r)
{
int key=b[l],i=l,j=r;
while(i!=j)
{
while(b[j]>=key && i<j) j--;
while(b[i]<=key && i<j) i++;
if(i<j) swap(b[i],b[j]);
}
b[l]=b[i];b[i]=key;
qsort(l,i-);
qsort(i+,r);
}
}
int binary_search(int l,int r,int val)
{
int mid;
while(l<=r)
{
mid=(l+r)>>;
if(c[mid]>val) r=mid-;
else if(c[mid]==val) return mid;
else l=mid+;
}
return -;
}
void updata(int pos,int v,int l,int r,int rt)
{
if(l==r)
{
f[rt]=v;return;
}
int mid=(l+r)>>;
if(pos<=mid) updata(pos,v,l,mid,rt<<);
else updata(pos,v,mid+,r,rt<<|);
}
int query(int L,int R,int l,int r,int rt)
{
if(L<=l && r<=R)
return f[rt];
int mid=(l+r)>>;
int ans;
if(L<=mid) ans=query(L,R,l,mid,rt<<);
if(R>mid) ans=max(ans,query(L,R,mid+,r,rt<<|));
return ans;
}
int main()
{
int icase=,n,tmp,i,cnt;
while(~scanf("%d",&n))
{
for(i=;i<=n;i++)
{
scanf("%d%d",&tmp,a+i);b[i]=a[i];
}
qsort(,n);cnt=;c[]=b[];
for(i=;i<=n;i++)
if(b[i]!=b[i-])
c[++cnt]=b[i];
memset(f,,sizeof(f));
int ans=,maxv,x;
for(i=;i<=n;i++)
{
x=binary_search(,cnt,a[i]);
if(x>) maxv=query(,x-,,cnt,);
else maxv=;
updata(x,maxv+,,cnt,);
if(maxv+>ans) ans=maxv+;
}
printf("Case %d:\n",++icase);
if(ans==) printf("My king, at most 1 road can be built.\n\n");
else printf("My king, at most %d roads can be built.\n\n",ans);
}
return ;
}
/*
2
1 2
2 1
3
1 2
2 3
3 1
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn=5e+;
int dp[maxn],f[maxn]; int upper_bound(int l,int r,int val)//二分求上界
{
int mid,ans=-;
while(l<=r)
{
mid=(l+r)>>;
if(dp[mid]>=val) ans=mid,r=mid-;
else l=mid+;
}
return ans;
} int main()
{
int icase=,n,i,cnt,x,y;
while(~scanf("%d",&n))
{
for(i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
f[x]=y;
}
dp[]=f[];cnt=;
for(i=;i<=n;i++)
{
x=upper_bound(,cnt,f[i]);
if(x==-) dp[++cnt]=f[i];
else dp[x]=f[i];
}
printf("Case %d:\n",++icase);
if(cnt==) printf("My king, at most 1 road can be built.\n\n");
else printf("My king, at most %d roads can be built.\n\n",cnt);
}
return ;
}
hdu 1025 n*logn最长上升子序列的更多相关文章
- HDU 1159 Common Subsequence 最长公共子序列
HDU 1159 Common Subsequence 最长公共子序列 题意 给你两个字符串,求出这两个字符串的最长公共子序列,这里的子序列不一定是连续的,只要满足前后关系就可以. 解题思路 这个当然 ...
- HDU 1513 Palindrome(最长公共子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 解题报告:给定一个长度为n的字符串,在这个字符串中插入最少的字符使得这个字符串成为回文串,求这个 ...
- hdu 1159 Common Subsequence(最长公共子序列 DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...
- HDU 3998 Sequence (最长上升子序列+最大流)
参考链接:http://www.cnblogs.com/gentleh/archive/2013/03/30/2989958.html 题意:求一个序列的最长上升子序列,及其个数(注意:两个最长上升子 ...
- HDU 4604 Deque 二分最长上升子序列
题目大意就是给一个deque 然后有n个数,依次进行操作,每种操作,你可以把这个数放在deque首部,也可以放在尾部,也可以扔掉不管,但是要保证deque中的数是非递减的.最要求deque中最长能是多 ...
- [ An Ac a Day ^_^ ] HDU 1257 基础dp 最长上升子序列
最近两天在迎新 看来只能接着水题了…… 新生培训的任务分配 作为一个有担当的学长 自觉去选了动态规划…… 然后我觉得我可以开始水动态规划了…… 今天水一发最长上升子序列…… kuangbin有nlog ...
- hdu 5748 Bellovin【最长上升子序列】
题目链接:https://vjudge.net/contest/148584#problem/A 题目大意: 解题思路:题目要求为:输出与已知序列的每一个元素的f(i)(f(i)的定义如题)相同的字典 ...
- HDU 4681 string 求最长公共子序列的简单DP+暴力枚举
先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...
- hdu 1080 dp(最长公共子序列变形)
题意: 输入俩个字符串,怎样变换使其所有字符对和最大.(字符只有'A','C','G','T','-') 其中每对字符对应的值如下: 怎样配使和最大呢. 比如: A G T G A T G - G ...
随机推荐
- SQL数据库从高版本导入低版本
1. 打开高版本数据库右键–>任务–>生成脚本–>高级–>选择脚本兼容的版本(也就是低版本)–>拉倒最下面选择架构和数据 2. 在低版本里面,先新建一个数据库,名称要和脚 ...
- 浅谈JavaScript字符串拼接
本文给大家汇总介绍了几种javascript中字符串拼接的方法,十分的简单实用,有需要的小伙伴可以参考下. 在JavaScript中会经常遇到字符串拼接,但是如果要拼接的字符串过长就比较麻烦了. 如果 ...
- file_get_contents函数
今天迁移一个SDK项目到新的机子上,发现项目无法跑起来,报500错误,通过分析,发现原来是file_get_contents函数再作怪,代码如下 public function __construct ...
- HTTP-点开浏览器输入网址背后发生的那点事
前言 Internet最早来源于美国国防部ARPANet,1969年投入运行,到现在已有很长一段路了,各位想要了解发展史可以百度下,这里就不多说了. 现如今当我们想要获取一些资料,首先是打开某个浏览器 ...
- Nginx http重定向到https时,post请求变为get的问题
Http协议是有状态码的,比较熟悉的状态码是200,代表链接OK,还有404和403,一个是not found,另一个是forbidden.Not found不用多说,可能是地址栏输入有误,或者是网页 ...
- vim粘贴取消自动缩进
Vim 复制粘贴探秘 Vim 作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情.每当学会了vim的一个新功能,就会很大地提高工作效率.有人使用vim几 十年,还没有完全掌握vi ...
- tcl之变量-数组array
- 【PHP】php中json_decode()和json_encode()
1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...
- list,tuple,set,dict汇总
有序/无序 追加/删除元素 元素可/不可重复 元素类型 创建方式 List 有序 可追加删除追加:list.append(item),list.insert(index,item)删除:list. ...
- 模块numpy的用法
https://blog.csdn.net/qq351469076/article/details/78817378 机器学习三剑客之Numpy: https://www.jianshu.com/p/ ...