题意:



思路:

1.二分+线段树(但是会TLE 本地测没有任何问题,但是POJ上就是会挂……)

2.二分+并查集

我搞了一下午+一晚上才搞出来…………..(多半时间是在查错)

首先 如果我们想知道这头奶牛之前的奶牛回答的是不是错的怎么办呢?

把回答的A从大到小排个序。这里有几种错的方式:

  1. 如果后面的区间完全被前面的区间包含,这是错的
  2. 如果有两个不相交的区间的A是一样的,这也是错的(题目保证没有两堆干草的数量是一样的)

注意取相同A的区间的时候不要超过当前二分的mid

并查集的使用也很关键……

如果是第一次覆盖 每回暴力修改一个区间

随后就可以跳着修改了…..

(有很多很多小技巧 感谢NEIGHTHORN的帮助 (和队长的代码))

//By SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
int n,q,ans=0,f[1111111];
struct Section{int from,to,minn;}sec[25555],cpy[25555];
bool cmp(Section a,Section b){return a.minn>b.minn;}
int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
inline bool check(int pos){
for(int i=1;i<=n;i++)f[i]=i;
for(int i=1;i<=pos;i++)cpy[i]=sec[i];
sort(cpy+1,cpy+1+pos,cmp);
for(int i=1,j;i<=pos;i=j+1){
int x=cpy[i].from,y=cpy[i].to,X=x,Y=y;
j=i;
while(cpy[j].minn==cpy[j+1].minn&&j+1<=pos){
j++;
x=max(x,cpy[j].from),X=min(X,cpy[j].from);
y=min(y,cpy[j].to),Y=max(Y,cpy[j].to);
}
if(y<x||find(y)<x)return 0;
while(X<=Y)
if(find(Y)==Y)f[Y]=find(X-1),Y--;
else Y=find(Y);
}
return 1;
}
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=q;i++)
scanf("%d%d%d",&sec[i].from,&sec[i].to,&sec[i].minn);
int l=1,r=q;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid))l=mid+1;
else r=mid-1,ans=mid;
}
printf("%d\n",ans);
}

最新文章

  1. openstack学习(三)创建虚拟机
  2. nodeType的意思
  3. 机器学习&amp;数据挖掘笔记_20(PGM练习四:图模型的精确推理)
  4. jpg Test
  5. css兼容tooltip提示框方法
  6. VS2013中,RDLC设置数据源和参数的界面
  7. eclipse 手动/自动安装插件
  8. 最全的dedeCMS标签调用技巧和大全
  9. object标签参考(转载)
  10. extjs两个tbar问题
  11. 玩sdr的朋友们,在rtl_tcp时,记得调整rtl_AGC和tuner_AGC啊
  12. Unity 制作RPG小地图
  13. 染色法判断是否是二分图 hdu2444
  14. c3p0私有属性checkoutTimeout设置成1000引发的调试错误:
  15. SQL入门之条件表达式
  16. CentOS7.6搭建redis4.0.1 cluster集群
  17. ESP32搭建3.ubuntu14.04下搭建esp32开发环境 (10-5)
  18. 均方根误差(RMSE)与平均绝对误差(MAE)
  19. postgresql 清空数据表 truncate
  20. JQuery 获取多个select标签option的text内容

热门文章

  1. 2017第33周四JDK8并发
  2. 解决Highcharts指针偏离的问题
  3. linux的chmod,chown命令 详解
  4. JQuery (总结)
  5. 【翻译】前景img-sprites, 高对比模式分析
  6. 一个基于React整套技术栈+Node.js的前端页面制作工具
  7. Android ListView getView()方法重复调用导致position错位
  8. 在centos上安装php5.5+MySQL 5.5.32
  9. MDL的一些理解
  10. HDU 1009 FatMouse&#39; Trade【贪心】