首先想到二分答案

然后我们从大往小加区间,如果之前出现了一个区间包含当前区间

那显然不合法,我们可以用并查集了维护

 type node=record
x,y,mi,id:longint;
end; var q:array[..] of node;
a:array[..] of longint;
fa:array[..] of longint;
l,r,m,n,t,i,ans:longint; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; procedure swap(var a,b:node);
var c:node;
begin
c:=a;
a:=b;
b:=c;
end; procedure sort(l,r:longint);
var i,j,x:longint;
begin
i:=l;
j:=r;
x:=q[(l+r) shr ].mi;
repeat
while x<q[i].mi do inc(i);
while q[j].mi<x do dec(j);
if not(i>j) then
begin
swap(q[i],q[j]);
inc(i);
dec(j);
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end; function have(l,r:longint):boolean;
var x:longint;
begin
x:=r;
while x>=l do
begin
if fa[x]= then exit(false);
x:=fa[x]-;
end;
exit(true);
end; procedure work(l,r:longint);
var x:longint;
begin
x:=r;
while x>=l do
begin
if fa[x]= then fa[x]:=l
else begin
x:=fa[x];
if x>=l then fa[x]:=l;
end;
dec(x);
end;
end; function check(m:longint):boolean;
var s,i,j,x,y,k:longint;
begin
fillchar(fa,sizeof(fa),);
s:=;
for i:= to t do
if q[i].id<=m then
begin
inc(s);
a[s]:=i;
end; i:=;
while i<s do
begin
inc(i);
j:=i+;
while (j<=s) and (q[a[i]].mi=q[a[j]].mi) do inc(j);
dec(j);
x:=;
y:=n+;
for k:=i to j do
begin
x:=max(x,q[a[k]].x);
y:=min(y,q[a[k]].y);
end;
if x>y then exit(false);
if have(x,y) then exit(false);
for k:=i to j do
work(q[a[k]].x,q[a[k]].y);
i:=j;
end;
exit(true);
end; begin
readln(n,t);
for i:= to t do
begin
readln(q[i].x,q[i].y,q[i].mi);
q[i].id:=i;
end;
sort(,t);
l:=;
r:=t-;
if check(t) then writeln()
else begin
ans:=t;
while l<=r do
begin
m:=(l+r) shr ;
if not check(m) then
begin
ans:=m;
r:=m-;
end
else l:=m+;
end;
writeln(ans);
end;
end.

bzoj1594的更多相关文章

  1. 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集

    [BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...

  2. [bzoj1594] [Usaco2008 Jan]猜数游戏

    二分答案(二分没冲突的前Q-1个问题),用并查集判定(用法同bzoj 1576) 假设一个询问区间[l,r],最小干草堆数目是A,我们可以得出[l,r]上的干草堆数目都>=A. 二分出mid后, ...

  3. bzoj1594 Pku3764 The xor-longest Path

    题目链接 先求每个点到根的异或和 然后就要找出两个点,使dis[a]^dis[b]最大 注意异或的性质,我们可以用trie树,沿着与当前数字每位的相反方向走 #include<algorithm ...

  4. 【bzoj1594】猜数游戏

    1594: [Usaco2008 Jan]猜数游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 556  Solved: 225 Descripti ...

  5. [BZOJ1594] [Usaco2008 Jan]猜数游戏(二分 + 并查集)

    传送门 题中重要信息,每堆草的数量都不一样. 可以思考一下,什么情况下才会出现矛盾. 1.如果两个区间的最小值一样,但是这两个区间没有交集,那么就出现矛盾. 2.如果两个区间的最小值一样,并且这两个区 ...

  6. 【刷题记录】BZOJ-USACO

    接下来要滚去bzoj刷usaco的题目辣=v=在博客记录一下刷题情况,以及存一存代码咯.加油! 1.[bzoj1597][Usaco2008 Mar]土地购买 #include<cstdio&g ...

  7. bzoj Usaco补完计划(优先级 Gold>Silver>资格赛)

    听说KPM初二暑假就补完了啊%%% 先刷Gold再刷Silver(因为目测没那么多时间刷Silver,方便以后TJ2333(雾 按AC数降序刷 ---------------------------- ...

随机推荐

  1. 【Vijos】【1923】漫长的等待

    可持久化线段树 这次是询问一段区间内权值 在给定范围内的点的数量,同样是可持久化线段树简单操作…… //Vijos 1923 #include<vector> #include<cs ...

  2. 清除HTML中的特殊字符

    /// <summary>        /// 清楚HTML中的特殊字符        /// </summary>        /// <param name=&q ...

  3. 【转载】C++中结构体的声明和定义

    http://blog.csdn.net/whuslei/article/details/5665289 1  //定义一个结构体,类型为struct Student 2  struct  Stude ...

  4. iOS开发 .framework的Optional(弱引用)和Required(强引用)区别

    首先,参考文档:https://blog.stackmob.com/2013/03/objective-c-tip-of-the-month-optional-frameworks/ 强引用(Requ ...

  5. java 中 String 类的几个问题

    首先,我们要搞清楚,在java中,引用和基本数据类型是存储在栈中的.而对象是存储在堆中的. 只有一个例外,就是String对象. 例如: String str1="test"; S ...

  6. Cloud Insight 仪表盘上线 | 全面监控 Redis

    OneAPM 作为应用性能领域的新兴领军企业,近期发布了重量级新产品-- Cloud Insight 数据管理平台,用它能够监控所有基础组件,并通过 tag 标签对数据进行管理. 近日,Cloud I ...

  7. EF提供的三种查询方式

    這邊簡單介紹一下,ADO.Net Entity Framework 提供的三種查詢方式, Linq to Entities Query Builder Mothed Entity SQL Langua ...

  8. Java程序员学C#基本语法两个小时搞定(对比学习)

    对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import ...

  9. secure CRT 介绍

        SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件.     Secure[1] CRT支持SSH,同时 ...

  10. Xamarin.Android 入门之:Xamarin快速入门

    一. 准备工作 1.新建一个项目取名为phoneword 2.在项目创建好之后,让我们展开“Resources”文件夹然后找到并打开该文件夹下的“layout”文件夹,双击main.axml在Andr ...