/*
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最长上升子序列的更多相关文章

  1. HDU 1159 Common Subsequence 最长公共子序列

    HDU 1159 Common Subsequence 最长公共子序列 题意 给你两个字符串,求出这两个字符串的最长公共子序列,这里的子序列不一定是连续的,只要满足前后关系就可以. 解题思路 这个当然 ...

  2. HDU 1513 Palindrome(最长公共子序列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 解题报告:给定一个长度为n的字符串,在这个字符串中插入最少的字符使得这个字符串成为回文串,求这个 ...

  3. hdu 1159 Common Subsequence(最长公共子序列 DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

  4. HDU 3998 Sequence (最长上升子序列+最大流)

    参考链接:http://www.cnblogs.com/gentleh/archive/2013/03/30/2989958.html 题意:求一个序列的最长上升子序列,及其个数(注意:两个最长上升子 ...

  5. HDU 4604 Deque 二分最长上升子序列

    题目大意就是给一个deque 然后有n个数,依次进行操作,每种操作,你可以把这个数放在deque首部,也可以放在尾部,也可以扔掉不管,但是要保证deque中的数是非递减的.最要求deque中最长能是多 ...

  6. [ An Ac a Day ^_^ ] HDU 1257 基础dp 最长上升子序列

    最近两天在迎新 看来只能接着水题了…… 新生培训的任务分配 作为一个有担当的学长 自觉去选了动态规划…… 然后我觉得我可以开始水动态规划了…… 今天水一发最长上升子序列…… kuangbin有nlog ...

  7. hdu 5748 Bellovin【最长上升子序列】

    题目链接:https://vjudge.net/contest/148584#problem/A 题目大意: 解题思路:题目要求为:输出与已知序列的每一个元素的f(i)(f(i)的定义如题)相同的字典 ...

  8. HDU 4681 string 求最长公共子序列的简单DP+暴力枚举

    先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...

  9. hdu 1080 dp(最长公共子序列变形)

    题意: 输入俩个字符串,怎样变换使其所有字符对和最大.(字符只有'A','C','G','T','-') 其中每对字符对应的值如下: 怎样配使和最大呢. 比如: A G T G A T G -  G ...

随机推荐

  1. rem适配方案

    页面布局单位计算 一般有两大类:绝对长度单位和相对长度单位 绝对长度单位: px 像素:是显示屏上显示的每一个小点,为显示的最小单位 in 英寸,1in = 96px cm 厘米,1cm = 37.8 ...

  2. 第27题:Leetcode226: Invert Binary Tree反转二叉树

    翻转一棵二叉树. 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1  思路 如果根节点存在,就交换两个子树的根节点,用递归 ...

  3. v4l2解析

    v4l2的学习建议和流程解析: http://www.cnblogs.com/silence-hust/p/4464291.html 补充: 枚举设备所支持的image format: VIDIOC_ ...

  4. 当GetWindowText获取不到标题时可以用SendMessage

    GetWindowText所有父窗口标题基本可以获取到, 但是当获取父窗口下的子窗口控件标题文本时有时候就没那么好用了, 这个时候可以通过SendMessage发送消息来获取,也很简单,C/C++代码 ...

  5. Node.js 中流操作实践

    本文节选自 Node.js CheatSheet | Node.js 语法基础.框架使用与实践技巧,也可以阅读 JavaScript CheatSheet 或者 现代 Web 开发基础与工程实践 了解 ...

  6. 5458. 【NOIP2017提高A组冲刺11.7】质数

    5458. [NOIP2017提高A组冲刺11.7]质数 (File IO): input:prime.in output:prime.out Time Limits: 1000 ms  Memory ...

  7. (转)iOS静态库与动态库的区别

    一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用 ...

  8. Redis实现之复制(一)

    复制 在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器 ...

  9. luogu3375 【模板】KMP字符串匹配

    nxt数组下标从1开始而a,b数组下标从0开始. #include <iostream> #include <cstring> #include <cstdio> ...

  10. XMind8 Pro激活

    最近使用XMind8 还不错,奈何更多功能是需要升级8Pro才能使用,现已经激活成功,记录下过程: 1.下载XMind8 Update4并且安装,此安装过程简单[安装包太大,无法上传,正在想办法] 2 ...