1 条题解

  • 0
    @ 2025-9-10 0:11:57

    C++ :

    #include <cstdio>
    
    using namespace std;
    
    int n,tree[200001],data[200001],l,r,tp,m;
    
    inline int in(){
    	char c=getchar();
    	int x=0;
    	while(c<'0'||c>'9')c=getchar();
    	for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
    	return x;
    }
    
    void modify(int pos,int val)
    {
    	while(pos<=n)
    	{
    		tree[pos]+=val;
    		pos+=pos&(-pos);
    	}
    	return;
    }
    
    int SUM(int pos)
    {
    	int Sum=0;
    	while(pos>0)
    	{
    		Sum+=tree[pos];
    		pos-=pos&(-pos);
    	}
    	return Sum;
    }
    
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	{
    		data[i]=in();
    		modify(i,data[i]);
    	}
    	scanf("%d",&m);
    	for(int i=1;i<=m;i++)
    	{
    		l=in();r=in();
    		printf("%.2lf\n",(SUM(r)-SUM(l-1))*3.14);
    		tp=(l+r)>>1;
    		modify(tp,-data[tp]);
    		data[tp]=0;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    3200
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者