codeforces 895A Pizza Separation

题目大意:

  • 分成两大部分,使得这两部分的差值最小(注意是圆形,首尾相连)

思路:

  • 分割出来的部分是连续的,开二倍枚举。
  • 注意不要看成01背包,一定多读题

代码:

#include <bits/stdc++.h>
using namespace std;
int a[800];
int main() {
    int n,minval,sum,tot;
    cin>>n;
    tot=0;
    for(int i=1;i<=n;++i) {
        scanf("%d",&a[i]);
        tot+=a[i];
    }
    for(int i=1;i<=n;++i) {
        a[i+n]=a[i];
    }
    minval=tot;
    for(int i=1;i<=n;++i) {
        sum=0;
        for(int j=i;j<=2*n;++j) {
            if(j-i==n) break;
            sum+=a[j];
            minval=min(abs(tot-2*sum),minval);
        }
    }
    cout<<minval<<endl;
    return 0;
}

相关文章:

  • 2022-12-23
  • 2021-06-30
  • 2021-12-05
  • 2022-01-17
  • 2022-12-23
  • 2021-05-16
  • 2021-08-08
  • 2022-03-03
猜你喜欢
  • 2021-11-27
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-22
  • 2021-11-21
相关资源
相似解决方案