895A. Pizza Separation#分披萨问题(前缀和)
题目出处:http://codeforces.com/problemset/problem/895/A
题目大意:对于给出的一些角度的披萨分成两份,取最小角度差
#include<stdio.h> #include<stdlib.h> #include<math.h> //Pizza Separation int main(){ int n; scanf("%d",&n); int *a = (int*) malloc (n * sizeof(int)); int i; for(i=0;i<n;i++){ scanf("%d",&a[i]); } if(n==1){ printf("360\n"); return 0; } //前缀和 for(i=1;i<n;i++){ a[i] += a[i-1]; } int part1,part2,ans=360; for(i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ part1 = abs(a[i] - a[j]); if(part1==180){ printf("0\n"); return 0; }else{ part2 = 360-part1; int t = abs(part1 - part2); ans = ans<t ? ans:t; } } } printf("%d",ans); return 0; }
本题是本人在codeforces第一个解决的问题,很有意义,全程暴力不解释
个人分享,欢迎指导,未经允许,请勿转载。谢谢!