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。

输入输出样例

输入样例#1: 复制

3 8
U 1 5
U 2 7
Z 2 6
U 3 1
Z 2 6
U 2 2
Z 2 6
Z 2 1
输出样例#1: 复制

NIE
TAK
NIE
TAK

说明

维护一个长度为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 ;
}

洛谷 P3586 [POI2015]LOG的更多相关文章

  1. 洛谷P3586 [POI2015]LOG(贪心 权值线段树)

    题意 题目链接 Sol 显然整个序列的形态对询问没什么影响 设权值\(>=s\)的有\(k\)个. 我们可以让这些数每次都被选择 那么剩下的数,假设值为\(a_i\)次,则可以\(a_i\)次被 ...

  2. 【洛谷P3586】LOG

    题目大意:维护一个集合,支持单点修改.查询小于 X 的数的个数.查询小于 X 的数的和. 题解:学习到了动态开点线段树.对于一棵未经离散化的权值线段树来说,对于静态开点来说,过大的值域会导致不能承受的 ...

  3. 树状数组【洛谷P3586】 [POI2015]LOG

    P3586 [POI2015]LOG 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1 ...

  4. 洛谷P3582 [POI2015]KIN

    题目描述 共有\(m\)部电影,编号为\(1--m\),第\(i\)部电影的好看值为\(w[i]\).在\(n\)天之中(从\(1~n\)编号)每天会放映一部电影,第\(i\)天放映的是第\(f[i] ...

  5. BZOJ 4385 洛谷3594 POI2015 WIL-Wilcze doły

    [题解] 手残写错调了好久QAQ...... 洛谷的数据似乎比较水.. n个正整数!!这很重要 这道题是个类似two pointer的思想,外加一个单调队列维护当前区间内长度为d的子序列中元素之和的最 ...

  6. 洛谷P3588 [POI2015]PUS

    题面 sol:说了是线段树优化建图的模板... 就是把一整个区间的点连到一个点上,然后用那个点来连需要连一整个区间的点就可以了,就把边的条数优化成n*log(n)了 #include <queu ...

  7. 洛谷P3588 - [POI2015]Pustynia

    Portal Description 给定一个长度为\(n(n\leq10^5)\)的正整数序列\(\{a_n\}\),每个数都在\([1,10^9]\)范围内,告诉你其中\(s\)个数,并给出\(m ...

  8. 洛谷 P3585 [POI2015]PIE

    P3585 [POI2015]PIE 题目描述 一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色.你有一个a*b的印章,有些格子是凸起(会沾上墨水)的.你需要判断能否用这个印章印出纸上 ...

  9. 洛谷P3588 [POI2015]PUS(线段树优化建图)

    题面 传送门 题解 先考虑暴力怎么做,我们把所有\(r-l+1-k\)中的点向\(x\)连有向边,表示\(x\)必须比它们大,那么如果这张图有环显然就无解了,否则的话我们跑一个多源最短路,每个点的\( ...

随机推荐

  1. Java基础--单例类创建和测试

    单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在.单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间:能够避免由于操作多个实例导致 ...

  2. 机器学习:SVM(核函数、高斯核函数RBF)

    一.核函数(Kernel Function) 1)格式 K(x, y):表示样本 x 和 y,添加多项式特征得到新的样本 x'.y',K(x, y) 就是返回新的样本经过计算得到的值: 在 SVM 类 ...

  3. mongo shell命令

    https://docs.mongodb.com/manual/mongo/ 一.MongoDB客户端使用 1.mongo:启动mongo的客户端,和mongo客户端的登录 [root@cmos1 b ...

  4. 自定义数据校验(4)---demo3---bai

    工具类:CharUtil package com.etc.util; import java.util.regex.Pattern; public class CharUtil { public st ...

  5. Maven构建war项目添加版本号

    上午接到一个新的需求,项目的war包打包之后,放在了阿里的OSS上,供其他项目下载更新时使用,但是只有一个项目名,也就是pom的artifactId,预期的结果是要加上一个版本号,能区分出是什么时候打 ...

  6. createPlaceholder 函数

    function createPlaceholder(id,text,top,left){ top = top || 0; left = left || 0; var obj = $('#' + id ...

  7. webview加载url出现空白页面,有些页面没问题

    用webview加载url出现空白页,测试后把百度,Github之类的url传进去都没问题,后来发现是因为布局的原因,因为webview对不同的网站兼容性没有那么强,特别是现在出现的各种前端布局,没法 ...

  8. day17-jdbc 6.Connection介绍

    package cn.itcast.jdbc; import com.mysql.jdbc.Connection; import java.sql.DriverManager; import java ...

  9. css知多少(9)——float下篇(转)

    css知多少(9)——float下篇   float内容比较多,咱们分上.下两篇来介绍,上篇已经写完,这是下篇.建议大家先把上篇看了,再来看下文,精彩内容不要掠过啊. 1. 清除float <上 ...

  10. ES02 变量、数组、对象、方法

    1 变量 1.1 变量的声明 利用var关键字来声明变量,例如: var a = 100; <!DOCTYPE html> <html> <head> <me ...