二分答案,没有出现过的时刻没有用,可以进行离散化。

首先如果某个时刻出现多个人数,那么肯定矛盾。

然后按时间依次考虑,维护:

$t$:剩余可选人数。

$s$:现在必定有的人数。

$cl$:往左延伸的人数。

$cr$:往右延伸的人数。

如果现在有人必须加入,那么优先踢掉$cl$的人。

如果当前人多了,那么优先让$cr$的人结束工作。

如果最后剩余可选人数非负,则可行。

时间复杂度$O((n+m)\log m)$。

#include<cstdio>
const int N=100010,BUF=33333333;
int T,n,m,i,e[N][3],l,r,mid,ans,a[N],b[N],c[N],p[N],L[N],R[N];char Buf[BUF],*buf=Buf;
inline void read(int&a){for(a=0;*buf<48;buf++);while(*buf>47)a=a*10+*buf++-48;}
inline void umin(int&a,int b){if(a>b)a=b;}
inline void umax(int&a,int b){if(a<b)a=b;}
bool check(int mid){
int i,t,x,y,cnt=0,s=0,cl=0,cr=0;
for(i=1;i<=n;i++)L[i]=N,R[i]=0;
for(i=1;i<=m;i++)a[i]=0;
for(i=1;i<=mid;i++){
t=e[i][0],x=e[i][1],y=e[i][2];
if(a[t]&&a[t]!=y)return 0;
a[t]=y,umin(L[x],t),umax(R[x],t);
}
for(i=1;i<=m;i++)if(a[i])p[i]=++cnt,a[cnt]=a[i],b[cnt]=c[cnt]=0;
for(i=1;i<=n;i++)if(R[i])b[p[L[i]]]++,c[p[R[i]]]++;
for(t=n,i=1;i<=cnt;i++){
s+=b[i];
if(s>a[i])return 0;
while(b[i]--)if(cl>0)cl--;else t--;
while(s+cl+cr<a[i])cl++,t--;
while(s+cl+cr>a[i])if(cr>0)cr--;else cl--;
s-=c[i],cr+=c[i];
if(t<0)return 0;
}
return 1;
}
int main(){
for(fread(Buf,1,BUF,stdin),read(T);T--;printf("%d\n",ans)){
read(n),read(m);
for(i=1;i<=m;i++)read(e[i][0]),read(e[i][1]),read(e[i][2]),e[i][2]++;
l=2,r=m,ans=1;
while(l<=r)if(check(mid=(l+r)>>1))l=(ans=mid)+1;else r=mid-1;
}
return 0;
}

  

BZOJ3414 : Poi2013 Inspector的更多相关文章

  1. POI2013题解

    POI2013题解 只做了BZ上有的\(13\)道题. 就这样还扔了两道神仙构造和一道计算几何题.所以只剩下十道题了. [BZOJ3414][Poi2013]Inspector 肯定是先二分答案,然后 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 自定义Inspector检视面板

    Unity中的Inspector面板可以显示的属性包括以下两类:(1)C#以及Unity提供的基础类型:(2)自定义类型,并使用[System.Serializable]关键字序列化,比如: [Sys ...

  4. 企业IT管理员IE11升级指南【16】—— 使用Compat Inspector快速定位IE兼容性问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  5. Delphi控件之---通过编码学习TStringGrid(也会涉及到Panel控件,还有对Object Inspector的控件Events的介绍

    我是参考了万一的博客里面的关于TStringGrid学习的教程,但是我也结合自己的实际操作和理解,加入了一些个人的补充,至少对我有用! 学用TStringGrid之——ColCount.RowCoun ...

  6. Delphi控件之---UpDown以及其与TEdit的配合使用(比如限制TEdit只能输入数字,还有Object Inspector之组件属性的介绍)

    最近在开发中使用到了UpDown这个控件,但是因为之前没有使用过,所以很不熟悉,于是就编写了一个简单的demo来学习UpDown以及其结合TEdit的用法. 初步的常用功能的简介 目前(2015.08 ...

  7. 一个美术需求引发的Custom Inspector

    需求 Editor模式下,在运行或者非运行状态下,能够按照指定的变化率来自动改变material中属性数值. 需求分析 如何在Editor模式下获得一个游戏对象及其组件,尤其是在非运行状态下?我们知道 ...

  8. nodejs 使用Google浏览器进行可视化调试——Node Inspector工具

    1.npm安装Node Inspector工具,全局安装 命令行执行npm install -g node-inspector 2.启动Node Inspector工具,命令行执行 node-insp ...

  9. 使用appium进行ios测试,启动inspector时遇到的问题(一)

    最近在公司,让做ios的自动化测试,因为以前做过android的自动化测试,用的也是appium,觉得没什么,结果一开始在搭建环境就遇到了很多的问题,现在将我遇到的问题,以及解决方法,给大家分享出来. ...

随机推荐

  1. .pdb文件的使用方法

    1.Demo1:用DLL_01生成my.dll.my.pdb.my.lib文件. 2.Demo2:在DLL_01_APP_02中使用DLL_01的dll. 步骤: 1.vs2008打开DLL_01_A ...

  2. C++ STL string

    要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...

  3. md5sum

    [root@NB index]# ls index()().html index()().html index()().html index()().html index()().html [root ...

  4. MangoDB的C#Driver驱动简单例子

    以下是本人学习C#Driver驱动简单的学习例子.GridFS的增删查操作 和 表的增删查改操作. public class MongoServerHelper { public static str ...

  5. async/await 异步编程(转载)

    转载地址:http://www.cnblogs.com/teroy/p/4015461.html 前言 最近在学习Web Api框架的时候接触到了async/await,这个特性是.NET 4.5引入 ...

  6. ASP.NET Web API 配置返回的json字段的格式以及Action返回HttpResponseMessage类型和IHttpActionResult类型

    1. 对于返回的Json对象格式是以“帕斯卡”风格的(例如“FirstName”),然而我们的Api有很大的可能被带有Javascript的客户端消费,对于JS开发者来说可能更适合“驼峰”风格(例如” ...

  7. 在SQL里如何写条件逻辑?

    主要涉及CASE,WHEN之类.. 不同的服务器上实现if...else...是不一样的. 建议用CASE ,WHEN,因为它们是SQL国标呢. mysql> SELECT -> SUM( ...

  8. hdu 4027 2011上海赛区网络赛G 线段树 成段平方根 ***

    不能直接使用成段增减的那种,因为一段和的平方根不等于平方根的和,直接记录是否为1,是1就不需要更新了 #include<cstdio> #include<iostream> # ...

  9. 实时视频应用之QoS关键技术分析

    转自:http://www.aiweibang.com/m/detail/104476372.html?from=p 随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注 ...

  10. IIS配置php运行环境默认加载的php.ini路径

    第一步: 把PHP的安装路径添加到环境变量Path中,右键 “我的电脑” -> 高级 -> 环境变量 -> 系统变量,追加 D:PHP-5.2.8\; 第二步: 新建“系统变量” P ...