hdu_1025(LIS Nlog(N)算法)
2024-09-21 05:12:28
题意:自己慢慢读吧。大概就是道路两边建路,给出建路需求,要求两条路不能有交叉,问最多可以建多少条路。
题解:一看数据范围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 ;
}
最新文章
- zookeeper安装
- OAuth2.0说明文档
- 《Java4Android》视频学习笔记——抽象类和抽象函数
- JQuery操作HTML文档
- STM32的I2C通信
- Permutation Sequence [LeetCode]
- WEBService动态调用代码
- JS数组2(冒泡排列、数组里面查找数据)
- redis专题--slow log详解
- YTU 2602: 熟悉题型——类设计( 矩形类定义【C++】)
- Linux中 pid_t 类型的定义.
- Maximum Depth of Binary Tree 解答
- xmlplus 组件设计系列之五 - 选项卡
- Tornado-数据库(torndb包)
- 你不知道的JavaScript--Item24 ES6新特性概览
- Avalon MM 总线
- 对BRD、MRD、PRD、FSD四类产品文档的理解
- 阿里架构师的工作总结:Spring Cloud在架构演进中起到的作用
- idea常用快捷键及自定义快捷键汇总
- CSS的进一步深入(更新中&#183;&#183;&#183;)
热门文章
- 【model模型传入view的数据类型错误】传入字典的模型项的类型为“System.Data.Entity.Infrastructure.DbQuery`1[MapScience.PovertyAlleviation.Web.Models.Qu
- Android中style和theme的区别
- P神的SDFZ考试题 C题
- HTML知识点记录
- Linq To EF
- 1.php开发环境安装
- JS中将一个值转换为字符串的3种方法
- CommonJS, AMD ,CMD之间的关系
- CSS制作波浪线
- PHP连接LDAP进行登录验证