「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 ...
随机推荐
- 9 STL-queue
重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...
- 【图像处理笔记】SIFT算法原理与源码分析
[图像处理笔记]总目录 0 引言 特征提取就是从图像中提取显著并且具有可区分性和可匹配性的点结构.常见的点结构一般为图像内容中的角点.交叉点.闭合区域中心点等具有一定物理结构的点,而提取点结构的一般思 ...
- jmeter 从多个数中随机取一个值的方法
问题描述:使用jmeter进行接口测试时,遇到枚举值(如:10代表闲置.15代表使用中.20代表维修等)我们需要随机取一个类型传到接口中. 解决思路:通过函数助手查找随机函数,找到__chooseRa ...
- 如何发布一个 TypeScript 编写的 npm 包
前言 在这篇文章中,我们将使用TypeScript和Jest从头开始构建和发布一个NPM包. 我们将初始化一个项目,设置TypeScript,用Jest编写测试,并将其发布到NPM. 项目 我们的库称 ...
- linux系统编码修改
1. 查看当前系统默认采用的字符集locale 2. 查看系统当前编码echo $LANG如果输出为:en_US.UTF-8 英文zh_CN.UTF-8 中文 3. 查看系统是否安装中 ...
- 【Shell案例】【tail/head/sed、echo $res ·· cat和管道】2、打印文件的最后5行
描述经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行示例:假设 nowcoder.txt 内容如下: #include& ...
- go-carbon 1.5.1 版本发布, 修复已知 bug 和新增土耳其翻译文件
carbon 是一个轻量级.语义化.对开发者友好的golang时间处理库,支持链式调用. 目前已被 awesome-go 收录,如果您觉得不错,请给个star吧 github.com/golang-m ...
- HMS Core 6.8.0版本发布公告
分析服务 ◆ 游戏行业新增"区服分析"埋点模板及分析报告,支持开发者分服务器查看用户付费.留存等指标,可进一步评估不同服务器的玩家质量: ◆ 新增营销活动报告,可查看广告任务带来的 ...
- 学习ASP.NET Core Blazor编程系列十七——文件上传(上)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...
- MongoDB 强制使用索引 hint
转载请注明出处: 虽然MongoDB 查询优化器一般工作的很不错,但是也可以使用 hint() 来强迫 MongoDB 使用一个特定的索引.在这种方法下某些情形下会提升性能. 一个有索引的 colle ...