花了一天时间颓废这道题(颓废才是重点。。。)
贪心的想,从左望右,对于可以放的位置,放在最后一定能得到最优解,反之亦然
那么先考虑处理掉所有0的区间,然后离散化。
然后处理出对于每个区间最少花多少代价处理出来。(前缀 ,后缀)
那么容易想到,如果离散化后只有k个点,那么直接输出答案即可。
并且 如果区间大小为1 也必须直接输出。
除此之外,所有输出的点一定是当前区间的右端点。
那么考虑不放在右端点此时的最优解一定是右端点的左边第一个点,
那么根据之前预处理出来的东西,可以判断出此时需要最少多少点,搞定
复杂度O(mlogm)O(mlog⁡m)O(m \log m)

c++`代码如下:

#define lowbit(x) (x&-x)
#define rep(i,x,y) for(register int i = x ; i <= y; ++ i)
#define repd(i,x,y) for(register int i = x ; i >= y; -- i)
using namespace std;
typedef long long ll;
template<typename T>inline void read(T&x)
{char c;int sign = 1; x = 0;do { c = getchar(); if(c == '-') sign = -1; }while(!isdigit(c));do { x = x * 10 + c - '0'; c = getchar(); }while(isdigit(c));x *= sign;
}const int N = 1e5+50;
int n,m,k;
int t[N];int w[N],z[N],s1[N],s2[N],cnt,tot,top;
struct DATA { int l,r; }a[N],b[N];
const bool cmp(DATA a,DATA b) { return a.l < b.l || a.l == b.l && a.r > b.r; }int low[N],upp[N];int main()
{read(n); read(k); read(m);rep(i,1,m){int l,r,op;read(l); read(r); read(op);if(op == 1){b[++ tot].l = l;b[tot].r = r;}else t[l] -= 1,t[r + 1] += 1;}rep(i,1,n) t[i] += t[i - 1];rep(i,1,n) if(! t[i] )  w[++cnt] = i;if(k == cnt){rep(i,1,cnt)printf("%d\n",w[i]);return 0;}w[cnt + 1] = n + 1;rep(i,1,cnt + 1){   rep(j,w[i],w[i+1]-1)    low[j] = i;rep(j,w[i-1]+1,w[i])    upp[j] = i;}rep(i,1,tot){b[i].l = upp[b[i].l];b[i].r = low[b[i].r];if(b[i].l == b[i].r) z[b[i].l] = 1;}sort(b + 1 ,b + 1 + tot,cmp);rep(i,1,tot){if(a[top].l > a[top].r ) continue;while(top && a[top].r >= b[i].r) -- top;a[++top] = b[i];}int cur = 0;m = top;rep(i,1,m)if(a[i].l <= cur) s1[i] = s1[i - 1];else s1[i] = s1[i - 1] + 1,cur = a[i].r;cur = n + 1;repd(i,m,1)if(a[i].r >= cur) s2[i] = s2[i + 1];else s2[i] = s2[i + 1] + 1,cur = a[i].l; rep(i,a[m].l+1,cnt) z[i] = cnt + 1;repd(i,m,1)rep(j,a[i-1].l + 1,a[i].l)z[j] = i;bool flag = 0;rep(i,1,m){if(s1[i] == s1[i - 1]) continue;if(a[i].l == a[i].r){flag = 1;printf("%d\n", w[a[i].l ]);continue;}if(s1[i - 1] + 1 + s2[z[a[i].r]]> k){flag = 1;printf("%d\n",w[a[i].r]);}}if(!flag) puts("-1");return 0;
}

2811: [Apio2012]Guard相关推荐

  1. Oracle Data Guard 理论知识

    RAC, Data Gurad, Stream 是Oracle 高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合. 他们各自的侧重点不同,适用场景也不同. RAC 它的强项在于解决单点 ...

  2. [置顶] 如何搭建一个 Data Guard 环境

    在Blog里零零散散的讲了一些DB 维护的东西,比较杂,也比较散. 这里就Oracle Data Guard 这块做一个小结. 主要是流程上的东西. 做个参考,以后装DG,照这个流程走就ok了. 一. ...

  3. PHP代码保护——Zend Guard

    Zend Guard的作用,就是用编译处理的方式来保护PHP源代码免于被反编译查看.未经授权的定制修改.未经许可的使用和重新发布等.而且,它是PHP的东家Zend公司开发的,是完全为PHP量身定做的保 ...

  4. DATA GUARD架构(一)

    Data Guard传输-应用架构.>图1-1 ------------------------------------------------------------ 重做传输架构>图1 ...

  5. Swift的Guard语句

    最开始在Apple的Platform State of the Union看见swift的guard语句的时候,我当时不太理解以后会有什么理由能用到它.这个语句的介绍如下: 与if语句相同的是,gua ...

  6. Zend Guard 各版本下载【破解方法】

    这两天找着Zend Guard 4.0的安装包.Google Baidu 以及万年难得用一次的ASK都找翻天了.终于可以写一篇完整的Zend Guard资源帖.很多Zend Guard 4.0的下载链 ...

  7. Swift中 !和 ?的区别及使用与Swift的Guard语句

    1.swift中的!和?到底是什么? ?和!其实分别是swift语言中的一种可选类型(Optional)操作的语法糖. 1.1可选类型是个什么东西? swift中可以声明一个没有初始值的属性,swif ...

  8. Colocation Guard公司再增1万平方英尺的数据中心空间

    日前,纽约托管提供商Colocation Guard公司收购了泽西城111城市广场10,000平方英尺的数据中心空间.此外,Cologuard公司还增加了超过6万平方英尺的数据中心空间. 扩大规模 1 ...

  9. Data guard概念篇一(转载)

    本文转载至以下链接,感谢作者分享! http://tech.it168.com/db/2008-02-14/200802141545840_1.shtml 一.Data Guard配置(Data Gu ...

最新文章

  1. 当下火热的大数据视频,免费送(含源码)
  2. DeepMind提出基于视觉的强化学习模型,十八般兵器对机器人不在话下
  3. Django - app
  4. java虚拟机调优_Java虚拟机中JVM参数调优及其有用的命令
  5. oracle工作日记,Oracle学习日记【4】
  6. 家用车多少马力才够用?
  7. kotlin t class.java_尝试Java,从入门到Kotlin(下)
  8. 如何在秋招中拿到offer?
  9. 艺术签名软件 3.0 绿色版
  10. UVa11137 - Ingenuous Cubrency
  11. 关闭windows defender教程
  12. 西部世界:币本位是什么?
  13. 廖雪峰git教程阅读之一
  14. 脚本自动化部署docker微服务,取代Jenkins
  15. SQLSERVER格式化日期时间
  16. Wi-Fi 工作频段
  17. java 相似度匹配算法
  18. mplfinance蜡烛图 均线成交量
  19. distinct mysql性能_MySQL中distinct和group by性能比较
  20. 使用Tensorflow实现多GPU并行训练

热门文章

  1. Roman to Integer/Integer to Roman
  2. iOS Bilibili/ijkplayer 集成与使用
  3. office365中word打开时显示“word无法启动转换器RECOVR32.CNV”的解决办法
  4. 胡阳pyhton作业题--20150730
  5. 自增主键的sql设置语句
  6. 小程序开发——页面背景色设置
  7. 在html中div水平垂直css,html中div使用CSS实现水平/垂直居中的多种方式
  8. [PHP问题]Cannot redeclare xxxxxx() (previously declared in C:\WWW\xxx.xxx:xxx)
  9. PCB邮票孔的作用及详细设计指南
  10. 微信小程序——用户登录模块服务器搭建