• USACO Section 1.3 Barn Repair


    1)正难则反,考虑把空隙弄到最大,即找出前M-1个最大的空隙

    2)数据输入时,虽然M最大为20,但保留空隙的数组要开大(针对sort而言)

    3)有可能M>C,这时,要取C-1作为空隙选取的个数上界

    /*
    	ID:linyvxi1
    	PROB:barn1
    	LANG:C++
    */
    #include <stdio.h>
    #include <algorithm>
    #include <stdlib.h>
    using namespace std;
    int min(int a,int b)
    {
    	return a<b?a:b;
    }
    bool cmp(int a,int b)
    {
    	return a>b;
    }
    
    int main()
    {
    	int M,S,C;
    	int arr[205],arr_blank[205];
    
    	FILE*	fin=fopen("barn1.in","r");
    	FILE*	fout=fopen("barn1.out","w");
    //	scanf("%d%d%d",&M,&S,&C);
    	fscanf(fin,"%d%d%d",&M,&S,&C);
    	int i;
    	for(i=0;i<C;i++){
    		fscanf(fin,"%d",&arr[i]);
    	}
    	sort(arr,arr+C);
    	int j=0;
    	for(i=1;i<C;i++){
    		arr_blank[j]=arr[i]-arr[i-1]-1;
    		j++;
    	}
    	sort(arr_blank,arr_blank+C-1,cmp);
    	//slect the min M-1th
    	int sum=0;
    	for(i=0;i<min(M-1,C-1);i++)
    		sum+=arr_blank[i];
    	fprintf(fout,"%d\n",arr[C-1]-arr[0]+1-sum);
    	//printf("%d\n",arr_blank[0]);
    //	system("PAUSE");
    	//fprintf(fout,"%d\n",arr[C-1]-arr[0]-sum);
    }
    

      

    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
  • 相关阅读:
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    《C++常见问题及解答》
  • 原文地址:https://www.cnblogs.com/yangce/p/2229484.html
Copyright © 2020-2023  润新知