求助,这道题需要用高精度吗?
查看原帖
求助,这道题需要用高精度吗?
32046
沉MO_Official楼主2021/9/22 21:02

rt,第四个 Subtask WA 了 5 个点

一看 unsigned long long 炸了

翻了翻讨论区也没见写高精度的而且这明明是道橙题a

#include<bits/stdc++.h>
//#include<windows.h>
using namespace std;
long long n,op,l,r,k,L[500005],R[500005],h;
unsigned long long f(int _L,int _R)
{
	if((_L+_R)%2==0)
		return (_L+_R)/2*(_R-_L+1);
	else
		return (_R-_L+1)/2*(_L+_R);
}
int main()
{
	//freopen("stack2.in","r",stdin);
	//freopen("P7870.out","w",stdout);
	cin>>n;
	while(n--)
	{
		cin>>op;
		if(op==1)
		{
			cin>>l>>r;
			L[++h]=l;
			R[h]=r;
		}
		if(op==2)
		{
			unsigned long long ans=0;
			cin>>k;
			while(k)
			{
				if(k>=R[h]-L[h]+1)
				{
					ans+=f(L[h],R[h]);
					k-=R[h]-L[h]+1;
					h--;
				}
				else
				{
					ans+=f(R[h]-k+1,R[h]);
					R[h]-=k;
					k=0;
				}
			}
			cout<<ans;
			//Sleep(100);
		}
	}
	return 0;
}

2021/9/22 21:02
加载中...