首先祝各位大佬noip有个好成绩吧ios
当时比赛有个大数据,蒟蒻我暴力竟然过了,好激动大数据
这题必定要注意开long long
(那个大数据就是我开long long才过的)spa
还有刚开始应设置答案为m(看法析)code
#include<iostream> #include<cmath> using namespace std; long long f1,f2,f3;//计算初始双方气势 long long a[100005],s1,s2; int i,n,m,p1,ans; int main() { cin>>n; for (i=1;i<=n;i++) cin>>a[i]; cin>>m>>p1>>s1>>s2; for (i=1;i<m;i++) {if(p1==i) a[i]+=s1; //若是是p1就直接加上计算 f1+=(m-i)*a[i];} for (i=m+1;i<=n;i++) {if (p1==i) a[i]+=s1; f2+=(i-m)*a[i];} long long cha=abs(f1-f2);//计算双方的差 if (cha==0) {cout<<m; return 0;} //差已经为0,直接放在m处,m不属于任何一方 ans=m;//若放置后差反而更大,应放m处 for (i=1;i<m;i++) { f3=abs(f1+s2*(m-i)-f2);//计算新的差 if (f3<cha) ans=i,cha=f3; } for (i=m+1;i<=n;i++) { f3=abs(f2+s2*(i-m)-f1); if (f3<cha) ans=i,cha=f3; } cout<<ans; }