• Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) C. Vasya and Golden Ticket 【。。。】


    任意门:http://codeforces.com/contest/1058/problem/C

    C. Vasya and Golden Ticket
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Recently Vasya found a golden ticket — a sequence which consists of nn digits a1a2ana1a2…an. Vasya considers a ticket to be lucky if it can be divided into two or more non-intersecting segments with equal sums. For example, ticket 350178350178 is lucky since it can be divided into three segments 350350, 1717 and 88: 3+5+0=1+7=83+5+0=1+7=8. Note that each digit of sequence should belong to exactly one segment.

    Help Vasya! Tell him if the golden ticket he found is lucky or not.

    Input

    The first line contains one integer nn (2n1002≤n≤100) — the number of digits in the ticket.

    The second line contains nn digits a1a2ana1a2…an (0ai90≤ai≤9) — the golden ticket. Digits are printed without spaces.

    Output

    If the golden ticket is lucky then print "YES", otherwise print "NO" (both case insensitive).

    Examples
    input
    Copy
    5
    73452
    output
    Copy
    YES
    input
    Copy
    4
    1248
    output
    Copy
    NO
    Note

    In the first example the ticket can be divided into 77, 3434 and 5252: 7=3+4=5+27=3+4=5+2.

    In the second example it is impossible to divide ticket into segments with equal sum.

    题意概括:

    一串长度为N的数字,判断是否能分成相同和的若干块。

    解题思路:

    记一道被自己蠢哭的水题,主要是理解题意的问题;

    一开始以为分块可以不连续,又是排序又乱七八糟搞一大堆;

    结果分块是连续的,活生生的贪心水题。

    读题很重要。

    AC code:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <cmath>
     6 using namespace std;
     7 const int MAXN = 102;
     8 char str[MAXN];
     9 int N, sum;
    10 int main()
    11 {
    12     scanf("%d", &N);
    13     scanf("%s", &str);
    14     bool flag = true;
    15     for(int i = 0; i < N-1; i++){
    16         sum += str[i]-'0';
    17         int pos = i+1;
    18         flag = true;
    19         while(pos < N){
    20             int sum2 = str[pos++]-'0';
    21             while(pos < N && sum2+str[pos]-'0' <= sum){
    22                 sum2+=str[pos++]-'0';
    23             }
    24             if(sum2 != sum) {flag = false; break;}
    25         }
    26         if(flag) {puts("YES"); break;}
    27     }
    28     if(flag == false) puts("NO");
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    Microsoft .NET Framework 远程执行代码漏洞
    GE PACSystems RX3i 输入验证漏洞
    Windows10 1809版本Windows自动更新服务无法禁用问题解决方案
    企业网络防范Serv-U的漏洞
    jsp安全问题及其解决建议
    Windows XP系统搜索故障及处理办法点点通
    开启路由器的TCP拦截
    从MyIE2平滑升级到Maxthon的完美方案
    全面解析UNIX缓冲区溢出 深度防御体系
    从异常系统进程检查企业网络安全 (二)
  • 原文地址:https://www.cnblogs.com/ymzjj/p/9703103.html
Copyright © 2020-2023  润新知