• CodeForces:#448 div2 a Pizza Separation


    传送门:http://codeforces.com/contest/895/problem/A

    A. Pizza Separation

    time limit per test1 second
    memory limit per test256 megabytes

    Problem Description

    Students Vasya and Petya are studying at the BSU (Byteland State University). At one of the breaks they decided to order a pizza. In this problem pizza is a circle of some radius. The pizza was delivered already cut into n pieces. The i-th piece is a sector of angle equal to ai. Vasya and Petya want to divide all pieces of pizza into two continuous sectors in such way that the difference between angles of these sectors is minimal. Sector angle is sum of angles of all pieces in it. Pay attention, that one of sectors can be empty.

    Input

    The first line contains one integer n (1 ≤ n ≤ 360) — the number of pieces into which the delivered pizza was cut.

    The second line contains n integers ai (1 ≤ ai ≤ 360) — the angles of the sectors into which the pizza was cut. The sum of all ai is 360.

    Output

    Print one integer — the minimal difference between angles of sectors that will go to Vasya and Petya.

    Examples

    input
    4
    90 90 90 90
    output
    0
    input
    3
    100 100 160
    output
    40
    input
    1
    360
    output
    360
    input
    4
    170 30 150 10
    output
    0

    Note

    In first sample Vasya can take 1 and 2 pieces, Petya can take 3 and 4 pieces. Then the answer is |(90 + 90) - (90 + 90)| = 0.

    In third sample there is only one piece of pizza that can be taken by only one from Vasya and Petya. So the answer is |360 - 0| = 360.

    In fourth sample Vasya can take 1 and 4 pieces, then Petya will take 2 and 3 pieces. So the answer is |(170 + 10) - (30 + 150)| = 0.

    Picture explaning fourth sample:

    这里写图片描述

    Both red and green sectors consist of two adjacent pieces of pizza. So Vasya can take green sector, then Petya will take red sector.


    解题心得:

    1. 这场比赛真的是打蒙了,A题啊,旁边一个小子念叨了一句dp,然后就被带歪了,按着0-1背包问题来写,结果人家说的很清楚啊,必须是连续的披萨块,一个小小的坑点就是披萨是圆的,首尾相连,一个模拟很轻松的解决。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 380;
    int num[maxn];
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%d",&num[i]);
        int Min = 360;
        int sum = 0;
        for(int i=0;i<n;i++)
        {
            int t = 0;
            int cnt = i;//枚举连续披萨的起点位置
            sum = 0;
            while(t < n)//收尾相连但是不能超过n块
            {
                sum += num[cnt];
                if(abs(360-sum*2) < Min)
                    Min = abs(360-sum*2);
                cnt++;
                t++;
                if(cnt >= n)
                    cnt = 0;
            }
        }
        printf("%d",Min);
        return 0;
    }
  • 相关阅读:
    2.17NOIP模拟赛(by hzwer) T2 小奇的序列
    2.17NOIP模拟赛(by hzwer) T1 小奇挖矿
    题解【洛谷P3662】[USACO17FEB]Why Did the Cow Cross the Road II S
    题解【CF886B】Vlad and Cafes
    题解【CJOJ1070/UVA】嵌套矩形
    题解 【CF381A】 Sereja and Dima
    何时使用UI层的智能表单技术
    开机加电到系统打开究竟发生了什么?(1)
    asp.net MVC 常见安全问题及解决方案
    HDU 4422 The Little Girl who Picks Mushrooms【水题】
  • 原文地址:https://www.cnblogs.com/GoldenFingers/p/9107200.html
Copyright © 2020-2023  润新知