求助T3T4
  • 板块学术版
  • 楼主xieyikai2333
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/10/23 12:06
  • 上次更新2023/10/27 06:21:21
查看原帖
求助T3T4
380019
xieyikai2333楼主2022/10/23 12:06

T4 求做法


T3 70pts ,WA on 14~15,17~20,有几个点居然输出为负

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5,mod=998244353;
int a[N],suf[N];
int read()
{
	int f=0,x=0;
	char ch=getchar();
	while(!isdigit(ch))
	{
		if(ch=='-')f=1;
		ch=getchar();
	}
	while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	return f?-x:x;
}
signed main()
{
	int n,k,sum=0;
	n=read(),k=read();
	for(int i=1;i<=n;i++)a[i]=read()+1,(sum+=a[i]*a[i])%=mod;
	for(int i=n;i>=1;i--)suf[i]=(suf[i+1]+a[i])%mod;
	int p=n,ans=0;
	for(int i=0;i<k;i++)
	{
		while(p&&abs(a[p]+i)>abs(a[p]))p--;
		(ans+=sum+2*suf[p+1]*i+(n-p)*i*i)%=mod;
	}
	cout<<ans;
	return 0;
}
2022/10/23 12:06
加载中...