P4879 ycz的妹子
思路
让你干啥你就干啥呗
查询第x个妹子就get一下再修改
这里稳一点就维护了三个东西,也许两个也可以
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#define ls rt<<1
#define rs rt<<1|1
#define ll long long
#define FOR(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
const int maxn = 5e5 + 7;
int read() {
int x = 0, f = 1; char s = getchar();
for (; s < '0' || s > '9'; s = getchar()) if (s == '-') f = -1;
for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
return x * f;
}
int n,m;
int a[maxn];
struct node {
int l,r,size,gs;
ll sum,ans;
}e[maxn<<2];
void pushup(int rt) {
e[rt].gs=e[ls].gs+e[rs].gs;
e[rt].ans=e[ls].ans+e[rs].ans;
e[rt].sum=e[ls].sum+e[rs].sum;
}
void build(int l,int r,int rt) {
e[rt].l=l,e[rt].r=r,e[rt].size=r-l+1;
if(l==r) {
if(l<=n) {
e[rt].gs=1;
e[rt].ans=e[rt].sum=a[l];
}
return;
}
int mid=(l+r)>>1;
build(l,mid,ls);
build(mid+1,r,rs);
pushup(rt);
}
void modify_1(int L,int k,int rt) { // The Lth city plus k .
if(e[rt].l==e[rt].r) {
e[rt].sum+=k;
if(e[rt].gs) e[rt].ans+=k;
return;
}
int mid=(e[rt].l+e[rt].r)>>1;
if(L<=mid) modify_1(L,k,ls);
else modify_1(L,k,rs);
pushup(rt);
}
void modify_2(int L,int k,int rt) { // The Lth sister fell in love with him.
if(e[rt].l==e[rt].r) {
e[rt].gs=k;
e[rt].ans=e[rt].sum=0;
return;
}
int mid=(e[rt].l+e[rt].r)>>1;
if(L<=mid) modify_2(L,k,ls);
else modify_2(L,k,rs);
pushup(rt);
}
int get(int k,int rt) {
if(e[rt].l==e[rt].r)
return e[rt].l;
if(k <= e[ls].gs) return get(k,ls);
else return get(k-e[ls].gs,rs);
}
int main() {
n=read(),m=read();
FOR(i,1,n) a[i]=read();
build(1,5e5,1);
FOR(i,1,m) {
char s;
scanf("%s",&s);
if(s=='Q') {
printf("%lld\n",e[1].ans);
} else if(s=='C') {
int x=read(),y=read();
modify_1(x,-y,1);
} else if(s=='D') {
int x=read();
modify_2(get(x,1),0,1);
} else if(s=='I') {
int x=read(),y=read();
modify_2(x,1,1);
modify_1(x,y,1);
}
}
return 0;
}
P4879 ycz的妹子的更多相关文章
- 线段树【p4879】ycz的妹子
Description 机房神犇yczycz有n个青梅竹马,她们分别住在1~n号城市中.小时候的她们美丽可爱,但是由于女大十八变,有些妹子的颜值发生了变化,但是十分重感情的\(ycz\)神犇不忍心抛弃 ...
- 周末聊聊IT人员的人脉观:关于帮妹子找兼职有感
背景: 前几天,有个认识了好几年的网友,现在是大学生,在厦门读大一,说和她同学要一起到广州找兼职,看我有没有介绍. 像我这么积极热心善良的人,就说帮她找找看,结果问了几次,没消息,只好诚实的回复人家, ...
- BZOJ 3809: Gty的二逼妹子序列
3809: Gty的二逼妹子序列 Time Limit: 80 Sec Memory Limit: 28 MBSubmit: 1387 Solved: 400[Submit][Status][Di ...
- 【BZOJ-3809】Gty的二逼妹子序列 分块 + 莫队算法
3809: Gty的二逼妹子序列 Time Limit: 80 Sec Memory Limit: 28 MBSubmit: 1072 Solved: 292[Submit][Status][Di ...
- R语言-妹子被追后的选择分析
前提假设 妹子们一生中可以遇到100个追求者,追求者的优秀程度符合正态分布: 每个妹子都具备判断并比较追求者优秀程度的能力: 接受或拒绝一个追求者后永远无法后悔. 那么,问题来了 当遇到追求者时,如何 ...
- BZOJ3809: Gty的二逼妹子序列
Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方 ...
- 拥抱ARM妹子 序章!ARM妹子~~ 哥我来啦!
一个负心汉即将移情别恋,从51转到ARM妹子啦?其实8是的,俺准备开后宫.哇——咔~咔~~.考虑功耗和成本等问题,只有51肯定是不够的,所以嘛~~(一脸坏笑)嘿嘿~~,ARM妹子俺追定了.出于对ARM ...
- [HZWER]藏妹子之处
问题描述 今天CZY又找到了三个妹子,有着收藏爱好的他想要找三个地方将妹子们藏起来,将一片空地抽象成一个R行C列的表格,CZY要选出3个单元格.但要满足如下的两个条件: (1)任意两个单元格都不在同一 ...
- bzoj 3720: Gty的妹子树 块状树
3720: Gty的妹子树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 412 Solved: 153[Submit][Status] Descr ...
随机推荐
- SQL语句常见视图操作部分试题(一)
创建一个名称为EMPLOYEES_VU的视图,它基于EMPLOYEES表中的雇员号.雇员名和部门号.将雇员名的列标题改为EMPLOYEE. CREATE VIEW EMPLOYEES_VU AS SE ...
- Rotate Image(二位数组顺时针旋转)
问题描述: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockw ...
- Mayor's posters---poj2528线段树、离散化
题目链接:http://poj.org/problem?id=2528 题意:有n张海报要贴,每张需要用的区间为L到R,后面的可以贴在之前的上面,就是吧之前的挡住,求最后我们能看到几张海报: 我们可以 ...
- Python实现常用的逻辑数据结构
逻辑数据结构包括:线形结构.树形结构.图形结构.集合:存储结构包括:顺序存储.链式存储.索引存储.散列存储. 同一种逻辑结构可以有四种存储结构,不同的存储结构增.删.查.改的速度不同.逻辑结构与存储结 ...
- Python之Pandas使用教程(转)
https://blog.csdn.net/XiaoYi_Eric/article/details/79506660
- JSON Web Token – 在 Web 应用间安全地传递信息
出处:子回 使用 JWT 令牌和 Spring Security 来实现身份验证 八幅漫画理解使用JSON Web Token设计单点登录系统
- 前端 HTML标签介绍
那什么是HTML标签呢? 1. 在HTML中规定标签使用英文的的尖括号即"<"和">"包起来,如`<html>`.`<p>` ...
- 菜鸟教程之工具使用——Git的基本使用
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/liushuijinger/article/details/37569907 Git是进来比較火的版本 ...
- [LeetCode] 286. Walls and Gates_Medium tag: BFS
You are given a m x n 2D grid initialized with these three possible values. -1 - A wall or an obstac ...
- Android下基于线程池的网络访问基础框架
引言 现在的Android开发很多都使用Volley.OkHttp.Retrofit等框架,这些框架固然有优秀的地方(以后会写代码学习分享),但是我们今天介绍一种基于Java线程池的网络访问框架. 实 ...