尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

ABC389F

ABC389F
📅 发布时间:2026/6/17 19:02:01

赛后发现漏了一个显然性质,然后就过了,还是要多练。

这个显然性质是:如果有两个人初始等级分分别为 \(x,y\) 且 \(x<y\),那么在经历若干次比赛后,则 \(x\le y\),即相对大小不变化。为什么正确呢?对于一场比赛,如果 \(x\) 加分,\(y\) 不加分,则 \(x\) 最多与 \(y\) 相同;如果 \(x\) 不加分,\(y\) 加分,则还是 \(x < y\)。于是该性质是正确的。

有了这个性质,我们就可以解决这道题了。先将所有询问离线下来,并按初始等级分从小到大排序。修改时,单调性不变,整个等级分序列的顺序不会改变,因此可以在线段树上通过维护区间最大值和最小值来确定修改的区间,且该区间是连续的。最后再还原到答案数组即可。

于是这道题就以 \(O(n\log n)\)(\(n,q\) 同阶)的复杂度完成了。

#include <iostream>
#include <cstdio>
#include <algorithm>
#define N 500001using namespace std;struct T
{int mx,mi,id,lzy;
}t[N * 4];int n,m,ql[N],qr[N],ans[N];
struct Q
{int v,id;
}a[N];
int read( void )
{int x = 0;char ch = getchar();while( ch < '0' || ch > '9' )ch = getchar();while( ch >= '0' && ch <= '9' )x = x * 10 + ch - '0',ch = getchar();return x;
}void write( int x )
{if( x <= 9 ){putchar( x + '0' );return;}write( x / 10 );putchar( x % 10 + '0' );return;
}void pushup( int u )
{t[u].mx = max( t[u << 1].mx , t[u << 1 | 1].mx );t[u].mi = min( t[u << 1].mi , t[u << 1 | 1].mi );return;
}void pushdown( int u )
{t[u << 1].lzy += t[u].lzy;t[u << 1].mx += t[u].lzy;t[u << 1].mi += t[u].lzy;t[u << 1 | 1].lzy += t[u].lzy;t[u << 1 | 1].mx += t[u].lzy;t[u << 1 | 1].mi += t[u].lzy;t[u].lzy = 0;return;
}void build( int u , int l , int r )
{if( l == r ){t[u].mx = t[u].mi = a[l].v;t[u].id = a[l].id;return;}int mid = ( l + r ) >> 1;build( u << 1 , l , mid );build( u << 1 | 1 , mid + 1 , r );pushup( u );return;
}void update( int u , int l , int r , int L , int R )
{if( l == r ){if( L <= t[u].mi && t[u].mx <= R )t[u].mx ++,t[u].mi ++;return;}if( L <= t[u].mi && t[u].mx <= R ){
//		cout << L << ' ' << R << ' ' << l << ' ' << r << ' ' << t[u].mi << ' ' << t[u].mx << '\n';t[u].mx ++,t[u].mi ++;t[u].lzy ++;return;}pushdown( u );int mid = ( l + r ) >> 1;if( L <= t[u << 1].mx ) update( u << 1 , l , mid , L , R );if( R >= t[u << 1 | 1].mi ) update( u << 1 | 1 , mid + 1 , r , L , R );pushup( u );return;
}void rbuild( int u , int l , int r )
{if( l == r ){ans[t[u].id] = t[u].mx;return;}pushdown( u );int mid = ( l + r ) >> 1;rbuild( u << 1 , l , mid );rbuild( u << 1 | 1 , mid + 1 , r );return;
}bool cmp( Q x , Q y )
{return x.v < y.v;
}int main()
{m = read();for( int i = 1 ; i <= m ; i ++ )ql[i] = read(),qr[i] = read();n = read();for( int i = 1 ; i <= n ; i ++ )a[i].v = read(),a[i].id = i;sort( a + 1 , a + n + 1 , cmp );build( 1 , 1 , n );for( int i = 1 ; i <= m ; i ++ )update( 1 , 1 , n , ql[i] , qr[i] );rbuild( 1 , 1 , n );for( int i = 1 ; i <= n ; i ++ ){write( ans[i] );putchar( '\n' );}return 0;
}
我们会走到一起的。

相关新闻

  • ABC150 C-F
  • 【游戏设计】五子棋设计思路
  • LG10516

最新新闻

  • 西安专业定制私家团旅行社排行 合规服务商盘点 - 起跑123
  • 2026 北京黄金回收实力梯队公示,全城优质连锁门店实力深度盘点 - 奢侈品回收测评
  • 嵌入式调试实战:观察点与寄存器操作在CodeWarrior中的高效应用
  • 2026成都黄金回收价格对比:收的顶同城高价回收实测 - 奢侈品回收评测
  • 2026年6月最新雅典中国官方售后电话地址及客户服务网点查询 - 亨得利官方服务中心
  • 上海非法吸收公众存款罪律师推荐|非吸、企业融资、团队涉案辩护 - 法律资讯

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号