题目链接:Codeforces - Serge and Dining Room


我们可以思考,如果答案是x,那么满足的条件是什么呢?

就是大于等于x的商品个数 > 大于等于x的小朋友的钱的个数。

那么我们建立权值线段树,在a[i]的地方放1,b[i]的地方放-1。

只要存在某个后缀大于0,那么就合法,我们就需要找到最后的那个位置。

这个问题有两种方法:维护最大后缀和,单点修改。或者直接先从后往前做前缀和,区间修改+区间max。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=1e6+10;
int n,m,a[N],b[N],q,up=1e6;
int mx[N<<2],lazy[N<<2];
inline void push_down(int p){if(!lazy[p])   return ;mx[p<<1]+=lazy[p],mx[p<<1|1]+=lazy[p];lazy[p<<1]+=lazy[p],lazy[p<<1|1]+=lazy[p];lazy[p]=0;
}
void change(int p,int l,int r,int ql,int qr,int v){if(l==ql&&r==qr){mx[p]+=v,lazy[p]+=v; return ;}int mid=l+r>>1;   push_down(p);if(qr<=mid)    change(p<<1,l,mid,ql,qr,v);else if(ql>mid) change(p<<1|1,mid+1,r,ql,qr,v);else change(p<<1,l,mid,ql,mid,v),change(p<<1|1,mid+1,r,mid+1,qr,v);mx[p]=max(mx[p<<1],mx[p<<1|1]);
}
int ask(int p,int l,int r){if(l==r)   return l;int mid=l+r>>1;    push_down(p);if(mx[p<<1|1]>0)  return ask(p<<1|1,mid+1,r);else  return ask(p<<1,l,mid);
}
signed main(){cin>>n>>m;for(int i=1;i<=n;i++)    scanf("%d",&a[i]),change(1,1,up,1,a[i],1);for(int i=1;i<=m;i++)    scanf("%d",&b[i]),change(1,1,up,1,b[i],-1);cin>>q;for(int i=1,op,x,y;i<=q;i++){scanf("%d %d %d",&op,&x,&y);if(op==1) change(1,1,up,1,a[x],-1),change(1,1,up,1,a[x]=y,1);else    change(1,1,up,1,b[x],1),change(1,1,up,1,b[x]=y,-1);if(mx[1]<=0)    puts("-1");else   printf("%d\n",ask(1,1,up));}return 0;
}

Codeforces - Serge and Dining Room相关推荐

  1. Codeforces 1179C Serge and Dining Room 线段树

    Serge and Dining Room 改变选的顺序, 最后的结果不变. 这种题一般都和前缀和有关, 建个线段树维护前缀和就好了. #include<bits/stdc++.h> #d ...

  2. 【CF1179 A,B,C】Valeriy and Deque / Tolik and His Uncle / Serge and Dining Room

    还好题很温柔,温柔得我差点没做完 文章目录 A:Valeriy and Deque 题意 题解 代码实现 B:Tolik and His Uncle 题目 题解 代码实现 C:Serge and Di ...

  3. 有趣题目和认知合集(持续更新)

    写写对一些算法的理解,挂几个有意思的题,可能也会挂几个板子题 算法理解偏向于能懂即可,没有严格的证明 快乐几何 [1.2]Volatile Kite 点到直线 快乐搜与暴力 [2.4]Short Co ...

  4. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  5. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  6. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  7. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  8. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  9. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

最新文章

  1. web.config中sessionState节点的配置方案
  2. BSP二叉树的数学原理(绝对原创)
  3. 洪嘉振 计算多体系统动力学pdf_如何在多体动力学模型中评估齿轮啮合刚度
  4. [51nod1773]A国的贸易
  5. 分析数据库CitusDB:提供弹性计算能力
  6. 机器学习笔记——逻辑回归(Logistic Regression)
  7. 片段中未调用onActivityResult
  8. Java基础:Collection集合、Iterator迭代器以及泛型
  9. asp.net有效使用缓存(转)
  10. Python3快速入门——(2)list和tuple(列表和元组)
  11. 联发科MT6763芯片设计,MT6763参考设计,MT6763处理器资料
  12. 人脸对齐--采用dlib库的68_face_landmark进行人脸对齐操作
  13. 魔兽世界选择服务器未响应,魔兽世界7.0军团再临常见技术性问题解决方案汇总...
  14. 已解决ValueError: Of the four parameters: start, end, periods, and freq, exactly three must be specifie
  15. Python操控鼠标和键盘
  16. 09.7. 序列到序列学习(seq2seq)
  17. /etc/profile 和 /etc/profile.d/ 的区别
  18. 大数据、人工智能如何助力市场监管?专家们这样说
  19. html 设置卯位置,周易基础知识:十二地支之卯木
  20. Dots Entity 删除

热门文章

  1. 骨传导耳机是什么,骨传导耳机对耳朵有什么好处吗
  2. 云原生kubernetes六:namespace和Resourcequota
  3. 90个常用词根,30个前缀30个后缀
  4. 会汇编语言学c语言好学吗,只有C语言功底的我学习汇编语言可以吗?
  5. 头文件和Include: Why and How
  6. POJ 3692 Kindergarten(最大团)
  7. LeetCode42题动态规划 - 接雨水
  8. 适合计算机编程开发的笔记本电脑推荐
  9. pytoch 安装为Gpu版本
  10. 【电脑办公软件有哪些】万彩办公大师教程丨重复音频文件探测工具