博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【文文殿下】P3740 [HAOI2014]贴海报
阅读量:5814 次
发布时间:2019-06-18

本文共 1070 字,大约阅读时间需要 3 分钟。

题解

一开始想到离散化,然后暴力模拟。但是存在一种hack数据: [5,7] [1,5] [7,9] 这样会错误的认为第一个区间被覆盖了(因为两个端点被覆盖)。所以我们设置一个玄学调参系数,在一个区间的内部,rand几个点,属于这个区间。

这个系数一般来讲设为5就可以了。

代码如下:

#include
#include
#include
const int maxn = 1e5+10;int n,m;int xi=5;int a[maxn],top;int rand_rang(int l,int r) { return (rand()%(r-l+1))+l;}int l[maxn],r[maxn];int vis[maxn];int cnt[maxn];int find(int x) { int pos = std::lower_bound(a+1,a+1+top,x)-a; return pos;}int main() { scanf("%d%d",&n,&m); for(int i = 1;i<=m;++i) { scanf("%d%d",l+i,r+i); a[++top]=l[i];a[++top]=r[i]; for(int j = 1;j<=xi;++j) { a[++top]=rand_rang(l[i],r[i]); } } std::sort(a+1,a+1+top); top = std::unique(a+1,a+1+top)-a-1; for(int i = 1;i<=m;++i) { int l = find(::l[i]),r=find(::r[i]); for(int j = l;j<=r;++j) { vis[j]=i; } } int ans = 0; for(int i = 1;i<=top;++i) { if(cnt[vis[i]]++==0) ++ans; } printf("%d\n",ans); return 0;}

转载于:https://www.cnblogs.com/Syameimaru/p/10451395.html

你可能感兴趣的文章
递推DP URAL 1225 Flags
查看>>
构建NetCore应用框架之实战篇系列
查看>>
【Java TCP/IP Socket】TCP Socket(含代码)
查看>>
用Leangoo泳道完美实现Scrum任务看板
查看>>
31.Node.js 常用工具 util
查看>>
Putty连接虚拟机Centos出现:Network error:Connection refused的解决方法
查看>>
(四)G1 garbage collector
查看>>
extjs插件
查看>>
框架包
查看>>
LeetCode – Refresh – Longest Substring Without Repeating Characters
查看>>
电信无限流量卡
查看>>
C工具库10:带引用计数的buffer
查看>>
javascript 生成MD5加密
查看>>
CF1119F Niyaz and Small Degrees
查看>>
24飞机大战_面向对象设计类
查看>>
每天一个linux命令(17):whereis 命令
查看>>
css3新特性
查看>>
当*.sql文档太大是,数据库控制软件不能直接导入时,需要用到数据库控制台的导入sql语言实现...
查看>>
WinForm LED循环显示信息,使用定时器Threading.Timer
查看>>
解决xftp远程连接中文乱码
查看>>