zoukankan      html  css  js  c++  java
  • usaco-barn-repair-pass-KISS

    这个应该算比较简洁的了,呵呵,原来是数中间的间隔m-1段,这个思路很有意思:

    /*
    ID: qq104801
    LANG: C++
    TASK: barn1
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <assert.h>
    
    /* for debug only:counter
    */
    void debug_dummy(void)
    {
        return;
    }
    
    int m,s,c;
    int bb[200],cc[200];
    
    int cmpa(const void *a,const void *b)
    {
        return *(int*)a - *(int*)b;
    }
    
    int cmpd(const void *a,const void *b)
    {
        return *(int*)b - *(int*)a;
    }
    
    int test(void)
    {
        int total,i;    
        if(m>=s)
           return c;
        else
       {    
            cc[0]=0;        
            for(i=1;i<c;i++)
                cc[i]=bb[i]-bb[i-1]-1;
            qsort(cc,c,sizeof(cc[0]),cmpd);
            //for(i=0;i<c;i++)
                //printf("%d
    ",cc[i]);
            total=bb[i-1]-bb[0]+1;
            //printf("%d
    ",total);
           for(int i=0;i<m-1;i++)       
                total-=cc[i];        
           
       }
       return total;    
    }
    
    main () {    
        FILE *fin = fopen ("barn1.in", "r");
        FILE *fout = fopen ("barn1.out", "w"); 
        fscanf(fin,"%d %d %d",&m,&s,&c);
    
        for(int i=0;i<c;i++)
        {
            fscanf(fin,"%d",&bb[i]);
        }
        qsort(bb,c,sizeof(bb[0]),cmpa);
        int count=0;
        count=test();
        //printf("%d
    ",count);
        fprintf(fout,"%d
    ",count);    
        fclose(fin);
        fclose(fout);
        exit (0);
    }

    测试用例:

    USER: ll tom [qq104801]
    TASK: barn1
    LANG: C++
    
    Compiling...
    Compile: OK
    
    Executing...
       Test 1: TEST OK [0.005 secs, 3496 KB]
       Test 2: TEST OK [0.003 secs, 3496 KB]
       Test 3: TEST OK [0.003 secs, 3496 KB]
       Test 4: TEST OK [0.005 secs, 3496 KB]
       Test 5: TEST OK [0.008 secs, 3496 KB]
       Test 6: TEST OK [0.003 secs, 3496 KB]
       Test 7: TEST OK [0.003 secs, 3496 KB]
       Test 8: TEST OK [0.008 secs, 3496 KB]
       Test 9: TEST OK [0.003 secs, 3496 KB]
       Test 10: TEST OK [0.003 secs, 3496 KB]
    
    All tests OK.
    
    Your program ('barn1') produced all correct answers! This is your submission #2 for this problem. Congratulations!
    
    Here are the test data inputs:
    
    ------- test 1 ----
    4 50 17
    3
    4
    6
    8
    14
    15
    16
    17
    25
    26
    27
    30
    31
    40
    41
    42
    43
    ------- test 2 ----
    2 10 4
    2
    4
    6
    8
    ------- test 3 ----
    3 27 16
    2
    3
    5
    6
    8
    9
    10
    13
    14
    15
    16
    19
    20
    21
    22
    27
    ------- test 4 ----
    1 200 8
    101
    105
    102
    106
    103
    107
    104
    99
    ------- test 5 ----
    50 200 10
    18
    69
    195
    38
    73
    28
    6
    172
    53
    99
    ------- test 6 ----
    50 30 6
    30
    25
    20
    15
    10
    5
    ------- test 7 ----
    20 200 80
    65
    178
    64
    70
    18
    32
    88
    90
    98
    20
    152
    31
    118
    117
    127
    81
    175
    73
    136
    161
    165
    63
    130
    133
    190
    10
    4
    138
    200
    43
    189
    37
    86
    182
    145
    110
    67
    126
    114
    153
    99
    25
    155
    119
    176
    55
    48
    197
    62
    147
    125
    60
    12
    23
    112
    96
    27
    122
    35
    50
    36
    49
    149
    108
    100
    188
    77
    191
    6
    121
    166
    132
    82
    95
    150
    89
    22
    40
    128
    56
    ------- test 8 ----
    4 200 100
    72
    180
    46
    198
    196
    131
    165
    112
    52
    133
    187
    93
    57
    35
    128
    65
    127
    130
    12
    49
    88
    155
    122
    193
    101
    164
    98
    143
    54
    149
    38
    84
    45
    139
    79
    16
    102
    20
    14
    150
    188
    33
    176
    135
    29
    80
    19
    74
    11
    114
    95
    185
    137
    59
    32
    189
    66
    67
    191
    91
    77
    134
    18
    10
    7
    200
    8
    13
    55
    24
    142
    184
    17
    6
    109
    105
    43
    181
    85
    94
    151
    160
    115
    25
    116
    111
    37
    104
    144
    97
    90
    141
    120
    119
    152
    182
    123
    172
    40
    23
    ------- test 9 ----
    20 195 100
    1
    2
    3
    4
    5
    11
    12
    13
    14
    15
    21
    22
    23
    24
    25
    31
    32
    33
    34
    35
    41
    42
    43
    44
    45
    51
    52
    53
    54
    55
    61
    62
    63
    64
    65
    71
    72
    73
    74
    75
    81
    82
    83
    84
    85
    91
    92
    93
    94
    95
    101
    102
    103
    104
    105
    111
    112
    113
    114
    115
    121
    122
    123
    124
    125
    131
    132
    133
    134
    135
    141
    142
    143
    144
    145
    151
    152
    153
    154
    155
    161
    162
    163
    164
    165
    171
    172
    173
    174
    175
    181
    182
    183
    184
    185
    191
    192
    193
    194
    195
    ------- test 10 ----
    1 200 2
    1
    200
    
    Keep up the good work!
    Thanks for your submission!
    /***********************************************

    看书看原版,原汁原味。

    不会英文?没关系,硬着头皮看下去慢慢熟练,才会有真正收获。

    没有原书,也要网上找PDF来看。

    网上的原版资料多了去了,下载东西也到原始下载点去看看。

    你会知其所以然,呵呵。

    ***********************************************/

  • 相关阅读:
    ubuntu下7z文件的解压
    Ubuntu16 编译源码出错 unsupported reloc 43
    两个超级大整数的相加,相乘
    c++ abcd....等等字符所有不同的非重复组合排布
    C# Java 通用MD5加密
    artDialog-学习课程(三) 参数配置表
    artDialog-学习课程(二)-常用弹出框
    MySQL 查看数据库数据表空间大小
    MySQL Date 函数
    artDialog-学习课程(一)-下载与引用
  • 原文地址:https://www.cnblogs.com/dpblue/p/3948166.html
Copyright © 2011-2022 走看看