其他分享
首页 > 其他分享> > CF895A题解

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
}

标签:int,题解,ans,传送门,CF895A,尽可能,400
来源: https://www.cnblogs.com/cycwss/p/15865401.html