标签:
关于这道题,乍一看很像查分约束,但是实际上这道题是可以用数学方法直接解决的。
这道题在蓝书上有原题,可以看到题解,在此再赘述一遍
数据范围
30%的测试数据, n<=1000.
100%的测试数据, n<=1000000.
ai>=0, 保证ai在longint/int范围内, ai的总和在int64/long long范围内.
1 /************************************************************** 2 Problem: 1045 3 User: PencilWang 4 Language: C++ 5 Result: Accepted 6 Time:2148 ms 7 Memory:78948 kb 8 ****************************************************************/ 9 10 #include<stdio.h> 11 #include<math.h> 12 #include<algorithm> 13 using namespace std; 14 int a[10000000],w[10000000],n; 15 int main() 16 { 17 long long num=0; 18 scanf("%d",&n); 19 for(int i=1;i<=n;i++) 20 { 21 scanf("%d",w+i); 22 num+=w[i]; 23 } 24 num/=n; 25 for(int i=2;i<=n;i++) 26 a[i]=a[i-1]+w[i]-num; 27 sort(a+1,a+n+1); 28 int mid=a[n/2]; 29 long long ans=0; 30 for(int i=1;i<=n;i++) 31 { 32 ans+=abs(mid-a[i]); 33 } 34 printf("%lld",ans); 35 return 0; 36 }
标签:
原文地址:http://www.cnblogs.com/PencilWang/p/5962635.html