题意:贫穷和富有的城市都按顺序1-n排列,需要在中间建造尽可能多的道路,最多可以建造多少条?

解:如果条件这样给出,贫穷的城市按顺序排列,并且按顺序给出每个贫穷城市需要的资源,那么能建造的最多的道路数就是这个顺序中的最长上升子序列的长度。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <deque>
#include <map> using namespace std;
typedef long long ll; const int maxn=1e5+; ll n,a[maxn];
ll dp[maxn]; ll lower_bound(ll *a,int x,int y,ll v){
int m;
while(x<y){
m=x+(y-x)/;
if(a[m]>=v)y=m;
else x=m+;
}
return x;
} ll q[maxn],r[maxn]; int main(){
int o=;
while(scanf("%lld",&n)!=EOF){
for(int i=;i<n;i++){
scanf("%lld%lld",&q[i],&r[i]);
}
for(int i=;i<n;i++){
a[q[i]-]=r[i]-;
}
int m=;
for(int i=;i<n;i++){
if(m==||dp[m-]<a[i]){
dp[m++]=a[i];
}else{
ll j=lower_bound(dp,,m,a[i]);
dp[j]=a[i];
}
/*验证正确性
for(int j=0;j<m;j++){
printf("%lld ",dp[j]);
}printf("\n");
*/
}
printf("Case %d:\n",o++);
printf("My king, at most %d road",m);
if(m>)printf("s");
printf(" can be built.\n\n"); }
return ;
}

最新文章

  1. tomcat context配置
  2. docker基本操作
  3. ifconfig
  4. HOG matlab练习
  5. Web前端开发规范文档你需要知道的事--HTML、css、js、文档等需要规范内容
  6. Windows 10 (or 8)Chrome 观看视频发生flash不能加载,即&quot;could&#39;t load plugins&quot;原因之一
  7. Creating a web server in pure C(c/c++ 写web server)
  8. 谨慎使用php的strtotime()函数
  9. UIAlertController 的使用(NS_CLASS_AVAILABLE_IOS(8_0)iOS8以后有效)
  10. JavaScript采用append添加的元素错误
  11. nginx视频直播/点播服务干货分享
  12. gradle学习记录
  13. 561. Array Partition I
  14. Oracle入门知识
  15. 【转】MySQL— 进阶
  16. python爬虫入门---第一篇:获取某一网页所有超链接
  17. MySQL变量变更小记
  18. [转]Servlet 单例多线程
  19. SDUT OJ 2607
  20. pthread多线程编程

热门文章

  1. 介绍求解AX=b:可解性与解的结构
  2. OSPF RFC2740
  3. Leetcode面试题17.20_连续中值
  4. Linux 内核参数管理
  5. 将jsp页面转化为图片或pdf(一)(qq:1324981084)
  6. Java中,一个存在了十几年的bug...
  7. 股票数据获取到了,导入MT4中,是否可以做出很好的量化交易策略呢?
  8. Learning hard 网络编程
  9. 【转载】sql-builder介绍
  10. 错误:EfficientDet网络出现&quot;No boxes to NMS&quot;并且mAP:0.0的解决方案