中文题面

据说正解是动态开点线段树而且标记也不难下传的样子

然而这种区间推平的题目还是喜欢写珂朵莉树啊……码量小……

虽然真要构造的话随便卡……

  1. //minamoto
  2. #include<cstdio>
  3. #include<set>
  4. #include<iostream>
  5. #define IT set<node>::iterator
  6. using namespace std;
  7. #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
  8. char buf[<<],*p1=buf,*p2=buf;
  9. inline int read(){
  10. #define num ch-'0'
  11. char ch;bool flag=;int res;
  12. while(!isdigit(ch=getc()))
  13. (ch=='-')&&(flag=true);
  14. for(res=num;isdigit(ch=getc());res=res*+num);
  15. (flag)&&(res=-res);
  16. #undef num
  17. return res;
  18. }
  19. char sr[<<],z[];int K=-,Z;
  20. inline void Ot(){fwrite(sr,,K+,stdout),K=-;}
  21. inline void print(int x){
  22. if(K><<)Ot();if(x<)sr[++K]=,x=-x;
  23. while(z[++Z]=x%+,x/=);
  24. while(sr[++K]=z[Z],--Z);sr[++K]='\n';
  25. }
  26. struct node{
  27. int l,r;mutable int v;
  28. node(int L,int R=-,int V=):l(L),r(R),v(V){}
  29. inline bool operator <(const node &b)const
  30. {return l<b.l;}
  31. };
  32. set<node> s;int sum;
  33. IT split(int pos){
  34. IT it=s.lower_bound(node(pos));
  35. if(it!=s.end()&&it->l==pos) return it;
  36. --it;
  37. int l=it->l,r=it->r,v=it->v;
  38. s.erase(it);
  39. s.insert(node(l,pos-,v?pos-l:));
  40. return s.insert(node(pos,r,v?r-pos+:)).first;
  41. }
  42. void assign(int l,int r,int v){
  43. IT itr=split(r+),itl=split(l);
  44. for(IT it=itl;it!=itr;++it) sum-=it->v;
  45. s.erase(itl,itr),s.insert(node(l,r,v*(r-l+)));
  46. sum+=v*(r-l+);
  47. }
  48. int main(){
  49. // freopen("testdata.in","r",stdin);
  50. int n=read(),q=read();
  51. s.insert(node(,n+,));sum=n;
  52. while(q--){
  53. int l=read(),r=read();
  54. assign(l,r,read()-);
  55. print(sum);
  56. }
  57. return Ot(),;
  58. }

CF915E Physical Education Lessons(珂朵莉树)的更多相关文章

  1. CF915E Physical Education Lessons 珂朵莉树

    问题描述 CF915E LG-CF915E 题解 \(n \le 10^9\) 看上去非常唬人. 但是这种区间操作的题,珂朵莉树随便跑啊. \(\mathrm{Code}\) #include< ...

  2. CF915E Physical Education Lessons 动态开点线段树

    题目链接 CF915E Physical Education Lessons 题解 动态开点线段树 代码 /* 动态开点线段树 */ #include<cstdio> #include&l ...

  3. 【题解】Luogu CF915E Physical Education Lessons

    原题传送门:CF915E Physical Education Lessons 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看吧 这道题很简单啊 每个操作就是区间赋值,顺带把总和修 ...

  4. [转]我的数据结构不可能这么可爱!——珂朵莉树(ODT)详解

    参考资料: Chtholly Tree (珂朵莉树) (应某毒瘤要求,删除链接,需要者自行去Bilibili搜索) 毒瘤数据结构之珂朵莉树 在全是珂学家的珂谷,你却不知道珂朵莉树?来跟诗乃一起学习珂朵 ...

  5. 洛谷AT2342 Train Service Planning(思维,动态规划,珂朵莉树)

    洛谷题目传送门 神仙思维题还是要写点东西才好. 建立数学模型 这种很抽象的东西没有式子描述一下显然是下不了手的. 因为任何位置都以\(k\)为周期,所以我们只用关心一个周期,也就是以下数都在膜\(k\ ...

  6. 洛谷P4344 [SHOI2015]脑洞治疗仪(珂朵莉树)

    传送门 看到区间推倒……推平就想到珂朵莉树 挖脑洞直接assign,填坑先数一遍再assign再暴力填,数数的话暴力数 //minamoto #include<iostream> #inc ...

  7. 洛谷P2787 语文1(chin1)- 理理思维(珂朵莉树)

    传送门 一看到区间推倒……推平操作就想到珂朵莉树 区间推平直接assign,查询暴力,排序的话开一个桶统计,然后一个字母一个字母加就好了 开桶统计的时候忘了保存原来的左指针然后挂了233 //mina ...

  8. 洛谷P2082 区间覆盖(加强版)(珂朵莉树)

    传送门 虽然是黄题而且还是一波离散就能解决的东西 然而珂朵莉树还是很好用 相当于一开始区间全为0,然后每一次区间赋值,问最后总权值 珂朵莉树搞一搞就好了 //minamoto #include< ...

  9. 洛谷P2572 [SCOI2010]序列操作(珂朵莉树)

    传送门 珂朵莉树是个吼东西啊 这题线段树代码4k起步……珂朵莉树只要2k…… 虽然因为这题数据不随机所以珂朵莉树的复杂度实际上是错的…… 然而能过就行对不对…… (不过要是到时候noip我还真不敢打… ...

随机推荐

  1. ***ps -ef |grep 输出的具体含义是什么?

    Q: 比如:[root@localhost ~]# ps -ef | grep ApacheJetspeedroot 18887 18828 0 08:09 pts/0 00:00:00 grep A ...

  2. Codeforces 653D Delivery Bears【二分+网络流】

    题目链接: http://codeforces.com/problemset/problem/653/D 题意: x个熊拿着相同重量的物品,从1号结点沿着路走到N号结点,结点之间有边相连,保证可以从1 ...

  3. 洛谷——P1262 间谍网络

    P1262 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意 ...

  4. 打开input输入的时候,css中position:absolute/fixed定位的时候,定位元素上移问题解决

    1.异常代码 <style> .box{ min-height: 100vh; width: 100%; position: relative; } .position{ position ...

  5. Semaphore使用

    Semaphore使用

  6. Ansible 详细用法说明(一)

    一.概述 运维工具按需不需要有代理程序来划分的话分两类: agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix agentless(无须代理工具 ...

  7. Android开发:怎样隐藏自己的app应用

    本文主要介绍怎样通过改动AndroidManifest.xml清单文件来达到隐藏自身应用的目的,不是隐藏第三方应用.为了不浪费大家时间.特此说明. 转载请注明作者xiong_it和链接:http:// ...

  8. 网络基础笔记——OSI七层模型

    OSI七层模型 由于整个网络连接的过程相当复杂,包含硬件.软件数据封包与应用程序的互相链接等等.假设想要写一支将联网所有功能都串连在一块的程序.那么当某个小环节出现故障时,整仅仅程序都须要改写.所以我 ...

  9. C语言细节笔记1

    /******************************************************************************* ——笔记 1. 函数申明的书写. 可以 ...

  10. create-react-app 使用 webpack 打包压缩失败

    问题,正常 npm run build 打包后,发现打包后的文件异常大,有 > 20M 的大小 分析, 1.起初以为是代码本身过大的原因导致的,所以一直在想如何进行代码拆分使得文件能尽可能的小, ...