线段树成段更新+区间最值。

注意某人的乘车区间是[a, b-1],因为他在b站就下车了。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1
#define lc rt << 1
#define rc rt << 1 | 1using namespace std;const int MAXN = 1000100;struct node
{int l, r;
};node D[MAXN];
int limit, Q;
int maxi[ MAXN << 2 ];
int lazy[ MAXN << 2 ];
int N;void build( int l, int r, int rt )
{maxi[rt] = lazy[rt] = 0;if ( l == r ) return;int m = ( l + r ) >> 1;build( lson );build( rson );return;
}void PushUp( int rt )
{maxi[rt] = max( maxi[lc], maxi[rc] );return;
}void PushDown( int rt )
{if ( lazy[rt] ){lazy[lc] += lazy[rt];lazy[rc] += lazy[rt];maxi[lc] += lazy[rt];maxi[rc] += lazy[rt];lazy[rt] = 0;}return;
}void update( int L, int R, int l, int r, int rt )
{if ( L <= l && r <= R ){lazy[rt] += 1;maxi[rt] += 1;return;}PushDown( rt );int m = ( l + r ) >> 1;if ( L <= m ) update( L, R, lson );if ( R > m )  update( L, R, rson );PushUp( rt );return;
}int query( int L, int R, int l, int r, int rt )
{if ( L <= l && r <= R ){return maxi[rt];}PushDown( rt );int m = ( l + r ) >> 1;int res = -10;if ( L <= m ) res = max( res, query( L, R, lson ) );if ( R > m )  res = max( res, query( L, R, rson ) );PushUp( rt );return res;
}int main()
{int T, cas = 0;scanf( "%d", &T );while ( T-- ){scanf( "%d%d", &limit, &Q );N = 0;for ( int i = 0; i < Q; ++i ){int u, v;scanf( "%d%d", &u, &v );N = max( N, v );--v;D[i].l = u, D[i].r = v;}build( 1, N, 1 );printf( "Case %d:\n", ++cas );for ( int i = 0; i < Q; ++i ){int ans = query( D[i].l, D[i].r, 1, N, 1 );if ( ans < limit ){printf( "%d ", i + 1 );update( D[i].l, D[i].r, 1, N, 1 );}}puts("\n");}return 0;
}

转载于:https://www.cnblogs.com/GBRgbr/p/3322260.html

HDU 3577 Fast Arrangement ( 线段树 成段更新 区间最值 区间最大覆盖次数 )相关推荐

  1. HDU 3397 Sequence operation 线段树 成段更新 区间合并

    比较综合的题. 两个标记  setv,xorr.setv的优先级高于xorr,当一个节点获得一个setv时,他之前的xorr要清除. //#pragma comment(linker, "/ ...

  2. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  3. HDU 3974 Assign the task(dfs时间戳+线段树成段更新)

    题意:给定点的上下级关系,规定假设给i分配任务a.那么他的全部下属.都停下手上的工作,開始做a. 操作 T x y 分配x任务y,C x询问x的当前任务: Sample Input 1 5 4 3 3 ...

  4. HDOJ 1698 Just a Hook(线段树成段更新)

    题意: 屠夫的钩子区间是1~n,每段可能由铜,银,金组成,价值分别为1,2,3,进行一系列的更新之后,求钩子的总价值. 思路: 线段树的成段更新:要设置一个临时的线段树,每次更新的时候把更新段的值放在 ...

  5. HDU 6203 ping ping ping lca 线段树成段更新

    题目链接:HDU 6203 ping ping ping Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  6. Wikioi 1081 线段树成段更新单点查询

    线段树练习飘逸的写法,自从自己改成这样的写法之后,线段树就没再练过,如今最终练得上了. 由于这里查询仅仅是查询了叶子结点,所以pushUp函数就用不上了,只是我没去掉之前是3ms.去掉之后反而变成4m ...

  7. UVA 12501 Bulky process of bulk reduction ——(线段树成段更新)

    和普通的线段树不同的是,查询x~y的话,给出的答案是第一个值的一倍加上第二个值的两倍一直到第n个值的n倍. 思路的话,就是关于query和pushup的方法.用一个新的变量sum记录一下这个区间里面按 ...

  8. hdu 1698 线段树成段更新

    这么重要的数据结构还是得学啊.仿notonlysuccess的代码风格 #include <cstdio> #include <algorithm> #include < ...

  9. POJ3468 A Simple Problem with Integers【线段树 成段更新+求和 lazy标志】

    用longlong替换__int64也成. #define LL long long 输入输出用%lld Problem: 3468   User: qq1203456195 Memory: 4284 ...

  10. UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)

    秋实大哥与花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

最新文章

  1. Cocos2d-x3.2 重力感应
  2. ThreadPoolExecutor源码解析(二)
  3. Access ADO多连接时数据延迟无法同步无法及时更新的解决办法
  4. Java web 面试题
  5. 09-百度ai图片识别
  6. Android之TextUtils类介绍
  7. 人物角色群体攻击判定二(叉乘来判断敌人的位置)
  8. 支持XML的公司和它们的开发工具有哪些?
  9. Linux系统管理(10)——Centos8 重启网络服务 网络相关命令
  10. 17.凤凰架构:构建可靠的大型分布式系统 --- 技术演示工程实践
  11. Atitit 集团与个人的完整入口列表 attilax的完整入口 1. 集团与个人的完整入口列表 1 2. 流量入口概念 2 3. 流量入口的历史与发展 2 1.集团与个人的完整入口列表
  12. ArcGIS软件的基本使用
  13. c++11 日期和时间工具(std::chrono::duration)(一)
  14. Android ToolBar修改返回按钮图标
  15. 2021-金三银四跳槽-还愿
  16. 《石器时代》《魔力宝贝》图像压缩格式的破解
  17. qrcode二维码实现
  18. 华为5885H V5配置RAID
  19. 汇编语言程序设计V-贺利坚-专题视频课程
  20. 【人工智能 Open AI】设计一个SQL Where DSL模型,使用 golang 代码来实现DSL的翻译成SQL。

热门文章

  1. python-unicode十进制数字转中文
  2. 在ArcScene中导入显示自己在SketchUp创建并经过修饰的模型
  3. java使用redis的demo,Javaredisdemo
  4. 计算机应用基础教材提纲,《计算机应用基础》课程教学大纲
  5. linux ns级定时器_linux 用户空间获得纳秒级时间ns
  6. 主机overlay和网络overlay_边缘计算中kubernetes网络能大一统吗?
  7. 30天自制操作系统 pdf_30天自制操作系统-汇编实现初版镜像
  8. python 文档字符串标准_Spyder docstrings文档字符串的标准
  9. java 循环字符_在Java中从循环结果创建字符串
  10. linux根据文件日期批量scp,linux系统批量传输文件(SCP)