zoukankan      html  css  js  c++  java
  • Codeforces Round #448 (Div. 2) A题. Pizza Separation

    A. Pizza Separation
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    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.

     题意:把一个披萨分成 n 分 , 第 i 分 的圆心角 为 ai ,可以吧 披萨 分成 连续的两部分 , 问这两部分的最小差的绝对值是多少

    思路:直接暴力就好,或者假设差值 关于 180 对称 , 然后枚举 n 个起点 , 之后 求 相加之后 与 180 相比的最小值的两倍

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    
    using namespace std ; 
    
    #define maxn 400 
    int num[maxn] ; 
    int n ; 
    
    int main(){
         
        //freopen("in" , "r" , stdin) ; 
        
        while(~scanf("%d" , &n)){
    
            for(int i=0 ; i<n ;i++){
                scanf("%d"  , &num[i]) ; 
            }
            int result = 500 , sum = 0; 
            for(int i=0 ; i<n ; i++){//枚举起点
                sum = num[i] ; 
                result = min(abs(180-sum) , result) ; 
                for(int j=i+1 ; j!= i&&j<n ; j = (j+1)%n){
                    sum += num[j] ; 
                    result = min(abs(180-sum) , result) ; 
                }
            }
    
            printf("%d
    " , 2*result) ; 
        }
    
        return 0 ; 
    }
    View Code

    sum 和 360-sum 分别为两部分披萨的角度

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    
    using namespace std ;
    
    #define maxn 400
    int num[maxn] ;
    int n ;
    
    int main(){
    
        //freopen("in" , "r" , stdin) ;
    
        while(~scanf("%d" , &n)){
    
            for(int i=0 ; i<n ;i++){
                scanf("%d"  , &num[i]) ;
            }
            int result = 500 , sum = 0;
            for(int i=0 ; i<n ; i++){//枚举起点
                sum = num[i] ;
                result = min(abs(360-sum - sum) , result) ;
                for(int j=i+1 ; j!= i&&j<n ; j = (j+1)%n){
                    sum += num[j] ;
                    result = min(abs(360-sum - sum) , result) ;
                }
            }
    
            printf("%d
    " , result) ;
        }
    
        return 0 ;
    }
    View Code
  • 相关阅读:
    备忘录模式
    中介者模式
    观察者模式、发布订阅和事件驱动
    ELK日志系统之kibana的使用操作
    ELK日志系统之说说logstash的各种配置
    03篇ELK日志系统——升级版集群之ELK日志系统整合springboot项目
    02篇ELK日志系统——升级版集群之kibana和logstash的搭建整合
    01篇ELK日志系统——升级版集群之elasticsearch集群的搭建
    Linux安装jdk环境
    01GitLab的使用——创建项目并上传到GitLab
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/7932873.html
Copyright © 2011-2022 走看看