洛谷 P3586 [POI2015]LOG
2024-08-25 08:57:06
P3586 [POI2015]LOG
题目描述
维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a。2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进行s次操作。每次询问独立,即每次询问不会对序列进行修改。
输入输出格式
输入格式:
第一行包含两个正整数n,m(1<=n,m<=1000000),分别表示序列长度和操作次数。接下来m行为m个操作,其中1<=k,c<=n,0<=a<=10^9,1<=s<=10^9。
输出格式:
包含若干行,对于每个Z询问,若可行,输出TAK,否则输出NIE。
输入输出样例
说明
维护一个长度为n的序列,一开始都是0,支持以下两种操作:
1.U k a 将序列中第k个数修改为a。
2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进行s次操作。
每次询问独立,即每次询问不会对序列进行修改。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000010
using namespace std;
int a[maxn],x[maxn],y[maxn],z[maxn],num[maxn],hash[maxn];
int n,m,cnt;
struct node{
long long c[maxn];
void add(int x,int y){
while(x<=cnt){
c[x]+=y;
x+=x&-x;
}
}
long long query(int x){
long long res=;
while(x){
res+=c[x];
x-=x&-x;
}
return res;
}
}bit1,bit2;
int main(){
scanf("%d%d",&n,&m);
char s[];
for(int i=;i<=m;i++){
scanf("%s",s);
scanf("%d%d",&x[i],&y[i]);num[i]=y[i];
if(s[]=='U')z[i]=;
else z[i]=;
}
sort(num+,num+m+);
hash[cnt=]=num[];
for(int i=;i<=m;i++)
if(num[i]!=num[i-])hash[++cnt]=num[i];
for(int i=;i<=m;i++)y[i]=lower_bound(hash+,hash+cnt+,y[i])-hash;
for(int i=;i<=m;i++){
if(z[i]){
if(a[x[i]]){
int j=a[x[i]];
bit1.add(j,-);bit2.add(j,-hash[j]);
}
a[x[i]]=y[i];
bit1.add(y[i],);bit2.add(y[i],hash[y[i]]);
}
else {
long long num1=bit2.query(y[i]-);
long long num2=bit1.query(cnt);
long long num3=bit1.query(y[i]-);
if(num1>=1LL*(x[i]-num2+num3)*hash[y[i]])puts("TAK");
else puts("NIE");
}
}
return ;
}
最新文章
- 【Swift学习】Swift编程之旅---集合类型之字典(八)
- FineUI第十四天---布局之垂直布局和水平布局
- Hbase系统架构
- Winform开发框架之单据窗体生成(主从表,流水单号)
- Effective Java 42 Use varargs judiciously
- hdu 4508 湫湫系列故事——减肥记I(完全背包)
- oracle学习 九 游标的使用(持续更)
- (转).net程序员转战android第三篇---登录模块之静态登录
- webix .datatable 表格分页
- 关于Mac终端故障一直出现 [进程已完毕]
- python基础练习题
- 机器学习实战1-K均值
- JavaScrpt常用的封装方法
- greenplum中to_date函数注意点
- 20164318 毛瀚逸 Exp4 恶意代码分析
- Linux下通过 rm -f 删除大量文件时报错:Argument list too long
- ASP.NET Core WebApi 项目部署到 IIS 服务器的总结
- 面试题27:单链表向右旋转k个节点
- vue总结07 常用插件
- WPF绑定时要绑定属性,不要绑定字段
热门文章
- MySQL执行计划的讲解
- 如何解决SSH登录Solaris主机速度慢的问题
- Eclipse: “The import java.io cannot be resolved”
- elastic(7)bulk
- [mpm_winnt:error] [pid 28120:tid 15980] (OS 10038)在一个非套接字上尝试了一个操作。 : AH00332: winnt_accept: getsockname error on listening socket, is IPv6 available?
- hadoop-2.6.0.tar.gz + spark-1.6.1-bin-hadoop2.6.tgz + zeppelin-0.5.6-incubating-bin-all.tgz(master、slave1和slave2)(博主推荐)(图文详解)
- OpenCV4Android 不需要安装OpenCVManager,就可以运行的方法
- Codeforces #505(div1+div2) D Recovering BST
- Freemarker 使用注意事项
- SpringBoot11 读取properties文件、发送邮件