CF895A题解

题目传送门

本题还是比较简单的,所以直接讲思路。

分析

由于保证了各部分的和,所以要想让差尽可能小,必须让两部分尽可能的接近 \(180\),可以想到用三重循环来枚举。我们可以随时记录两大块之差,依次比较即可。

Code

#include<bits/stdc++.h>
using namespace std;
int a[400];
int n,ans=400,s;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    if(n==1)//特判
    {
        cout<<360;
        return 0;
    }
    for(int i=1;i<=n;i++)
        for(int j=i;j<=n;j++)//前两重循环枚举一个人分到的披萨
        {
            s=0;
            for(int k=i;k<=j;k++)
                s+=a[k],ans=min(ans,abs(s-180));//比较
        }
    cout<<ans*2;//由于只算了一个人,所以最后要乘上2
}
上一篇:深度学习网络模型的轻量化方法


下一篇:从400多k的大小减到了2B,我的APP是怎么优化的?,写给安卓软件工程师的3条建议