• [Jobdu] 题目1377:缓变序列


    题目描述:
    陈博在写论文时碰到一个难题:如何将给定的整数序列变换成缓变序列:即任意两个相邻的元素相差均为1,第1个元素和最后一个元素相差也为1. 变换是指改变原整数序列中各元素的顺序。例如整数序列1,3,2,2可以变换成缓变序列1,2,3,2. 其中(1,2)、(2,3)、(3,2)相差均为1,第1个元素和最后一个元素相差也为1.
    陈博想了很长时间,纵然他英明神武,还是想让大家帮一个小忙:判断给定的整数序列能不能变换成缓变序列。
    输入:
    每个测试文件包含多个测试案例,每个测试案例两行,第一行包含一个整数N,代表原整数序列的长度,第二行是以空格隔开的N个整数,代表该整数序列。其中我们能保证2 <= N <= 10^5,每个整数大于等于1且小于等于10000.
    输出:
    对于每个整数序列,如果是缓变序列或者能够变换成缓变序列,输出YES,否则输出NO。
    样例输入:
    4
    1 3 2 2
    2
    1 1
    
    样例输出:
    YES
    NO
    
    答疑:
    解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-8100-1-1.html
     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4  
     5 int N;
     6 int A[10001];
     7  
     8 int main() {
     9     int tmp;
    10     while (scanf("%d", &N) != EOF) {
    11         memset(A, 0, sizeof(A));
    12         bool flag = false;;
    13         int min = 10000, max = 0;
    14         for (int i = 0; i < N; ++i) {
    15             scanf("%d", &tmp);
    16             ++A[tmp];
    17             min = min > tmp ? tmp : min;
    18             max = max > tmp ? max : tmp;
    19         }
    20         tmp = 0;
    21         for (int i = min; i <= max; ++i) {
    22             if (A[i] == 0) {
    23                 flag = false;
    24                 break;
    25             }
    26             tmp = A[i] - tmp;
    27             if (tmp <= 0 && i != max) {
    28                 flag = false;
    29                 break;
    30             } 
    31             if (tmp ==0 && i == max) { flag = true;}
    32         }
    33         if (flag) {
    34             printf("YES
    ");
    35         } else {
    36             printf("NO
    ");
    37         }
    38     }
    39     return 0;
    40 }
    41  
    42 /**************************************************************
    43     Problem: 1377
    44     User: hupo250
    45     Language: C++
    46     Result: Accepted
    47     Time:30 ms
    48     Memory:1060 kb
    49 ****************************************************************/
  • 相关阅读:
    AirFlow性能调优
    AirFlow通过账号密码➕角色权限控制来登陆
    通过Supervisor管理airflow的webserver进程和scheduler进程
    CSS基础一
    html学习
    Linux下MySQL远程链接配置
    搭建Firekylin博客
    Vuejs开发环境搭建及热更新
    templates页面超链接访问Controller方法
    Chrome搜索设置
  • 原文地址:https://www.cnblogs.com/easonliu/p/4328681.html
Copyright © 2020-2023  润新知