「SHOI2015」脑洞治疗仪
\(\text{Naive Solition}\)
当然是 \(ODT\) 暴力啦
\(Luogu\) 煞费苦心加强了数据,于是就过不了了。。。
不过 \(LibreOJ\) 上可以过
#include <cstdio>
#include <iostream>
#include <set>
#define re register
#define iter set<node>::iterator
using namespace std;
inline void read(int &x)
{
x = 0; char ch = getchar();
for(; !isdigit(ch); ch = getchar());
for(; isdigit(ch); x = (x<<3) + (x<<1) + (ch^48), ch = getchar());
}
int n, m;
struct node{
int l, r; mutable int v;
inline node(int l, int r, int v):l(l), r(r), v(v){};
inline bool operator < (const node &a) const {return l < a.l;}
};
set<node> T;
inline iter split(int x)
{
if (x > n) return T.end();
iter it = --T.upper_bound(node{x, 0, 0});
if (it->l == x) return it;
int l = it->l, r = it->r, v = it->v;
T.erase(it), T.insert(node{l, x - 1, v});
return T.insert(node{x, r, v}).first;
}
inline void assign(int l, int r, int v)
{
iter itr = split(r + 1), itl = split(l);
T.erase(itl, itr), T.insert(node{l, r, v});
}
inline int QuerySum(int l, int r)
{
iter itr = split(r + 1), itl = split(l); int sum = 0;
for(re iter it = itl; it != itr; ++it) sum += it->v * (it->r - it->l + 1);
return sum;
}
inline void Modify(int l, int r, int x, int y)
{
int sum = QuerySum(l, r); assign(l, r, 0);
iter itr = split(y + 1), itl = split(x);
for(re iter it = itl; it != itr && sum; ++it)
if (it->v == 0)
{
int len = it->r - it->l + 1;
if (len <= sum) sum -= len, it->v = 1;
else assign(it->l, it->l + sum - 1, 1), sum = 0;
}
}
inline int QueryLong(int l, int r)
{
iter itr = split(r + 1), itl = split(l); int mx = 0, sum = 0;
for(re iter it = itl; it != itr; ++it)
{
if (it->v == 0) sum += (it->r - it->l + 1);
else mx = (mx < sum ? sum : mx), sum = 0;
}
return (mx < sum ? sum : mx);
}
int main()
{
read(n), read(m), T.insert(node{1, n, 1});
for(int op, l, r, x, y; m; --m)
{
read(op);
if (op == 0) read(l), read(r), assign(l, r, 0);
else if (op == 1) read(l), read(r), read(x), read(y), Modify(l, r, x, y);
else read(l), read(r), printf("%d\n", QueryLong(l, r));
}
}
「SHOI2015」脑洞治疗仪的更多相关文章
- loj #2037. 「SHOI2015」脑洞治疗仪
#2037. 「SHOI2015」脑洞治疗仪 题目描述 曾经发明了自动刷题机的发明家 SHTSC 又公开了他的新发明:脑洞治疗仪——一种可以治疗他因为发明而日益增大的脑洞的神秘装置. 为了简单起见 ...
- 【LOJ】#2037. 「SHOI2015」脑洞治疗仪
题解 维护区间内1的个数,左边数0的长度,右边数0的长度,区间内0区间最长个数,覆盖标记 第一种操作区间覆盖0 第二种操作查询\([l_0,r_0]\)中1的个数,区间覆盖0,然后覆盖时找到相对应的区 ...
- LibreOJ #2037. 「SHOI2015」脑洞治疗仪
线段树区间合并问题 恶心... 屠龙宝刀点击就送 #include <cstdio> #define N 200005 struct Segment { int l,r,mid,sum,l ...
- loj#2038. 「SHOI2015」超能粒子炮・改
题目链接 loj#2038. 「SHOI2015」超能粒子炮・改 题解 卢卡斯定理 之后对于%p分类 剩下的是个子问题递归 n,k小于p的S可以预处理,C可以卢卡斯算 代码 #include<c ...
- LibreOJ #2036. 「SHOI2015」自动刷题机
#2036. 「SHOI2015」自动刷题机 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开 ...
- [LOJ 2039] 「SHOI2015」激光发生器
[LOJ 2039] 「SHOI2015」激光发生器 链接 链接 题解 分为两个部分 第一个是求直线之间的交点找到第一个触碰到的镜面 第二个是求直线经过镜面反射之后的出射光线 第一个很好做,第二个就是 ...
- 「SHOI2015」超能粒子炮・改
「SHOI2015」超能粒子炮・改 给你\(T\)组询问,每组询问给定参数\(n,k\),计算\(\sum\limits_{i=0}^k\dbinom{n}{i}\). \(T\leq10^5,n,k ...
- 【SHOI2015】脑洞治疗仪(恶心的线段树,区间最大子段和)
题目描述: 曾经发明了自动刷题机的发明家 SHTSC 又公开了他的新发明:脑洞治疗仪——一种可以治疗他因为发明而日益增大的脑洞的神秘装置. 为了简单起见,我们将大脑视作一个 01 序列.11代表这个位 ...
- 「SHOI2015」(LOJ2038)超能粒子炮・改
传送门:Here 一句话题意:给定$ t$次询问,每次读入$n,k,$求$ \sum_{i=0}^kC_n^k\ mod\ 2333$, 其中$ t \leq 100000$,$n,k \leq 10 ...
- 「SHOI2015」自动刷题机
/* 有理有据的二分答案 因为在过程中最多减到零 所以n越小显然就能刷更多的题 无解时就是无论如何也无法得到k , 这个特判一下即可 */ #include<cstdio> #includ ...
随机推荐
- Python异步协程(asyncio详解)
续上篇讲解yield from博客,上篇链接:https://www.cnblogs.com/Red-Sun/p/16889182.html PS:本博客是个人笔记分享,不需要扫码加群或必须关注什么的 ...
- BFS算法套路框架
一.概念 1.定义 Broad First Search 2.与DFS区别 BFS找到的路径最短 3.本质 找出图中从起点到终点的最近距离 二.二叉树的最小高度111 1.代码 /** * Defin ...
- 【Scala】思维导图
思维导图:http://naotu.baidu.com/file/8ac705df572cd2f131aff5f0ed9c4c88?token=871f7d35671c6287 Scala 算术运算 ...
- SourceGenerator 使用姿势(1):生成代理类,实现简单的AOP
SourceGenerator 已经出来很久了,也一直在关注.之前观摩大佬 xljiulang 的 WebApiClient 使用 SourceGenerator 生成接口代理类,深受启发,准备拿过来 ...
- Javascript | 分别用async await异步方法和Promise来实现一个简易的求职程序
关注公众号,一起交流,微信搜一搜: LiOnTalKING JavaScript Promise Promise 是一个 ECMAScript 6 提供的类,目的是更加优雅地书写复杂的异步任务 ...
- 基于 Spring Cloud 的微服务脚手架
基于 Spring Cloud 的微服务脚手架 作者: Grey 原文地址: 博客园:基于 Spring Cloud 的微服务脚手架 CSDN:基于 Spring Cloud 的微服务脚手架 本文主要 ...
- RestTemplate获取json数组
1.需求描述 接口返回的是一个json数组,要获取到接口返回值并用实体类list接住. 2.解决方法 使用springboot框间自带的Http的工具类RestTemplate调接口,其返回值用hut ...
- 迁移学习(ADDA)《Adversarial Discriminative Domain Adaptation》
论文信息 论文标题:Adversarial Discriminative Domain Adaptation论文作者:Eric Tzeng, Judy Hoffman, Kate Saenko, Tr ...
- 创建型模式 - 抽象工厂模式AbstractFactory
学习而来,代码是自己敲的.也有些自己的理解在里边,有问题希望大家指出. 模式的定义与特点 抽象工厂模式.是一种为访问类提供一个创建一组相关或相关一类对象的接口,且访问类无需指定所要的产品的具体类,就能 ...
- Xcode找不到.h或者.m文件解决办法 .h file not found
Xcode找不到.h或者.m文件解决办法 .h file not found 开篇唠叨 小黑最经又开始干iOS接入微信SDK了,目前刚开始就遇到了困难,于是总结一下分享给大家,要是大家看完了还解决 ...