CF1234A
简单题,求一下平均数,因为他好像不能有小数,所以向上取整即可
CF1234B
这道题还分B1,B2,我一下直接全过了
维护一个长度为k的队列,直接照着它模拟
然后用map(因为有负数)来判断这个数是否在队列中即可
CF1234C
你会发现每种水管因为可以旋转,所以只分两种情况,1,2是一种情况,3,4,5,6是另一种
然后因为只有两行,所以只会有唯一的路径到达
然后按照情况分类讨论判断是否能到达即可
CF1234D
树状数组一眼题
分别对每一个小写字母开一个树状数组,单点修改,区间查询即可
代码没调出来,不知道哪里有错了,真服了。
有没有大佬能帮我看一看QWQ
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int q,op,p,l,r,len;
int a[N];
char s[N],c,tr[40][N];
int lowbit(int x){
return x&(-x);
}
void add(int x,int z,int num){
for(;x<=N;x+=lowbit(x)){
tr[z][x]+=num;
}
}
int query(int x,int z){
int res=0;
for(;x;x-=lowbit(x)){
res+=tr[z][x];
}
return res;
}
int main(){
scanf("%s",s+1);
len=strlen(s+1);
for(int i=1;i<=len;i++){
a[i]=s[i]-'a'+1;
add(i,a[i],1);
}
scanf("%d",&q);
for(int i=1;i<=q;i++){
scanf("%d",&op);
if(op==1){
scanf("%d %c",&p,&c);
add(p,a[p],-1);
a[p]=c-'a'+1;
add(p,a[p],1);
}
else{
int ans=0;
scanf("%d%d",&l,&r);
for(int i=1;i<=26;i++){
if((query(r,i)-query(l-1,i))!=0){
ans++;
}
}
printf("%d\n",ans);
}
}
}
标签:队列,树状,int,CF1234,即可,数组
From: https://www.cnblogs.com/zcxnb/p/18535015