P2617 Dynamic Rankings 整体二分

在这里插入图片描述
树套树板子题,但是整体二分不管是时间复杂度还是空间复杂度都表现更优秀,所以用整体二分来水一波。
普通的整体二分是没有修改操作的。然鹅我们处理修改操作也比较容易,直接减上这个数,让后加上修改之后的数即可。这样按照时间戳来遍历的话,在修改之后的查询也是在修改之后的值。
还有要注意的是修改操作之后需要把数组的值也更新一下,不然你会得5分(逃。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
#define lowbit(x) ((x)&(-x))
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m,cnt;
int tr[N],a[N],ans[N];
struct Node
{int l,r,k,id,op;
}q[N],q1[N],q2[N];void add(int x,int c)
{for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=c;
}int sum(int x)
{int ans=0;for(int i=x;i;i-=lowbit(i)) ans+=tr[i];return ans;
}void solve(int l,int r,int L,int R)
{if(L>R) return;if(l==r){for(int i=L;i<=R;i++) if(q[i].op==2) ans[q[i].id]=l;return;}int mid=l+r>>1,cnt1,cnt2,x; cnt1=cnt2=0;for(int i=L;i<=R;i++){if(q[i].op==1){if(q[i].l<=mid) q1[++cnt1]=q[i],add(q[i].id,q[i].r);else q2[++cnt2]=q[i];}else{x=sum(q[i].r)-sum(q[i].l-1);if(q[i].k<=x) q1[++cnt1]=q[i];else q[i].k-=x,q2[++cnt2]=q[i];}}for(int i=1;i<=cnt1;i++) if(q1[i].op==1) add(q1[i].id,-q1[i].r);for(int i=1;i<=cnt1;i++) q[L+i-1]=q1[i];for(int i=1;i<=cnt2;i++) q[L+cnt1+i-1]=q2[i];solve(l,mid,L,L+cnt1-1); solve(mid+1,r,L+cnt1,R);
}int main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&a[i]),q[++cnt]={a[i],1,0,i,1};int tot=0;for(int i=1;i<=m;i++){char op[2];int l,r,k;scanf("%s%d%d",op,&l,&r);if(op[0]=='Q') scanf("%d",&k),q[++cnt]={l,r,k,++tot,2};else q[++cnt]={a[l],-1,0,l,1},q[++cnt]={r,1,0,l,1},a[l]=r;}solve(-INF,INF,1,cnt);for(int i=1;i<=tot;i++) printf("%d\n",ans[i]);return 0;
}
/**/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Domain Driven Design&Clean Architecture原则分层的新启动模板

本文的内容将在0.18.0中发布. Abp中文网将同步更新框架.敬请期待...MVC应用程序启动模板介绍MVC应用程序启动模板是基于领域驱动设计(DDD)分层(或根据偏好分层)的应用程序结构.在这篇文档中详细介绍了解决方案结构和项目参阅ASP.NET Core MVC 模板入门创建此模板的新解决方案并…

.Net Core 微服务容器系列基础目录篇

1.开场白HI&#xff0c;各位老铁&#xff0c;大家端午好&#xff0c;之前写了些关于.net core商城系列的文章&#xff0c;有点乱&#xff0c;今天心血来潮想着整理一下&#xff08;今天只是先把目录列出来&#xff0c;后面的每篇文章这两天会进行重新修改的&#xff0c;目前先将…

感谢诸君的陪伴,见证微信 SDK 的成长,内含黑科技福利

Senparc.Weixin SDK5000Stars5000 Star5005005000 Stars今天 SDK 已经超过 5000 Stars在此感谢大家的每一份支持和一直以来的关注是你们的信任和陪伴给了我们前行的力量 在未来的日子里也希望大家能够继续支持我们我们将以优秀的产品和服务来回馈你们的支持&#xff01;愿我们携…

我,宇宙最强编辑器,支持远程开发

Visual Studio Code 五月份更新之 1.35 版本已发布。此次更新的亮点包括更新 Visual Studio Code 图标 - 新版本更新了 logo。改进“转到定义&#xff08;Go to Definition&#xff09;”行为 - 通过多个定义的显示&#xff0c;更快速进行导航&#xff08;Navigation&#xff0…

.NET Core Run On Docker By Kubernetes 系列文章汇总

前言介绍.NET Core是微软新一代主力编程平台&#xff0c;开源、免费、跨平台、轻量级、高性能&#xff0c;支持Linux、Docker、k8s等环境&#xff0c;适合开发微服务、云原生、大型互联网应用、全开源解决方案。Docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们…

HDU - 1811 Rank of Tetris 并查集 + 拓扑序 +me

link 题意&#xff1a; 首先看到排名自然想到拓扑序&#xff0c;但是存在等于的情况&#xff0c;这就启发我们把等于的情况缩成一个点&#xff0c;让后在缩点后的图中进行拓扑即可。 对于不合法的情况当然是拓扑序没有遍历到应该遍历的点&#xff0c;所以只需要检查遍历了几个…

.NET Core 中使用 Humanizer 显示友好时间格式

今天在将一个 .net framework 项目迁移至 .net core 的过程中&#xff0c;在迁移到显示友好时间格式&#xff08;比如“1分钟前”&#xff0c;“1小时前”&#xff09;的代码时&#xff0c;找了找看有没有对应的开源库&#xff0c;结果找到了 Humanizer &#xff0c;顺手体验了…

Codeforces Round #698 (Div. 2)

B题 题意&#xff1a;定义一个牛逼的数是这个数十进制中至少包含一个数d。 现在给定d和若干询问&#xff0c;每个询问一个x&#xff0c;问x能否分解成若干d构成的牛逼的数之和。 看起来挺难搞的&#xff0c;不能快速的判断是否是牛逼的数而且也不能很好的挑选合适的数组成x。那…

Visual Studio 2019 16.1 使用 .NET Core 3.0

一.前言早在很久之前微软便公布 .NET Core 3.0 将支持开发Winform应用程序等等新特性&#xff0c;现如今 .NET Core 3.0 预览版已经出来第五个预览版了&#xff0c;从 .NET Core 2.2 到 3.0 将是一个大的跨越&#xff0c;从发布的预览版本个数来看&#xff0c;将会增加很多的功…

Insider Dev Tour 2019 全球巡演 苏州站

Insider Dev Tour微软&#xff0c;全球&#xff0c;巡演&#xff0c;内幕大会介绍Insider Dev Tour 是 Microsoft Build 技术大会的全球巡演活动&#xff0c;是微软面向广大开发者、技术爱好者&#xff0c;介绍其未来技术发展方向的盛会。在 Microsoft Build之后&#xff0c;会…

.NET Core 性能分析: xUnit.Performance 简介

xunit-performance 是xUnit的一个扩展&#xff0c; 使用它可以对.NET Core项目进行性能测试。官网&#xff1a;https://github.com/Microsoft/xunit-performancexUnit大家可能都用过&#xff0c;它是用来做单元测试的&#xff0c;它可以很快给开发人员功能是否OK的反馈。和xUni…

TeamCity+Rancher+Docker实现.Net Core项目DevOps

1.准备项1.1.服务器一台&#xff0c;1H4G&#xff08;更小内存应该也可以&#xff0c;自行测试&#xff09;&#xff0c;系统&#xff1a;Ubuntu 16.04 64位1.2.数据库一个&#xff0c;MYSQL,MSSQL都可以&#xff08;还有其他的&#xff0c;自行配置&#xff09;,教程是MSSQL1.…

.NET工程师的书单

短暂的假期里抽空整理了一份书单&#xff0c;以个人的见解这些应该是值得.NET工程师至少去看一遍的书籍。但所罗列的仅包括国内目前已出版的国外书籍的英文版&#xff0c;并不包含中文翻译及相关领域的中文书籍。这里没有任何歧视之意&#xff0c;只是更推荐工程师具备熟练阅读…

微服务架构下静态数据通用缓存机制

在分布式系统中&#xff0c;特别是最近很火的微服务架构下&#xff0c;有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案&#xff0c;这篇文章将结合一些实际的研发经验&#xff0c;尝试理清其中存在的关键问题以及探寻通用的解决之道。什么是静态数据这里静态…

Codeforces Round #700 (Div. 2) C. Searching Local Minimum 交互二分

传送门 题意: 给一个数组&#xff0c;让你找到a[i]<min(a[i1],a[i−1])a[i]<min(a[i1],a[i-1])a[i]<min(a[i1],a[i−1])位置iii&#xff0c;每次询问iii可以得到a[i]a[i]a[i]&#xff0c;最多询问100次&#xff0c;且a[0]a[n1]∞a[0]a[n1]∞a[0]a[n1]∞。 我们考虑假…

WCF服务端的.NET Core支持项目Core WCF 正式启动

长期以来在wcf客户端库https://github.com/dotnet/wcf里反应最强烈的就是.NET Core的服务端支持https://github.com/dotnet/wcf/issues/2695&#xff0c;在build 2019大会上微软明确说明在将WinForms&#xff0c;WPF和Entity Framework 6添加到.NET Core 3.0后&#xff0c;不打…

阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性

设备自身 CPU 温度、电源输入电压、内存使用率等&#xff0c;以及接入到设备的传感器如温度传感器、光敏传感器等&#xff0c;这些硬件的数据输出即是 属性 。设备将这些硬件的数据上传到阿里云物联网平台&#xff0c;实时显示这些设备的状态和实测数据&#xff0c;这个过程是 …

Docker最全教程之MySQL容器化 (二十五)

前言 MySQL是目前最流行的开源的关系型数据库&#xff0c;MySQL的容器化之前有朋友投稿并且写过此块&#xff0c;本篇仅从笔者角度进行总结和编写。目录 镜像说明 运行MySQL容器镜像 1.运行MySQL容器 2.修改“root”账户的认证模式和密码 管理MySQL 1. MySQL命…

Ocelot(五)- 流量限制、服务质量

作者&#xff1a;markjiang7m2原文地址&#xff1a;https://www.cnblogs.com/markjiang7m2/p/10965300.html源码地址&#xff1a;https://gitee.com/Sevenm2/OcelotDemo本文是我关于Ocelot系列文章的第五篇&#xff0c;流量限制、服务质量。Ocelot允许针对具体的服务接口进行流…

java中静态修饰符(static)的使用

static-静态 修饰属性 静态属性,也称为静态变量 类变量等 static 数据类型 属性名; 使用 静态内容独立存放在方法区 静态内容在内存中只有一份,被该类所有对象共享 普通属性所有对象在对象内容中都有一份 可以通过类名.静态属性名的方式直接访问静态属性 静态属性封装之…