线段树版的海报

实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊

本来以为要离散的,结果没打就A了

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. const int Max=40000001;
  6. struct Node{
  7. int x,y,id;
  8. }node[10001];
  9. int n,m,sum[Max],lazy[Max],tot[1001];
  10. void pushdown(int o,int len){//pushdown:对于lazy标记的一个下传
  11. if(lazy[o]){
  12. int left=o<<1,right=left+1;
  13. lazy[right]=lazy[left]=lazy[o];
  14. sum[left]=lazy[o];
  15. sum[right]=lazy[o];
  16. lazy[o]=0;
  17. }
  18. }
  19. void update(int o,int l,int r,int x,int y,int v){//一个上传操作
  20. if(x<=l and r<=y){
  21. sum[o]=lazy[o]=v;//sum[i]表示i这个节点当前的颜色
  22. return;
  23. }
  24. pushdown(o,r-l+1);
  25. int mid=(l+r)>>1,left=o<<1,right=left+1;
  26. if(x<=mid)update(left,l,mid,x,y,v);
  27. if(y>mid)update(right,mid+1,r,x,y,v);
  28. }
  29. void query(int o,int l,int r,int x,int y){//统计各个颜色都有多少个是外露的
  30. if(!(l^r)){
  31. tot[sum[o]]++;//即sum[o]这个节点的颜色的tot+1,tot[i]表示i这个颜色外露的个数
  32. return;
  33. }
  34. int mid=(l+r)>>1,left=o<<1,right=left+1;
  35. pushdown(o,r-l+1);
  36. if(x<=mid)query(left,l,mid,x,y);
  37. if(mid+1<=y)query(right,mid+1,r,x,y);
  38. }
  39. int main(){
  40. int maxn=-1,ans=0;
  41. scanf("%d%d",&m,&n);
  42. for(register int i=1;i<=n;i++){
  43. scanf("%d%d",&node[i].x,&node[i].y);
  44. maxn=max(node[i].y,maxn);
  45. node[i].id=i;
  46. }
  47. for(register int i=1;i<=n;i++){
  48. update(1,1,maxn,node[i].x,node[i].y,node[i].id);
  49. }
  50. query(1,1,maxn,1,maxn);//统计答案
  51. for(register int i=1;i<=n;i++){
  52. if(tot[i])ans++;
  53. }
  54. printf("%d\n",ans);
  55. return 0;
  56. }

Luogu P3740 [HAOI2014] 贴海报 线段树的更多相关文章

  1. BZOJ 5168 && Luogu P3740 [HAOI2014]贴海报 线段树~~

    据说某谷数据十分水...但幸好BZOJ上也过了...话说我记得讲课时讲的是奇奇怪怪的离散化..但现在突然觉得什么都可以线段树瞎搞了...QAQ 直接就是这个区间有没有被覆盖,被覆盖直接return: ...

  2. 【题解】Luogu P3740 [HAOI2014]贴海报

    woc,今天已经是day -1了 再写一颗珂朵莉树来++rp吧 否则就要AFO了qaq 这有可能是我最后一篇题解/博客qaq 原题传送门:P3740 [HAOI2014]贴海报 考前刷水题到底是对还是 ...

  3. Luogu P3740 [HAOI2014]贴海报_线段树

    线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...

  4. BZOJ5168: [HAOI2014]贴海报 线段树

    Description Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委 员 会为选民准备了一个张贴海报的electoral墙.张贴规则如下 ...

  5. luogu P2574 XOR的艺术 (线段树)

    luogu P2574 XOR的艺术 (线段树) 算是比较简单的线段树. 当区间修改时.\(1 xor 1 = 0,0 xor 1 = 1\)所以就是区间元素个数减去以前的\(1\)的个数就是现在\( ...

  6. 【原创】洛谷 LUOGU P3373 【模板】线段树2

    P3373 [模板]线段树 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第 ...

  7. 【原创】洛谷 LUOGU P3372 【模板】线段树1

    P3372 [模板]线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别 ...

  8. 洛谷P3740 [HAOI2014]贴海报

    题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...

  9. 洛谷 P3740 [HAOI2014]贴海报

    题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...

随机推荐

  1. 同一个Tomcat下不同项目之间的session共享

    最近发现项目运行过程中经常会抛出一个 NullPointerException的异常,经检查发现异常出现的地方是日志模板,一阵检查,正常无误 (把所有记录日志的地方都点了一遍,心里是崩溃的),万念俱灰 ...

  2. Factstone Benchmark(数学)

    http://poj.org/problem?id=2661 题意:Amtel在1960年发行了4位计算机,并实行每十年位数翻一番的策略,将最大整数n作为改变的等级,其中n!表示计算机的无符号整数(n ...

  3. strupr函数

    2019-06-03 15:13:39 strupr()函数! strupr,函数的一种,将字符串s转换为大写形式. 说明:只转换s中出现的小写字母,不改变其它字符.返回指向s的指针. 兼容性说明:s ...

  4. MySQL 批量插入值

    MySQL 批量插入值 今天遇到个问题,需要从类似以下语句中的各个小括号[其实也有中括号等]抽取相关字段进行组合[相关规则,此处略去不提],并保存到数据库中,此时如果每次插入一条,会连续进行多次插入, ...

  5. 涨知识III - 百度2016校园招聘——移动软件研发工程师

    1.列关于线程调度的叙述中,错误的是(). 正确答案 :BE A调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会 B调用线程的yeild()方法,只会使与当前线程相同优先级的线 ...

  6. Elasticsearch之CURL命令的bulk批量操作

    大家,也可去看看我下面的博客 Elasticsearch之批量操作bulk 官网上,是举例了新建一个requests文件. [hadoop@master elasticsearch-]$ pwd /h ...

  7. Hadoop Hive概念学习系列之hive里的视图(十二)

    不多说,直接上干货! 可以先,从MySQL里的视图概念理解入手 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,与基本表不同,它是一个虚表.在数据库中,存放的只是视图的定义,而不存放视图包含的 ...

  8. asp.net mvc 最简单身份验证 [Authorize]通过的标准

    [Authorize] public ContentResult Index2() { return Content("验证通过了"); } 经常能够看到某个Controler下的 ...

  9. MySQL关于存储过程

    代码示例: 1.IN输入参数: delimiter // create PROCEDURE proc1(IN sid int) begin select * from student where id ...

  10. Ajax——异步基础知识(一)

    基础概念 1.异步请求可以做到偷偷向服务器发送请求,而页面却不刷新 2.get异步请求传递参数是通过url追加键值对的方式 3.post异步请求比较特殊,需要设置请求的类型 User-Agent:浏览 ...