bzoj5397 circular 随机化(
题目大意
给定一个环,环上有一些线段,试选出最多的线段
题解:
提醒:这可能是一篇非常欢乐的题解
我们考虑倍长环,然后断环为链
我们考虑枚举开头的线段,然后做一次贪心
这样子的复杂度根据实现的不同是\(O(n^2 \log n)\)或者\(O(n^2)\)
不妨假设我们不知道倍增能优化,我们考虑答案的构成,记答案为\(B\)
如果\(B < \sqrt n\),那么我们只需要每次跳\(B\)次就可以出解
如果\(B > \sqrt n\),那么我们随机取\(\frac{n}{B}\)个线段作为端点,然后取最优值
这样子,我们就得到了一个看起来完全不对劲的\(O(n \sqrt n)\)的算法
但是人都是懒惰的,我们考虑直接用第二种方法
经过实践,实际上只要取\(2\)个线段作为端点就足够\(A\)掉本题了
复杂度\(O(n \log n)\),虽然正确性完全无法保证呢
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define ri register int
#define rep(io, st, ed) for(ri io = st; io <= ed; io ++)
#define drep(io, ed, st) for(ri io = ed; io >= st; io --)
#define gc getchar
inline int read() {
int p = 0, w = 1; char c = gc();
while(c > '9' || c < '0') { if(c == '-') w = -1; c = gc(); }
while(c >= '0' && c <= '9') p = p * 10 + c - '0', c = gc();
return p * w;
}
const int sid = 2e5 + 5;
int n, m, tot;
int L[sid], R[sid];
struct seg {
int l, r;
seg() {}
seg(int _l, int _r) : l(_l), r(_r) {}
friend bool operator < (seg a, seg b)
{ return a.r > b.r; }
} A[sid];
priority_queue <seg> q;
inline int solve(int o) {
int ret = 0, nr = -1;
rep(i, 1, tot)
if(A[i].l >= L[o] && A[i].r <= L[o] + m) q.push(A[i]);
while(!q.empty()) {
seg B = q.top(); q.pop();
if(B.l < nr) continue;
nr = max(nr, B.r); ret ++;
}
return ret;
}
int main() {
m = read(); n = read();
rep(i, 1, n) {
int l = read(), r = read();
L[i] = l; R[i] = r;
if(l > r) A[++ tot] = seg(l, r + m);
else {
A[++ tot] = seg(l, r);
A[++ tot] = seg(l + m, r + m);
}
}
int ans = 0, k = 2;
for(ri i = 1; i <= n; i += n / k) ans = max(ans, solve(i));
printf("%d\n", ans);
return 0;
}
bzoj5397 circular 随机化(的更多相关文章
- BZOJ.5397.circular(随机化 贪心)
BZOJ 感觉自己完全没做过环上选线段的问题(除了一个2-SAT),所以来具体写一写qwq. 基本完全抄自remoon的题解qwq... (下标从\(0\sim m-1\)) 拆环为链,对于原线段\( ...
- APP漏洞扫描用地址空间随机化
APP漏洞扫描用地址空间随机化 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描器有一项静态分析加动态模糊测试的方法来检测的功能,并详细的介绍了它在针对本 ...
- 如何在Spring MVC Test中避免”Circular view path” 异常
1. 问题的现象 比如在webConfig中定义了一个viewResolver public class WebConfig extends WebMvcConfigurerAdapter { //配 ...
- Circular Buffer
From:http://bradforj287.blogspot.com/2010/11/efficient-circular-buffer-in-java.html import java.util ...
- 在.NET Core中遭遇循环依赖问题"A circular dependency was detected"
今天在将一个项目迁移至ASP.NET Core的过程中遭遇一个循环依赖问题,错误信息如下: A circular dependency was detected for the service of ...
- Circular progress bar in Unity 3D
Circular progress bar in Unity 3D - UnityScripthttp://stackoverflow.com/questions/22662706/circular- ...
- rabin 素性检验 随机化算法
#include <cstdio> #include <cstdlib> #include <ctime> typedef long long int LL; in ...
- A CIRCULAR PROGRESSBAR STYLE USING AN ATTACHED VIEWMODEL
This blog post describes how to re-template the Silverlight ProgressBar control to render a circular ...
- Linux平台Qt creator报错:Circular all <- first dependency dropped
在Linux下安装好Qt 5.0之后,使用Qt Creator创建了一个基于QMainWindow的框架程序.原本应该可以顺利的完成编译工作,因为自带的模板工程没有经过任何修改.可是在编译整个工程的时 ...
随机推荐
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 构建目录环境和依赖)
引言:在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一 的基础上 继续进行项目搭建 该部分的主要目的是测通MyBatis 及Spring-dao ...
- 集成Tomcat环境到Eclipse中
集成Tomcat环境到Eclipse中 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装Eclipse环境 1>.安装JDK环境 官方地址:https://www.or ...
- I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor
目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...
- mysql 端口修改
mysql 修改端口 1. 停止mysql服务 2. 打开文件夹下my.ini文件.(E:\mysql-5.7-3307) 修改文件中的port值,注意两个地方: [client]default- ...
- python django初识ajax
什么是json json是轻量级文本数据交互格式 json独立语言 符合的json对象 ["one", "two", "three"] { ...
- Dubbo学习笔记8:Dubbo的线程模型与线程池策略
Dubbo默认的底层网络通讯使用的是Netty,服务提供方NettyServer使用两级线程池,其中 EventLoopGroup(boss) 主要用来接受客户端的链接请求,并把接受的请求分发给 Ev ...
- django - 总结 - cnblog
1.头像预览 -------方法1-------- 点击头像------>点击input img和input重合; img在label,input-->display:none $(&qu ...
- 针对主机CPU idle性能情况需求脚本编写
[环境介绍] 系统环境:Linux + osw + python 2.7.10 [背景描述] 需求:当系统服务器出现性能告警的时候,需要定位具体的时间点来进行有针对性的去查询产生的问题.OSW提供了很 ...
- 使用SIGALARM为recvfrom设置超时
static void sig_alrm(int); void dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen) ...
- UE4 PostProcessVolume笔记
透镜:Lens Bloom 光溢出 VDirt Mask 光溢出泥土蒙版 Depth of Filed 景深 V Eye Adaptation (Auto-Exposure) 人眼适应 V这个效果有时 ...