萌新不知道是不是妹子刚学OI1ms70pts求条
查看原帖
萌新不知道是不是妹子刚学OI1ms70pts求条
1412830
Stars_Traveller楼主2024/8/13 16:13
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int L[N], R[N], pos[N], n, m, t, tag[N], sum[N];
void update(int lt, int rt, int val)
{
	int x=pos[lt], y=pos[rt];
	if(x==y)
	{
		for(int i=lt;i<=rt;i++)
		{
			a[i]+=val;
			sum[x]+=val;
		}
	}
	else
	{
		for(int i=x+1;i<=y-1;i++)
		{
			tag[i]+=val;
		}
		for(int i=lt;i<=R[x];i++)
		{
			a[i]+=val, sum[x]+=val;
		}
		for(int i=L[y];i<=rt;i++)
		{
			a[i]+=val;
			sum[y]+=val;
		}
	}
	return ;
}
int query(int lt, int rt)
{
	int x=pos[lt], y=pos[rt];
	int ans=0;
	if(x==y)
	{
		for(int i=lt;i<=rt;i++)
		{
			ans+=a[i];
		}
	}
	else
	{
		for(int i=x+1;i<=y-1;i++)
		{
			ans+=sum[i]+tag[i]*(R[i]-L[i]+1);
		} 
		for(int i=lt;i<=R[x];i++)
		{
			ans+=a[i]+tag[x];
		}
		for(int i=L[y];i<=rt;i++)
		{
			ans+=a[i]+tag[y];
		}
	}
	return ans;
}
signed main()
{
	m=2;
	int c, d;
	cin>>c>>d;
	a[1]=c;
	a[2]=d;
    t=sqrt(m);
    for(int i=1;i<=t;i++)
    {
        L[i]=(i-1)*t+1;
        R[i]=i*t;
    }
    if(R[t]<m)
    {
        t++;
        L[t]=R[t-1]+1;
        R[t]=m;
    }
    for(int i=1;i<=t;i++)
    {
        for(int j=L[i];j<=R[i];j++)
        {
            pos[j]=i;
            sum[i]+=a[j];
        }
    }
    cout<<query(1,2);
}

本人马蜂较丑见谅(跟 @Stars_visitor_tyw 学的马蜂)

P1001过了但这题没过求条悬1关qwq

2024/8/13 16:13
加载中...