Password [分块]
题面
$n,m,x \leq 10^5$
思路
首先$n=2$做法很多,不讲了
$n=3$的时候,分块维护两个东西:每一个数出现次数的前缀和,和出现次数的出现次数的前缀和(说的有点绕,但是应该挺好理解的)
然后会发现,第4行等于第2行,5=3,6=4......
然后就做完了
细节看代码吧
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cassert>
#include<cmath>
#define ll long long
using namespace std;
inline int read(){
int re=0,flag=1;char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') flag=-1;
ch=getchar();
}
while(isdigit(ch)) re=(re<<1)+(re<<3)+ch-'0',ch=getchar();
return re*flag;
}
int n,m,a[1000010],cnt[310][100010],pre[310][200010],cur[100010];
int blk,tot;
inline int op(int num){return blk*(num-1)+1;}
inline int ed(int num){return min(blk*num,n);}
inline int id(int num){return num/blk+(num%blk!=0);}
inline void change(int pos,int val){
int p=id(pos),i;
for(i=p;i<=tot;i++) pre[i][cnt[i][a[pos]]]--;
for(i=p;i<=tot;i++) cnt[i][a[pos]]--;
a[pos]=val;
for(i=p;i<=tot;i++) cnt[i][a[pos]]++;
for(i=p;i<=tot;i++) pre[i][cnt[i][a[pos]]]++;
}
inline void build(){
int i,j;
for(j=1;j<=tot;j++){
for(i=1;i<=ed(j);i++)
cnt[j][a[i]]++;
}
for(j=1;j<=tot;j++){
memset(cur,0,sizeof(cur));
for(i=1;i<=ed(j);i++){
cur[a[i]]++;
pre[j][cur[a[i]]]++;
}
}
}
inline int query(int x,int pos){
if(x==1) return a[pos];
int i,sum=0,p=id(pos);x--;
sum=cnt[p-1][a[pos]];
for(i=op(p);i<=pos;i++) sum+=(a[i]==a[pos]);
if(x&1) return sum;
int re=pre[p-1][sum];
for(i=op(p);i<=pos;i++){
cnt[p-1][a[i]]++;
re+=(cnt[p-1][a[i]]==sum);
}
for(i=op(p);i<=pos;i++) cnt[p-1][a[i]]--;
return re;
}
int main(){
n=read();int i,t1,t2,t3;
for(i=1;i<=n;i++) a[i]=read();
blk=400;tot=n/blk+(n%blk!=0);
build();
m=read();
while(m--){
t1=read();t2=read();t3=read();
if(t1==1) change(t3,t2);
else printf("%d\n",query(t2,t3));
}
}
Password [分块]的更多相关文章
- HTTP 笔记与总结(9)分块传输、持久链接 与 反向 ajax(comet / server push / 服务器推技术)
反向 ajax 又叫 comet / server push / 服务器推技术 应用范围:网页聊天服务器,例如新浪微博在线聊天.google mail 网页聊天 原理:一般而言,HTTP 协议的特点是 ...
- Burpsuit分块传输插件绕WAF原理和技巧(转)
0x00 原理 给服务器发送payload数据包,使得waf无法识别出payload,当apache,tomcat等web容器能正常解析其内容.如图一所示 0x02 实验环境 本机win10+x ...
- C#分块拷贝大文件
//定义源文件和目标文件,绝对路径 public static string source = @"E:\C#\C#编程语言详解.pdf"; //2014-6-10 Trainin ...
- 前端js怎么实现大文件G级的断点续传(分块上传)和分段下载
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
- 利用分块传输吊打所有WAF--学习笔记
在看了bypassword的<在HTTP协议层面绕过WAF>之后,想起了之前做过的一些研究,所以写个简单的短文来补充一下文章里“分块传输”部分没提到的两个技巧. 技巧1 使用注释扰乱分块数 ...
- PHP搭建大文件切割分块上传功能
背景 在网站开发中,文件上传是很常见的一个功能.相信很多人都会遇到这种情况,想传一个文件上去,然后网页提示"该文件过大".因为一般情况下,我们都需要对上传的文件大小做限制,防止出现 ...
- 打开程序总是会提示“Enter password to unlock your login keyring” ,如何成功关掉?
p { margin-bottom: 0.1in; line-height: 120% } 一.一开始我是按照网友所说的 : rm -f ~/.gnome2/keyrings/login.keyrin ...
- your password has expired.to log in you must change it
今天应用挂了,log提示密码过期.客户端连接不上. 打开mysql,执行sql语句提示密码过期 执行set password=new password('123456'); 提示成功,但客户端仍然连接 ...
- MySql Access denied for user 'root'@'localhost' (using password:YES) 解决方案
关于昨天下午说的MySQL服务无法启动的问题,解决之后没有进入数据库,就直接关闭了电脑. 今早打开电脑,开始-运行 输入"mysql -uroot -pmyadmin"后出现以下错 ...
随机推荐
- c++学习(一)
基本数据类型 类型 关键字 描述 所占字节数 最大值 最小值 布尔型 bool 存储值 true 或 false bool 1 0 字符型 char 通常是一个八位字节(一个字符).这是一个整数类型 ...
- BZOJ1008: [HNOI2008]越狱(组合数)
题目描述 监狱有连续编号为 1…N1…N 的 NN 个房间,每个房间关押一个犯人,有 MM 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. ...
- javascript遍历方法总结
forEach 循环 JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.lengt ...
- 获取点击li的当前索引
获取点击li的当前索引 点击特定次序的li 展现特定的页面 $('.wgsb').find('.wangge_data_list li').click(function(){ var index=$ ...
- (转)数据库老兵:NewSQL才是未来
编者按:在数据库技术领域,Michael Stonebraker几乎是无人不知无人不晓的人物.现年70岁的Stonebraker不仅是Ingres和PostgreSQL的创始人,同时在Informix ...
- 为什么 redis 单线程却能支撑高并发
redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理 ...
- CSS选取指定位置标签first-child、last-child、nth-child
1.first-child 选择列表中的第一个标签. 2.last-child 选择列表中的最后一个标签 3.nth-child(n) 选择列表中的第n个标签 4.nth-child(2n) 选择列表 ...
- python爬虫:利用BeautifulSoup爬取链家深圳二手房首页的详细信息
1.问题描述: 爬取链家深圳二手房的详细信息,并将爬取的数据存储到Excel表 2.思路分析: 发送请求--获取数据--解析数据--存储数据 1.目标网址:https://sz.lianjia.com ...
- python flask学习第2天 URL中两种方式传参
新创建项目 自己写个url映射到自定义的视图函数 在url中传递参数 app.py from flask import Flask app = Flask(__name__) @app.route ...
- python系列2之数据类型
目录 Python数据类型 python的运算符 Python的循环与判断语句 python练习 Python作业 一. Python的数据类型 1. 整型(int) <1>. 赋值 ...