51nod1981 如何愉快地与STL玩耍

先摆官方题解吧.........

....................有什么好讲的呢.......
注意一些地方常数优化一下.......然后......$bitset$怎么暴力怎么来吧......
仿佛有神仙$n \log^3 n$跑过了......只能$orz$....
#include <cstdio>
#include <bitset>
#include <cstring>
#include <iostream>
using namespace std; extern inline char gc() {
static char RR[], *S = RR + , *T = RR + ;
if(S == T) fread(RR, , , stdin), S = RR;
return *S ++;
}
inline int read() {
int p = , w = ; char c = gc();
while(c > '' || c < '') { if(c == '-') w = -; c = gc(); }
while(c >= '' && c <= '') p = p * + c - '', c = gc();
return p * w;
} int wr[], rw;
#define pc(o) *O ++ = o
char WR[], *O = WR;
inline void write(int x) {
if(!x) pc('');
if(x < ) x = -x, pc('-');
while(x) wr[++ rw] = x % , x /= ;
while(rw) pc(wr[rw --] + ''); pc('\n');
} #define ri register int
#define sid 65555
#define wid 10005 int n, q, rt, id;
struct seg {
int ls, rs;
bitset <wid> v, tag;
} t[sid * ];
bitset <wid> ask, sum[wid]; void ins(int &o, int l, int r, int ml, int mr, int c) {
if(ml > r || mr < l) return;
if(!o) o = ++ id; t[o].v[c] = ;
if(ml <= l && mr >= r) { t[o].tag[c] = ; return; }
int mid = (l + r) >> ;
ins(t[o].ls, l, mid, ml, mr, c);
ins(t[o].rs, mid + , r, ml, mr, c);
} void qry(int &o, int l, int r, int ml, int mr) {
if(ml > r || mr < l || !o) return;
if(ml <= l && mr >= r) { ask |= t[o].v; return; }
ask |= t[o].tag;
int mid = (l + r) >> ;
qry(t[o].ls, l, mid, ml, mr);
qry(t[o].rs, mid + , r, ml, mr);
} int qry(int l, int r, int k) {
ask.reset();
qry(rt, , n, l, r);
if(ask.count() < k || k == ) return -;
int L = , R = , ans = -;
while(L <= R) {
int mid = (L + R) >> ;
if((ask & sum[mid]).count() >= k) R = mid - , ans = mid;
else L = mid + ;
}
return ans;
} int main() { sum[][] = ;
for(ri i = ; i <= ; i ++) {
sum[i] = sum[i - ];
sum[i][i] = ;
} n = read(); q = read();
for(ri i = ; i <= q; i ++) {
int opt = read(), L = read(), R = read();
if(opt == ) ins(rt, , n, L, R, read());
else write(qry(L, R, read()));
}
fwrite(WR, , O - WR, stdout);
return ;
}
51nod1981 如何愉快地与STL玩耍的更多相关文章
- 51nod 1981 如何愉快地与STL玩耍
Description 驴蛋蛋在愉快地与STL玩耍 突然间小A跳了出来对驴蛋蛋说,看你与STL玩的很开心啊,那我给你一个大小为N的vector,这个vector上每个位置上是一个set, 每次我会在闭 ...
- xcode8继续愉快的使用插件
https://github.com/inket/update_xcode_plugins https://github.com/fpg1503/MakeXcodeGr8Again xcode8增加了 ...
- 如何用VSCode愉快的写Python
在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器.由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio C ...
- python操作mysql总结
Windows系统,python环境搭建. 下载并安装python2.7.11 https://www.python.org/downloads/ 下载并安装python的mysql包: http:/ ...
- Windows上Python2和3如何兼容
作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有,转载请联系作者获得授权.想学习Python ...
- python环境准备
一.环境准备. 1.安装python3.5.2(勾选环境变量),python2.7.12 2.设置环境变量 (要求命令行输入python,进入python2命令行,打python3时,进入python ...
- [python]_ELVE_pip2和pip3如何共存
作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有,转载请联系作者获得授权. 想学习Pytho ...
- 短文本分析----基于python的TF-IDF特征词标签自动化提取
绪论 最近做课题,需要分析短文本的标签,在短时间内学习了自然语言处理,社会标签推荐等非常时髦的技术.我们的需求非常类似于从大量短文本中获取关键词(融合社会标签和时间属性)进行用户画像.这一切的基础就是 ...
- 同时装了Python3和Python2,怎么用pip
作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
随机推荐
- oschina ios开发学习
应该跟android版的类似,例如服务器端在oschina-prefix.pch里 #define api_news_list @"http://www.oschina.net/action ...
- Codeforces 870E Points, Lines and Ready-made Titles 计数
题目链接 题意 给定二维坐标上的\(n\)个点,过每个点可以 画一条水平线 或 画一条竖直线 或 什么都不画,并且若干条重合的直线被看做同一条.问共可能得到多少幅不同的画面? 题解 官方题解 仆の瞎扯 ...
- FPGA编码规则检查表
FPGA编码规则检查表 -----------------------摘自<FPGA软件测试与评价技术> 中国电子信息产业发展研究院 | 编著 1.一个单独的文件应该只包含一个单独的mod ...
- 配置kernel的log buf大小(如果kmsg log被覆盖)
如果在打印kmsg log时发现log被覆盖,log 的buf不够大可以使用默认配置调buf: defconfig CONFIG_LOG_BUF_SHIFT=20 (默认是17 2的17次方) ...
- javascript反混淆之packed混淆(二)
上次我们简单的入门下怎么使用html破解packed的混淆,下面看一个综合案例. 上次内容javascript反混淆之packed混淆(一) function getKey() { var aaaaf ...
- 016 sleep,wait,yield,join区别
1.线程通常有五种状态,创建,就绪,运行.阻塞和死亡状态.2.阻塞的情况又分为三种:(1).等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中.进入 ...
- 如何在Linux启动的时候执行一个命令
在Linux启动起来时,执行一个命令的设置方法== 例如:需要执行的命令是cvslockd ============第一种方式:根据运行级别配置======================== 第一步 ...
- 转 proc文件
/proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明/dev/kmem. /proc 里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. 下面对整个 /pro ...
- Android学习笔记(四) 定时器Timer
Android考虑到线程安全问题,不允许在线程中执行UI线程. 所以在线程中不允许有UI操作 可以利用Handler机制来接收Timer每隔一秒发出的信息,也可以直接利用handler机制的 1.方法 ...
- 洛谷 P1359 租用游艇 题解
题目传送门 这道题还是上模板啦~~SPFA大法好(本人还是懒得打邻接表) 一道橙题: 上代码: #include<bits/stdc++.h> using namespace std; ] ...