首先祝各位大佬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; }