题意:

n,q<=1e5,a[i],b[i][j]<=1e9,保证能力值互不相同,询问之间保留前面的影响

思路:其实把大于a[1]的看成0,小于的看成1,设第i天小于a[1]的有b[i]个,本质上就是这样一个过程:

刚开始有b[0]个小于a[1]的,第1天先减去r[1]看是否小于0,若小于0则结束,再加上b[1],以此类推

由此可见每次询问只是单点修改了b[x],判断的话就是在判最小的前缀和是否<0

用线段树维护一下最小的前缀和即可

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
//typedef pair<ll,ll>P;
#define N 200010
//#define M 200010
#define INF 1e9
#define fi first
#define se second
#define MP make_pair
#define pb push_back
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1 const ll MOD=1e9+,inv2=(MOD+)/;
double eps=1e-;
int dx[]={-,,,};
int dy[]={,,-,}; struct node
{
int s,tag;
}t[N<<]; vector<int> c[N];
int r[N],b[N],a[N],d[N]; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} void pushdown(int p)
{
if(t[p].tag!=)
{
t[ls].s+=t[p].tag;
t[rs].s+=t[p].tag;
t[ls].tag+=t[p].tag;
t[rs].tag+=t[p].tag;
t[p].tag=;
}
} void pushup(int p)
{
t[p].s=min(t[ls].s,t[rs].s);
} void build(int l,int r,int p)
{
if(l==r)
{
t[p].s=d[l];
t[p].tag=;
return;
}
int mid=(l+r)>>;
build(l,mid,ls);
build(mid+,r,rs);
pushup(p);
} void update(int l,int r,int x,int y,int v,int p)
{
if(x<=l&&r<=y)
{
t[p].s+=v;
t[p].tag+=v;
return;
}
pushdown(p);
int mid=(l+r)>>;
if(x<=mid) update(l,mid,x,y,v,ls);
if(y>mid) update(mid+,r,x,y,v,rs);
pushup(p);
} int main()
{
//freopen("1.in","r",stdin);
int n=read(),m=read(),q=read();
rep(i,,n) a[i]=read();
rep(i,,n)
if(a[i]<a[]) b[]++;
r[]=;
rep(i,,m)
{
r[i]=read();
b[i]=;
c[i].pb(-);
rep(j,,r[i])
{
int x=read();
c[i].pb(x);
if(x<a[]) b[i]++;
}
}
rep(i,,n) d[i]=d[i-]+b[i-]-r[i-];
rep(i,,n) d[i]-=r[i]; build(,m,);
while(q--)
{
int x=read(),y=read(),z=read();
if(c[x][y]<a[]&&z>a[])
{
b[x]--;
if(x+<=m) update(,m,x+,m,-,);
}
if(c[x][y]>a[]&&z<a[])
{
b[x]++;
if(x+<=m) update(,m,x+,m,,);
}
int tmp=t[].s;
if(tmp<) printf("0\n");
else printf("1\n");
c[x][y]=z;
}
return ;
}

【CF1252G】Performance Review(线段树)的更多相关文章

  1. HDU5023:A Corrupt Mayor's Performance Art(线段树区域更新+二进制)

    http://acm.hdu.edu.cn/showproblem.php?pid=5023 Problem Description Corrupt governors always find way ...

  2. hdu 5023 A Corrupt Mayor's Performance Art 线段树

    A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100 ...

  3. hdu----(5023)A Corrupt Mayor's Performance Art(线段树区间更新以及区间查询)

    A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100 ...

  4. HDU 5023 A Corrupt Mayor's Performance Art 线段树区间更新+状态压缩

    Link:  http://acm.hdu.edu.cn/showproblem.php?pid=5023 #include <cstdio> #include <cstring&g ...

  5. A Corrupt Mayor's Performance Art(线段树区间更新+位运算,颜色段种类)

    A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100 ...

  6. ACM学习历程—HDU 5023 A Corrupt Mayor's Performance Art(广州赛区网赛)(线段树)

    Problem Description Corrupt governors always find ways to get dirty money. Paint something, then sel ...

  7. HDU 5023 A Corrupt Mayor's Performance Art(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023 解题报告:一面墙长度为n,有N个单元,每个单元编号从1到n,墙的初始的颜色是2,一共有30种颜色 ...

  8. HDU 5023 A Corrupt Mayor's Performance Art (据说是线段树)

    题意:给定一个1-n的墙,然后有两种操作,一种是P l ,r, a 把l-r的墙都染成a这种颜色,另一种是 Q l, r 表示,输出 l-r 区间内的颜色. 析:应该是一个线段树+状态压缩,但是我用s ...

  9. hdu - 5023 - A Corrupt Mayor's Performance Art(线段树)

    题目原文废话太多太多太多,我就不copyandpaste到这里啦..发个链接吧题目 题目意思就是:P  l  r  c  将区间 [l ,r]上的颜色变成c    Q  l r 就是打印出区间[l,r ...

随机推荐

  1. numpy库中数组的数据类型

    numpy库中数组的数据类型 dtype是一个特殊的对象,它含有ndarray将一块内存解释为特殊数据类型所需要的信息 指定数据类型创建数组 >>> import numpy as ...

  2. Coding 地址

    Coding 连接 https://dev.tencent.com/u/leexi

  3. oracle系统视图SQL语句整理

    -- DBA/ALL/USER/V_$/GV_$/SESSION/INDEX开头的绝大部分都是视图 -- DBA_TABLES意为DBA拥有的或可以访问的所有的关系表. -- ALL_TABLES意为 ...

  4. Y7000 安装ubuntu16.04.6 的tips :禁用nouveau 、Wifi 问题 、nvidia 驱动安装

    由于最近要跑DeepLearning 所以在自己的Y7000上装一个Ubuntu ,自己碰了好多壁 写下来以防止自己忘掉以便后续再用! 配置:i7-8750H +GeForce GTX 1050Ti ...

  5. 关系型数据库为什么喜欢使用B+树作为索引结构? (转)

    问题1. 数据库为什么要设计索引? 图书馆存了1000W本图书,要从中找到<架构师之路>,一本本查,要查到什么时候去? 于是,图书管理员设计了一套规则: (1)一楼放历史类,二楼放文学类, ...

  6. C++的同名属性(没有虚拟属性)、同名普通函数、同名静态函数(没有虚拟静态函数),是否被覆盖

    例子1:属性的覆盖#include "stdafx.h" class A {public: int i; A() { i=1; }}; class B: public A {pub ...

  7. 计算机系统结构总结_Branch prediction

    Textbook:<计算机组成与设计——硬件/软件接口>  HI<计算机体系结构——量化研究方法>          QR Branch Prediction 对于下面的指令: ...

  8. tomcat 启动日志乱码,idea中运行Tomcat也出现中文乱码:“淇℃伅”

    打开到tomcat安装目录下的conf/文件夹 修改logging.properties文件, 找到 java.util.logging.ConsoleHandler.encoding = utf-8 ...

  9. 前端div+css

    css基本结构: css的四种引入方式: 1.行内式:是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用. <p style="background- ...

  10. Python自动化学习--批量执行.py用例

    这段时间在摸索自动化,学到执行测试用例的时候发现,执行单用例的时候很简单,如果想多条用例执行的话就没那么简单了,经过几番查找,找到如下方法: unittest模块中的TestLoader类有一个dis ...