hdu--(1025)Constructing Roads In JGShining's Kingdom(dp/LIS+二分)
Constructing Roads In JGShining's Kingdom
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 16047 Accepted Submission(s): 4580
Half
of these cities are rich in resource (we call them rich cities) while
the others are short of resource (we call them poor cities). Each poor
city is short of exactly one kind of resource and also each rich city is
rich in exactly one kind of resource. You may assume no two poor cities
are short of one same kind of resource and no two rich cities are rich
in one same kind of resource.
With the development of industry,
poor cities wanna import resource from rich ones. The roads existed are
so small that they're unable to ensure the heavy trucks, so new roads
should be built. The poor cities strongly BS each other, so are the rich
ones. Poor cities don't wanna build a road with other poor ones, and
rich ones also can't abide sharing an end of road with other rich ones.
Because of economic benefit, any rich city will be willing to export
resource to any poor one.
Rich citis marked from 1 to n are located in Line I and poor ones marked from 1 to n are located in Line II.
The
location of Rich City 1 is on the left of all other cities, Rich City 2
is on the left of all other cities excluding Rich City 1, Rich City 3
is on the right of Rich City 1 and Rich City 2 but on the left of all
other cities ... And so as the poor ones.
But as you know, two
crossed roads may cause a lot of traffic accident so JGShining has
established a law to forbid constructing crossed roads.
For example, the roads in Figure I are forbidden.

In
order to build as many roads as possible, the young and handsome king
of the kingdom - JGShining needs your help, please help him. ^_^
test case will begin with a line containing an integer n(1 ≤ n ≤
500,000). Then n lines follow. Each line contains two integers p and r
which represents that Poor City p needs to import resources from Rich
City r. Process to the end of file.
You should tell JGShining what's the maximal number of road(s) can be built.
1 2
2 1
3
1 2
2 3
3 1
My king, at most 1 road can be built.
Case 2:
My king, at most 2 roads can be built.
Huge input, scanf is recommended.
//#define LOCAL
#include<cstdio>
#include<cstring>
const int maxn=;
const int inf=0x3f3f3f3f;
int str[maxn],dp[maxn],sac[maxn];
int res; int binary(int v,int n)
{
int ll=,rr=n,mid;
while(ll<=rr)
{
mid=ll+(rr-ll)/;
if(sac[mid]<=v&&sac[mid]!=-)
ll=mid+;
else
rr=mid-;
}
return ll;
}
void LIS(int n)
{
res=;
// for(int i=1;i<=n;i++)
// sac[i]=inf;
memset(sac,-,sizeof(int)*(n+));
for(int i=;i<=n;i++)
{
dp[i]=binary(str[i],res);
if(res<dp[i])
res=dp[i];
if(str[i]<sac[dp[i]]||sac[dp[i]]==-)
sac[dp[i]]=str[i];
}
}
int main()
{
#ifdef LOCAL
freopen("test.in","r",stdin);
#endif int n,i,p,r,ct=;
while(scanf("%d",&n)!=EOF)
{
for( i=;i<=n;i++){
scanf("%d%d",&p,&r);
str[p]=r;
}
LIS(n);
printf("Case %d:\n",ct++);
if(res==)
printf("My king, at most 1 road can be built.\n");
else
printf("My king, at most %d roads can be built.\n",res);
printf("\n");
}
return ;
}
hdu--(1025)Constructing Roads In JGShining's Kingdom(dp/LIS+二分)的更多相关文章
- HDOJ(HDU).1025 Constructing Roads In JGShining's Kingdom (DP)
HDOJ(HDU).1025 Constructing Roads In JGShining's Kingdom (DP) 点我挑战题目 题目分析 题目大意就是给出两两配对的poor city和ric ...
- HDU 1025:Constructing Roads In JGShining's Kingdom(LIS+二分优化)
http://acm.hdu.edu.cn/showproblem.php?pid=1025 Constructing Roads In JGShining's Kingdom Problem Des ...
- HDU 1025 Constructing Roads In JGShining's Kingdom(二维LIS)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- [ACM] hdu 1025 Constructing Roads In JGShining's Kingdom (最长递增子序列,lower_bound使用)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- hdu 1025:Constructing Roads In JGShining's Kingdom(DP + 二分优化)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- HDU 1025 Constructing Roads In JGShining's Kingdom[动态规划/nlogn求最长非递减子序列]
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- HDU 1025 Constructing Roads In JGShining's Kingdom(DP+二分)
点我看题目 题意 :两条平行线上分别有两种城市的生存,一条线上是贫穷城市,他们每一座城市都刚好只缺乏一种物资,而另一条线上是富有城市,他们每一座城市刚好只富有一种物资,所以要从富有城市出口到贫穷城市, ...
- HDU 1025 Constructing Roads In JGShining's Kingdom(求最长上升子序列nlogn算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025 解题报告:先把输入按照r从小到大的顺序排个序,然后就转化成了求p的最长上升子序列问题了,当然按p ...
- hdu 1025 Constructing Roads In JGShining’s Kingdom 【dp+二分法】
主题链接:pid=1025">http://acm.acmcoder.com/showproblem.php?pid=1025 题意:本求最长公共子序列.但数据太多. 转化为求最长不下 ...
- hdu 1025 Constructing Roads In JGShining's Kingdom
本题明白题意以后,就可以看出是让求最长上升子序列,但是不知道最长上升子序列的算法,用了很多YY的方法去做,最后还是超时, 因为普通算法时间复杂度为O(n*2),去搜了题解,学习了一下,感觉不错,拿出来 ...
随机推荐
- 主框架搭建demo
- (void)viewDidLoad { [super viewDidLoad]; [self setUpAllChildViewController]; } /** ...
- mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?
原文地址: http://www.cnblogs.com/stringzero/p/5707467.html 原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int ...
- 搭建本地的git仓库
折腾了快一天了,终于搭建成功了. 分享一下搭建的步骤: 一.GIT仓库的创建 1. adduser git 2. passwd git 此例设置git的密码为123456 3. cd /home/gi ...
- Linux常用命令大杂烩(持续更新)
1.vimn,$s/findstr/targetstr/g #替换n到文档末尾的所有字符串:% s/^.\{4\}//g #将当前缓冲区的所有行的前4个字符删除 2.每周日早上3:30删除日志30 3 ...
- hdu 4883 思维题
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4883 TIANKENG’s restaurant Time Limit: 2000/1000 MS (Ja ...
- hdu 5950 Recursive sequence 矩阵快速幂
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 认识DOS
实验一.认识DOS实验 专业 物联网工程 姓名 叶慧敏 学号 201306104139 一. 实验目的 (1)认识DOS: (2)掌握命令解释程序的原理: (3)掌握简单的DOS调用方法: (4)掌 ...
- 【转】Github 上传代码
版权声明:欢迎转载(^ω^)~不过转载请注明原文出处:http://blog.csdn.net/catglory ლ(╹◡╹ლ) 写在前面: 弄了两小时终于搞定了,把经验整理下,方便我以后上传代码XD ...
- HTML5Canvas标签
- Android中view动画
[1]透明 //点击按钮 实现iv 透明的效果 动画 public void click1(View v) { //1.0意味着着完全不透明 0.0意味着完全透明 AlphaAnimation aa ...