题目大意

给定一个环,环上有一些线段,试选出最多的线段


题解

提醒:这可能是一篇非常欢乐的题解

我们考虑倍长环,然后断环为链

我们考虑枚举开头的线段,然后做一次贪心

这样子的复杂度根据实现的不同是\(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 随机化(的更多相关文章

  1. BZOJ.5397.circular(随机化 贪心)

    BZOJ 感觉自己完全没做过环上选线段的问题(除了一个2-SAT),所以来具体写一写qwq. 基本完全抄自remoon的题解qwq... (下标从\(0\sim m-1\)) 拆环为链,对于原线段\( ...

  2. APP漏洞扫描用地址空间随机化

    APP漏洞扫描用地址空间随机化 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描器有一项静态分析加动态模糊测试的方法来检测的功能,并详细的介绍了它在针对本 ...

  3. 如何在Spring MVC Test中避免”Circular view path” 异常

    1. 问题的现象 比如在webConfig中定义了一个viewResolver public class WebConfig extends WebMvcConfigurerAdapter { //配 ...

  4. Circular Buffer

    From:http://bradforj287.blogspot.com/2010/11/efficient-circular-buffer-in-java.html import java.util ...

  5. 在.NET Core中遭遇循环依赖问题"A circular dependency was detected"

    今天在将一个项目迁移至ASP.NET Core的过程中遭遇一个循环依赖问题,错误信息如下: A circular dependency was detected for the service of ...

  6. Circular progress bar in Unity 3D

    Circular progress bar in Unity 3D - UnityScripthttp://stackoverflow.com/questions/22662706/circular- ...

  7. rabin 素性检验 随机化算法

    #include <cstdio> #include <cstdlib> #include <ctime> typedef long long int LL; in ...

  8. A CIRCULAR PROGRESSBAR STYLE USING AN ATTACHED VIEWMODEL

    This blog post describes how to re-template the Silverlight ProgressBar control to render a circular ...

  9. Linux平台Qt creator报错:Circular all <- first dependency dropped

    在Linux下安装好Qt 5.0之后,使用Qt Creator创建了一个基于QMainWindow的框架程序.原本应该可以顺利的完成编译工作,因为自带的模板工程没有经过任何修改.可是在编译整个工程的时 ...

随机推荐

  1. CSS布局 两列布局之单列定宽,单列自适应布局思路

    前言 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.比如斗鱼的直播间,后台管理系统都是常用的 我们将从 float, inline-block, table, absolute, fl ...

  2. redis远程连接报错记录

    错误如下 redis可视化工具连接测试 telnet ip 6379 修改关键参数如下 #开通外网访问 # bind 127.0.0.1 #以后台方式运行 daemonize no #取消保护模式,保 ...

  3. UML建工工具

    本篇博文简单介绍一下自己在搜索UML建模工具的过程中收集到的一些信息. 如果想用中文的,可以考虑楚凡科技的Trufun Plato,不过最近好像没有怎么更新了. 很多前辈以前用的是Rational R ...

  4. [物理学与PDEs]第2章习题13 将 $p$ - 方程组化为守恒律形式的一阶拟线性对称双曲组

    试引进新的未知函数, 将 $p$ - 方程组 $$\beex \bea \cfrac{\p \tau}{\p t}-\cfrac{\p u}{\p x}&=0,\\ \cfrac{\p u}{ ...

  5. Design Principles and Design Patterns

    设计原则解读. 设计原则是对设计模式的约束性要求,属于设计中基本的四项特征,不符合此四项特征的设计,不具有生命力. 设计模式也是在此四项设计原则上的具体化实例化衍生物. Martin原文: http: ...

  6. mac下go环境搭建开发web工程

    1,golang下载: http://www.golangtc.com/download https://golang.org/ https://beego.me/docs/intro/ 2,安装go

  7. 给Myeclipse配置tomcat服务器

    1.安装好Tomcat 7.x服务器 2.window->perference,在搜索框中搜索Tomcat: 3.将MyEclipse自带的Tomcat及其他的Tomcat服务器禁用: 4.启用 ...

  8. day 14 - 1 生成器

    生成器 生成器 生成器的本质就是迭代器生成器的表现形式 生成器函数 生成器函数 —— 本质上就是我们自己写得函数 生成器表达式生成器函数: 含有 yield 关键字的函数就是生成器函数 特点: 调用函 ...

  9. @ReponseBody返回的json中文乱码-遁地龙卷风

    我在mvc配置文件中加上下面这个配置就好了 <mvc:annotation-driven></mvc:annotation-driven>,需要在开头引用如下命名空间xmlns ...

  10. 第六节,Python的科学计算包——Numpy

    1.基本类型(array) import numpy as np a=[1,2,3,4] b=np.array(a) #array([1,2,3.4]) type(b) #<type 'nump ...