USACO-Section 1.3 Barn Repair[...]
2017-05-30 15:21
375 查看
2017-05-30
题目大意:
输入的第一行为三个整数,第一个整数M (1 <= M <= 50)表示区间的个数,第二个整数S (1 <= S <= 200)表示全部整数的范围,第三个整数C表示全部整数的个数。接下来的C行每行有一个在1~S表示的范围内的整数。要求确定M个区间,可以覆盖全部C个数(数可以在区间边界),输出为所覆盖的区间范围的最小值。
样例输入:
样例输出:
输出解析:
这个样例中符合要求的4个区间为:[3,8], [14,21], [25,31], [40,43]。
题解:
要求覆盖区间最小,即要求使得区间之间空白范围最大。所以进行以下步骤:
(1)对输入的数字进行递增排序(得到数组A);
(2)求出每两个数字之间的差并进行递增排序(得到数组B);
(3)所求的最小覆盖区间值即为A的最大值与最小值(即最后一个元素与第一个元素)的差减去B中前M-1(M为输入的区间数)个值。
注意的是,因为覆盖的区间包括端点,所以计算B中元素时要将差值减1,计算A的最大最小值之差时要将差值加1。
代码如下:
题目大意:
输入的第一行为三个整数,第一个整数M (1 <= M <= 50)表示区间的个数,第二个整数S (1 <= S <= 200)表示全部整数的范围,第三个整数C表示全部整数的个数。接下来的C行每行有一个在1~S表示的范围内的整数。要求确定M个区间,可以覆盖全部C个数(数可以在区间边界),输出为所覆盖的区间范围的最小值。
样例输入:
4 50 18 3 4 6 8 14 15 16 17 21 25 26 27 30 31 40 41 42 43
样例输出:
25
输出解析:
这个样例中符合要求的4个区间为:[3,8], [14,21], [25,31], [40,43]。
题解:
要求覆盖区间最小,即要求使得区间之间空白范围最大。所以进行以下步骤:
(1)对输入的数字进行递增排序(得到数组A);
(2)求出每两个数字之间的差并进行递增排序(得到数组B);
(3)所求的最小覆盖区间值即为A的最大值与最小值(即最后一个元素与第一个元素)的差减去B中前M-1(M为输入的区间数)个值。
注意的是,因为覆盖的区间包括端点,所以计算B中元素时要将差值减1,计算A的最大最小值之差时要将差值加1。
代码如下:
/* ID: madara01 PROG: barn1 LANG: C++ */ #include <iostream> #include <fstream> #include <string> #define cin fin #define cout fout #define MAX 201 using namespace std; int m,s,c; int occupied[MAX]; int interval[MAX]; void sort(int* v,int n) { int i,j,gap,temp; for(gap = n/2; gap > 0; gap /= 2) for(i = gap; i < n; i++) for(j = i - gap; j >= 0 && v[j] > v[j + gap]; j -= gap) { temp = v[j]; v[j] = v[gap + j]; v[j + gap] = temp; } } int main(int argc, char **argv) { int i,j,stalls = 0; ofstream fout ("barn1.out"); ifstream fin ("barn1.in"); cin >> m >> s >> c; for(i = 0; i < c; i++) cin >> occupied[i]; sort(occupied,c); for(i = 0, j = 0; i < c-1; i++) interval[j++] = occupied[i+1] - occupied[i] - 1; sort(interval,c - 1); for(i = 0; i < m - 1; i++) stalls = stalls + interval[c - 2 - i]; stalls = occupied[c-1] - occupied[0] + 1 - stalls; if(m >= c) stalls = c; cout << stalls << endl; return 0; }
相关文章推荐
- USACO - Chapter1 Section 1.3 - Barn Repair
- USACO Section 1.3: Barn Repair
- USACO Section 1.3 Barn Repair 解题报告
- USACO section1.3 Barn Repair
- [USACO]Section 1.3 Barn Repair
- USACO-Section1.3 Barn Repair【贪心算法】
- USACO-Section1.3 Barn Repair
- USACO-Section 1.3 Barn Repair(贪心)
- USACO Section1.3 Barn Repair 解题报告
- USACO Section1.3 Barn Repair
- USACO Section 1.3 Barn Repair - 卡了一年的DP...
- USACO-section1.3 Barn Repair
- USACO section1.3 Barn Repair 修理牛棚(贪心)
- USACO Section 1.3 - Barn Repair
- USACO Section 1.3 Prime Cryptarithm (枚举)
- 【USACO-Chapter1-1.3】【贪心】Barn Repair
- [USACO Training] Section 1.3
- USACO Section 1.3 : Mixing Milk
- usaco.section1.3 wormhole(枚举)
- USACO Section 1.3 Prime Cryptarithm