bzoj 2002 弹飞绵羊 分块
2017-07-09 21:46
155 查看
正解lct,然而本
d91d
蒟蒻并不会....
分块思路很清晰,处理出每个点弹出所在块所需要的步数及出去后的第一个位置#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#define N 200005
using namespace std;
int n,m,nn,k
,nxt
,ned
,be
,tot;
int opt,aa,bb,ans;
void work(int x){
int l=(x-1)*nn+1,r=x*nn;
r=min(r,n);
for(int i=r;i>=l;i--)
{
if(i+k[i]>r){
ned[i]=1;
nxt[i]=i+k[i];
}
else{
ned[i]=ned[i+k[i]]+1;
nxt[i]=nxt[i+k[i]];
}
}
}
int main()
{
scanf("%d",&n);
nn=sqrt(n);
for(int i=1;i<=n;i++){
scanf("%d",&k[i]);
be[i]=(i-1)/nn+1;
}
tot=be
;
for(int i=1;i<=tot;i++) work(i);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&opt,&aa);
aa++;
if(opt==1)
{
ans=0;
while(aa<=n){
ans+=ned[aa];
aa=nxt[aa];
}
printf("%d\n",ans);
}
else{
scanf("%d",&bb);
k[aa]=bb;
work(be[aa]);
}
}
return 0;
}
d91d
蒟蒻并不会....
分块思路很清晰,处理出每个点弹出所在块所需要的步数及出去后的第一个位置#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#define N 200005
using namespace std;
int n,m,nn,k
,nxt
,ned
,be
,tot;
int opt,aa,bb,ans;
void work(int x){
int l=(x-1)*nn+1,r=x*nn;
r=min(r,n);
for(int i=r;i>=l;i--)
{
if(i+k[i]>r){
ned[i]=1;
nxt[i]=i+k[i];
}
else{
ned[i]=ned[i+k[i]]+1;
nxt[i]=nxt[i+k[i]];
}
}
}
int main()
{
scanf("%d",&n);
nn=sqrt(n);
for(int i=1;i<=n;i++){
scanf("%d",&k[i]);
be[i]=(i-1)/nn+1;
}
tot=be
;
for(int i=1;i<=tot;i++) work(i);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&opt,&aa);
aa++;
if(opt==1)
{
ans=0;
while(aa<=n){
ans+=ned[aa];
aa=nxt[aa];
}
printf("%d\n",ans);
}
else{
scanf("%d",&bb);
k[aa]=bb;
work(be[aa]);
}
}
return 0;
}
相关文章推荐
- [bzoj] 2002 弹飞绵羊 || LCT
- bzoj:2002: [Hnoi2010]Bounce 弹飞绵羊
- BZOJ2002 HNOI2010 Bounce 弹飞绵羊 题解&代码
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊( LCT )
- BZOJ2002 弹飞绵羊
- 【BZOJ 2002】【HNOI 2010】弹飞绵羊
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
- BZOJ 2002 Bounce 弹飞绵羊 [分块]
- 【bzoj2002】【Hnoi2010】【Bounce 弹飞绵羊】【lct】
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
- BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊
- 【lct】bzoj2002 [Hnoi2010]Bounce 弹飞绵羊
- bzoj2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
- BZOJ2002(Hnoi2010)[Bounce 弹飞绵羊]--分块
- BZOJ 2002 Bounce 弹飞绵羊 [Hnoi2010]
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
- 2002: [Hnoi2010]Bounce 弹飞绵羊 - BZOJ
- bzoj2002: [Hnoi2010]Bounce 弹飞绵羊
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊