ACM模版

描述

题解

离散 + 二分 + 贪心,第一次见这种组合,很有搞头,代码十分有趣,可以好好琢磨琢磨~~~

代码

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <string>
#include <set>using namespace std;const int MAXN = 2e5 + 10;
const int INF = 0x3f3f3f3f;struct node
{int l, r;node() {}node(int l_, int r_) : l(l_), r(r_) {}bool operator < (const node &s) const{return l < s.l || (l == s.l && r < s.r);}
};int n;
int tag[MAXN << 1];
int net[20][MAXN << 1]; //  存储下一个区间的起点
int cnt = 0, limit = 1, limit_;
node A[MAXN];
node B[MAXN];
node tmp[MAXN];
set<node> ss;
set<node>::iterator it;int bs(int x)
{for (int l = 0, r = limit - 1; l < r + 1;){int m = (l + r) >> 1;if (x == tag[m]){return m;}if (x < tag[m]){r = m - 1;}else{l = m + 1;}}return 0;
}bool cmp(const node &a,const node &b)
{return a.r < b.r || (a.r == b.r && a.l > b.l);
}//  离散化
void discrete()
{sort(tag, tag + (n << 1));limit = (int)(unique(tag, tag + (n << 1)) - tag);for (int i = 0; i < n; i++){tmp[i] = A[i] = node(bs(A[i].l), bs(A[i].r));}sort(tmp, tmp + n, cmp);int p = 0;B[cnt++] = tmp[0];for (int i = 1; i < n; ++i){if (tmp[i].l > tmp[p].l){B[cnt++] = tmp[p = i];}}
}void next_set()
{int p = cnt - 1;net[0][limit] = INF;for (int j = limit - 1; j >= 0; j--){if (p > -1 && j == B[p].l){net[0][j] = B[p--].r + 1;}else{net[0][j] = net[0][j + 1];}}for (int i = 0; 1; i++){bool flag = 0;net[i + 1][limit] = INF;for (int k = 0; k < limit; k++){if (net[i][k] == INF){net[i + 1][k] = INF;}else{net[i + 1][k] = net[i][net[i][k]];}if (net[i + 1][k] < INF){flag = 1;}}if (!flag){limit_ = i;break;}}
}int max_cnt(int l, int r)
{if (l > r){return 0;}r++;int ans = 0, p = l;for (int i = limit_; i > -1 && p < r; i--){if (net[i][p] <= r){p = net[i][p];ans += 1 << i;}}return ans;
}bool query(int x)
{int l = A[x].l, r = A[x].r;it = ss.lower_bound(node(l, INF));if (it-- == ss.begin()){return 0;}int l_ = it->l, r_ = it->r;if (l_ > l || r_ < r){return 0;}if (max_cnt(l_, l - 1) + max_cnt(r + 1, r_) + 1 < max_cnt(l_, r_)){return 0;}ss.erase(it);if (l_ < l){ss.insert(node(l_, l - 1));}if (r < r_){ss.insert(node(r + 1, r_));}return 1;
}int main()
{cin >> n;int l, r;for (int i = 0; i < n; i++){scanf("%d%d", &l, &r);A[i] = node(l, r);//  用于离散化tag[i << 1] = l;tag[(i << 1) + 1] = r;}discrete();next_set();printf("%d\n", max_cnt(0, limit - 1));ss.insert(node(0, limit - 1));for (int i = 0; i < n; i++){if (query(i)){printf("%d ", i + 1);}}putchar(10);return 0;
}

蓝桥-ALGO-40-会议中心相关推荐

  1. 蓝桥杯 ALGO-40算法训练 会议中心 (APIO 2009)

    时间限制:2.0s 内存限制:512.0MB 关键字:APIO 2009 会议中心 Siruseri政府建造了一座新的会议中心.许多公司对租借会议中心的会堂很感兴趣,他们希望能够在里面举行会议. 对于 ...

  2. acmore|acmore.cc1211采油区域1212会议中心1213抢掠计划APIO2009

    采油区域: #include <iostream> #include <algorithm> #include <cstdio> #include <cstd ...

  3. SVS为某公司打造先进的无纸化会议中心

    SVS此次为某公司打造一个无纸化会议中心,会场一共设置35个席位,为每个席位布置了桌面液晶升降器+话筒升降器,两者分开升降,可以轻松实现普通会议.多媒体会议.无纸化会议等多种会议模式. 超薄液晶屏升降 ...

  4. 新闻!龙漫集团“有艺翼”行动@Kid.ArtWing+国际少儿艺术展在国家会议中心开幕

    2019年1月26日,2019年1月26日,龙漫集团战略副总裁姚華先生发起的龙漫星际乐园 x 龙漫星际国际动漫谷"有艺翼"行动 ICAE国际儿童画展@Kid.ArtWing+国际少 ...

  5. 新闻!版权猫的进击!ip猫ipMALL.io@Kid.ArtWing+国际少儿艺术展在国家会议中心开幕

    2019年1月26日,2019年1月26日,龙漫集团战略副总裁姚華先生发起的龙漫星际乐园 x 龙漫星际国际动漫谷"有艺翼"行动 ICAE国际儿童画展@Kid.ArtWing+国际少 ...

  6. 大新闻!针对少儿的“有艺翼”与“艺术饭+”行动 ICAE@Kid.ArtWing+国际少儿艺术展在国家会议中心开幕

    2019年1月26日,2019年1月26日,龙漫集团战略副总裁姚華先生发起的龙漫星际乐园 x 龙漫星际国际动漫谷"有艺翼"行动 ICAE国际儿童画展@Kid.ArtWing+国际少 ...

  7. 万科2015苏州城市乐跑音乐节昨日在太湖国际会议中心开跑

    由万科主办的2015苏州城市乐跑昨日在苏州太湖国际会议中心开跑,不过还是要吐槽一下,活动办的不是太地道,一路下来竟然一口补给水都没喝到... 准备出发 分配跟车 半程处 去晚了,人家都跑完了 蜗牛合影 ...

  8. 倾力改造,扩容5倍,这个世界一流会议中心将于泰国曼谷CBD全新亮相

    曼谷2021年8月19日 /美通社/ -- 泰国诗丽吉王后国家会议中心(QSNCC)将于2022年以全新之姿亮相曼谷,新会议中心的容量是旧会议中心的5倍.凭借5亿美元的投资价值,TCC资产(TCC A ...

  9. 1178: [Apio2009]CONVENTION会议中心

    1178: [Apio2009]CONVENTION会议中心 Time Limit: 15 Sec   Memory Limit: 162 MB Submit: 824   Solved: 327 [ ...

  10. BZOJ 1178 APIO 2009 会议中心

    提示: 1. NOIP开车旅行做过的小伙伴肯定能搞定此题 这个题目网上题解很多 , 这里不赘述 , 提供一个可读一些的代码实现: #include <iostream> #include ...

最新文章

  1. ASP.NET2.0 GridView小技巧汇粹
  2. 前端(移动端)开发利器Chrome Developer Tools秘籍(下)
  3. PyTorch版YOLOv4更新了,不仅适用于自定义数据集,还集成了注意力和MobileNet
  4. AutoCAD .NET API二次开发学习指南
  5. 10.1.1 head标签
  6. Django Rest框架 APIView源码调用
  7. 【script】python中的函数式编程
  8. 1.4 Arithmetic Progressions
  9. 《Algorithms》Java 语言特性
  10. 设计模式 (五) 原型模式
  11. 网络拓扑结构_全球网络拓扑测绘这样来实现
  12. .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)
  13. Elasticsearch 创建索引 Java 实现
  14. 云服务器防火墙开放端口访问--电信云服务器
  15. RuntimeWarning: overflow encountered in exp
  16. 算法基础部分-二叉树
  17. python数字求和菜鸟教程_Python Number(数字) | 菜鸟教程
  18. Qt Creator嵌入式python时报错error: ::hypot has not been declared
  19. 【Proteus仿真】ATMEGA16 ADC转化数码管显示
  20. 银行暑期实习生面试经验

热门文章

  1. 超神之路-Redis
  2. 营销圈告诉你,“不涂口红的你”是怎样带动营销的?
  3. Nginx 搭建文件服务器
  4. 算法期中1007. 怪兽训练 (找出有向图中所有的强连通分量的Kosaraju算法)
  5. 基于语义解析任务探究深度模型的组合泛化能力
  6. 使用CentOS7卸载自带jdk安装自己的JDK1.8
  7. thrift 库使用心得
  8. linux中systemctl命令理解以及.service文件参数解析
  9. 2018纪中暑期15天期末考试 总结
  10. 怎么判断前轮左右的位置_驾驶位怎么判断前轮的位置 怎样确定汽车前面左右轮的位置?...