题意:自己慢慢读吧。大概就是道路两边建路,给出建路需求,要求两条路不能有交叉,问最多可以建多少条路。

题解:一看数据范围500000,应该是dp,再画个图模拟一下,发现实质就是求最长上升子序列,很自然的数据要求nlogn算法

算法讲解在之前写过,这里直接贴过来:点我哦

坑:输出两个坑,一个是road和roads的区别,还有一个是案例之间有空行

code:

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = ;
int q[N];
int stk[N];
int BSearch(int l,int r, int c)
{
while(l<=r){//注意这里应该是定于的时候还要再判断一次。
int m = (l+r)>>;
if(stk[m]==c) {
//printf("id = %d\n",m);
return m;
}
else if(stk[m]<c) l = m+;
else if(stk[m]>c) r = m-;
}
//printf("id = %d\n",l);
return l;
}
int main()
{
int n;
int c = ;
while(~scanf("%d",&n))
{
int cnt = ;
int t1,t2;
memset(stk,-,sizeof(stk));
for(int i = ; i < n; i++){
scanf("%d%d",&t1,&t2);
q[t1] = t2;
}
for(int i = ; i <= n; i++){
if(q[i]>stk[cnt-]){
stk[cnt++] = q[i];
}
else {
int id = BSearch(,cnt-,q[i]);
stk[id] = q[i];
}
}
cnt--;
if(cnt!=)
printf("Case %d:\nMy king, at most %d roads can be built.\n\n",c++,cnt);
else
printf("Case %d:\nMy king, at most %d road can be built.\n\n",c++,cnt);
}
return ;
}

最新文章

  1. zookeeper安装
  2. OAuth2.0说明文档
  3. 《Java4Android》视频学习笔记——抽象类和抽象函数
  4. JQuery操作HTML文档
  5. STM32的I2C通信
  6. Permutation Sequence [LeetCode]
  7. WEBService动态调用代码
  8. JS数组2(冒泡排列、数组里面查找数据)
  9. redis专题--slow log详解
  10. YTU 2602: 熟悉题型——类设计( 矩形类定义【C++】)
  11. Linux中 pid_t 类型的定义.
  12. Maximum Depth of Binary Tree 解答
  13. xmlplus 组件设计系列之五 - 选项卡
  14. Tornado-数据库(torndb包)
  15. 你不知道的JavaScript--Item24 ES6新特性概览
  16. Avalon MM 总线
  17. 对BRD、MRD、PRD、FSD四类产品文档的理解
  18. 阿里架构师的工作总结:Spring Cloud在架构演进中起到的作用
  19. idea常用快捷键及自定义快捷键汇总
  20. CSS的进一步深入(更新中&#183;&#183;&#183;)

热门文章

  1. 【model模型传入view的数据类型错误】传入字典的模型项的类型为“System.Data.Entity.Infrastructure.DbQuery`1[MapScience.PovertyAlleviation.Web.Models.Qu
  2. Android中style和theme的区别
  3. P神的SDFZ考试题 C题
  4. HTML知识点记录
  5. Linq To EF
  6. 1.php开发环境安装
  7. JS中将一个值转换为字符串的3种方法
  8. CommonJS, AMD ,CMD之间的关系
  9. CSS制作波浪线
  10. PHP连接LDAP进行登录验证