P4879-ycz的妹子【分块】
正题
评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P4879
题目大意
有若干种操作
- Cxy:ax−=yC\ x\ y:a_x-=yC x y:ax−=y
- Ixy:I\ x\ y:I x y:加一个(原本有的话就改变)ax=ya_x=yax=y
- Q:Q:Q:询问所以数的和
- Dx:D\ x:D x:删除第xxx个(有的才算)数。
解题思路
我们发现只有单点修改,和全部求和。所以ansansans表示全部的和,然后前三个操作就搞定了。
第四个操作维护一个分块,记录每块有的数的个数,然后找到目标在那个块,之后这个块里暴力寻找,这个操作时间负责度O(n)O(\sqrt n)O(n)
总体时间复杂度:O(nn)O(n\sqrt n)O(nn)
codecodecode
#include<cstdio>
#include<cmath>
#include<iostream>
#define ll long long
#define N 500000
#define T 1000
using namespace std;
ll n,m,a[N+10],ans,no[N+10],x,y,t;
ll L[T],R[T],num[T],pos[N+10];
char c;
int main()
{scanf("%lld%lld",&n,&m);t=sqrt(N);for(ll i=1;i<=N;i++){pos[i]=(i-1)/t+1;if(i>n)no[i]=1;}for(ll i=1;i<=n;i++){scanf("%lld",&a[i]);num[pos[i]]++;ans+=a[i];}for(ll i=1;i<=m;i++){cin>>c;if(c=='Q')printf("%lld\n",ans);else if(c=='I'){scanf("%lld%lld",&x,&y);ans-=a[x];a[x]=y;ans+=y;n=max(n,x);if(no[x]){no[x]=0;num[pos[x]]++;}}else if(c=='C'){scanf("%lld%lld",&x,&y);if(no[x]) continue;ans-=y;a[x]-=y;}else if(c=='D'){scanf("%lld",&x);ll k=1;while(x-num[k]>0)x-=num[k],k++;for(int i=(k-1)*t+1;i<=min(k*t,n);i++){if(!no[i]) --x;if(!x){num[k]--;no[i]=1;ans-=a[i];a[i]=0;break;}}}}
}
P4879-ycz的妹子【分块】相关推荐
- Luvwgyx的娱乐场-题解
题解不按顺序给出 目录: ycz的妹子 题面 题解 lty loves 96! 题面 题解 mzf的考验 题面 题解 hby与tkw的基情 题面 题解 抓住czx 题面 题解 ycz的妹子 题目背景: ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- BZOJ 3720: Gty的妹子树 [树上size分块]
传送门 题意: 一棵树,询问子树中权值大于$k$的节点个数,修改点权值,插入新点:强制在线 一开始以为询问多少种不同的权值,那道CF的强制在线带修改版,直接吓哭 然后发现看错了这不一道树上分块水题.. ...
- 牛客 - 牛半仙的妹子Tree(按询问分块+RMQ求LCA)
题目链接:点击查看 题目大意:给出一棵有 n 个节点的树,需要执行 m 次操作: 1 x:点 x 被染色,且随后每一秒染色的区域都会向外扩展一个单位 2 x:清空所有的染色 3 x:问点 x 是否被染 ...
- P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】
正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...
- bzoj3744: Gty的妹子序列 (BIT 分块)
强制在线的区间询问逆序对数 如果不是强制在线 就是可以用莫队乱搞啦 强制在线的话 用f[i][j]记录第i块到第j个点之间的逆序对数 用s[i][j]记录前i块中小于等于j的数字个数 离散化一下 BI ...
- P3180-[HAOI2016]地图【圆方树,莫队,分块】
正题 题目链接:https://www.luogu.com.cn/problem/P3180 题目大意 nnn个点mmm条边的一个仙人掌,有点权. QQQ次询问给出op,x,yop,x,yop,x,y ...
- bzoj4564: [Haoi2016]地图 仙人掌的圆方树 莫队 分块
bzoj4564: [Haoi2016]地图 Description 一天rin来到了一个遥远的都市.这个都市有n个建筑,编号从1到n,其中市中心编号为1,这个都市有m条双向通 行的街道,每条街道连接 ...
- 【知识总结】分块和值域分块
分块思想 分块思想是对原数据适当的划分,并且在划分后的每一个块上预处理部分信息,从而优化算法. 大体思路就是: 对于给出的序列按照固定的块长 ( 一 般 为 n ) (一般为\sqrt n) (一般为 ...
最新文章
- android application 引起内存泄漏的原因
- Flutter开发之《新锐专家之路:混合开发篇》笔记(55)
- spring in action小结4.1
- windows下安装Oracle10G
- 设计模式之_动态代理_06
- 一位经验丰富的程序员如何建立网络初创企业?
- _stat64获取错误_Log4j,Stat4j,SMTPAppender集成–汇总错误日志以发送过多电子邮件...
- 猫眼娱乐上市首日破发 收盘价14.64港元
- JAVA浅层复制深层复制理解-java_01_20160824
- stm32F103驱动ADS1115程序-4通道可用-ALERT中断可用-ADC芯片,应该是最全了
- 线上只执行一次的脚本编写注意事项
- Java Bubble Sort 冒泡排序图解
- 淘宝数据魔方技术架构解析阅读心得
- MicroPython之ADS1115+平滑滤波NTC温度采集
- 麻省理工学院公开课:单变量微积分
- Linux系统(三)系统基础扫盲大全
- SpringBoot的优点
- 「hdu6608」Fansblog 威尔逊定理
- retrospective material for English final exam unit_6 Tomorrow
- 生成带有logo的二维码
热门文章
- java对象模型是什么_蓝石榴_个人博客_JVM内存结构、Java内存模型、Java对象模型...
- 截获android屏幕服务,如何捕获android设备屏幕内容?
- python 日期格式校验_python – 如何验证时间格式?
- PyTorch深度学习实践
- leetcode541. 反转字符串 II
- 10-1 5-1 查询销售便携式电脑但不销售PC的厂商 (20 分)(分析+详解)
- 你知道304吗?图解强缓存和协商缓存
- Java内置数据类型
- Java中各种整形类型可以表示的范围
- 数据结构与算法--解决问题的方法- 二叉树的的镜像