struct node{
int l,r;
mutable int v;
node(int L,int R,int V):l(L),r(R),v(V){}
inline bool operator < (const node& b)const{
return l<b.l;
}
};
set<node>s;
typedef set<node>::iterator IT;
int ans;
inline IT split(int pos){
IT it = s.lower_bound(node(pos,pos,));
if(it!=s.end() && it->l==pos)return it;
--it;
int l=it->l,r=it->r,v=it->v;
s.erase(it);
s.insert(node(l,pos-,v));
return s.insert(node(pos,r,v)).first;
}
inline void assigns(int l,int r,int v){
///注意分裂应该是从右边先开始分裂,
///因为如果先从左边分裂,那么在L和R相同的时候,把R+1的区间给分裂掉,造成找不到R导致RE
///但是先分裂右边,那么it2不会把it1分裂掉
IT it2=split(r+),it1=split(l);
IT it=it1;
for (;it!=it2;++it){
ans-=it->v*(it->r - it->l+);
}
s.erase(it1,it2);
ans+=(r-l+)*v;
s.insert(node(l,r,v));
}

ODT模板的更多相关文章

  1. (42) Aeroo 模板实战

    用writer设计一个采购单的模板 我用的是libreoffice 5.2.x 对于这个表格是通过工具栏上的插入指定的表格行和列完成,然后排版 对于单号po00001 这这样插入的 这样就完成一个订单 ...

  2. 【BZOJ1858】[SCOI2010] 序列操作(ODT裸题)

    点此看题面 大致题意: 给你一个\(01\)序列,让你支持区间赋值.区间取反.区间求和以及求一段区间内最多有多少连续的\(1\)这些操作. \(ODT\) 这道题正解似乎是线段树,但码量较大,而且细节 ...

  3. 【树链剖分 ODT】cf1137F. Matches Are Not a Child's Play

    孔爷的杂题系列:LCT清新题/ODT模板题 题目大意 定义一颗无根树的燃烧序列为:每次选取编号最小的叶子节点形成的序列. 要求支持操作:查询一个点$u$在燃烧序列中的排名:将一个点的编号变成最大 $n ...

  4. Willem, Chtholly and Seniorious

    Willem, Chtholly and Seniorious https://codeforces.com/contest/897/problem/E time limit per test 2 s ...

  5. 【CF896C】Willem, Chtholly and Seniorious

    ODT模板题,ODT适合随机数据下具有维护区间推平操作的序列维护题目,时间复杂度较为玄学.. 代码如下 #include <bits/stdc++.h> #define pb push_b ...

  6. 【模板】珂朵莉树(ODT)(Codeforces 896C Willem, Chtholly and Seniorious)

    题意简述 维护一个数列,支持区间加,区间赋值,区间求第k小,区间求幂和 数据随机 题解思路 ODT是一种基于std::set的暴力数据结构. 每个节点对应一段区间,该区间内的数都相等. 核心操作spl ...

  7. (41) Aeroo 模板设计基础教程

    1.     理论基础 注:我采用libreoffice5.2设计讲解 1.1.     定义模板指令 模板指令的语法和Genshi 模板语言相兼容,可以用Libreoffice( Write, Ca ...

  8. ACM模板_axiomofchoice

    目录 语法 c++ java 动态规划 多重背包 最长不下降子序列 计算几何 向量(结构体) 平面集合基本操作 二维凸包 旋转卡壳 最大空矩形 | 扫描法 平面最近点对 | 分治 最小圆覆盖 | 随机 ...

  9. 模板库 ~ Template library

    TOC 建议使用 Ctrl+F 搜索 . 目录 小工具 / C++ Tricks NOI Linux 1.0 快速读入 / 快速输出 简易小工具 无序映射器 简易调试器 文件 IO 位运算 Smart ...

随机推荐

  1. idea目录结构子目录在父目录后面跟着改成树形结构

    1.点击项目窗口的设置按钮 2.取消Compact Middle Packages选项的对勾即可

  2. oracle 监听配置文件路径

    app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN listener.ora tnsnames.ora 配置监听直接在 tnsnames.o ...

  3. day38 05-Spring的BeanFactory与ApplicationContext区别

    ApplicationContext怎么知道它是一个工厂呢? BeanFactory也可以做刚才那些事情,只不过ApplicationContext对它有扩展.ApplicationContext间接 ...

  4. pytorch 常用问题解决

    1.RuntimeError: cuda runtime erorr (77): an illegal memory access was encountered at 在使用命令前面加上CUDA_L ...

  5. Oracle查询表里的重复数据方法

    select id from group by id having count(*) > 1 按照id分组并计数,某个id号那一组的数量超过1条则认为重复. 如何查询重复的数据 select 字 ...

  6. 基于pytest的接口测试

    最近要开展接口测试,起初打算使用公司已有的Fitnesse测试工具来进行接口测试.过程中发现,构造接口字段数据.测试数据都比较困难,接口参数多的时候,用例量就会很多,关键执行速度还慢.所以放弃了. 找 ...

  7. C++ operator new和new operator的区别

    new operator 当你写这种代码: string *ps = new string("Memory Management"); 你使用的new是new  operator. ...

  8. Ajax--serialize应用表单数据序列化

    一.jQuery+Ajax表单数据序列化 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...

  9. RestFul 与 RPC

    原文地址:https://blog.csdn.net/u014590757/article/details/80233901 RPC.REST API深入理解 一:RPC RPC 即远程过程调用(Re ...

  10. switch或判断

    <?php $num1 = 1; $num2 = 2; function int($num){ switch($num){ case 1: case 2: echo "1或2" ...