usaco Barn Repair
2015-08-27 11:04
274 查看
农夫需要将一串大小相等的畜棚盖起来,但是他只能定做M个木板,并不是所有的畜棚都有牛,所以不需要将所有的畜棚都盖起来。问在将所有有牛畜棚都盖起来且只能定做M个木板的情况下,使用的M个木板最少能盖多少个畜棚。
贪心的找出M-1个最大(相连且没有牛的畜棚区间),这些区间总和就是不许要盖住的总和,然后用编号最小的被占畜棚和编号最大的被占畜棚之间的所有畜棚总数减去刚刚得到的不许要盖住的总和就是正解。
贪心的找出M-1个最大(相连且没有牛的畜棚区间),这些区间总和就是不许要盖住的总和,然后用编号最小的被占畜棚和编号最大的被占畜棚之间的所有畜棚总数减去刚刚得到的不许要盖住的总和就是正解。
/* ID: modengd1 PROG: barn1 LANG: C++ */ #include <iostream> #include <stdio.h> #include <algorithm> #include <queue> using namespace std; int main() { freopen("barn1.in","r",stdin); freopen("barn1.out","w",stdout); int M,S,C,sum,no_occupied; int input[201]; priority_queue<int> Q; scanf("%d%d%d",&M,&S,&C); for(int i=0;i<C;i++) { scanf("%d",&input[i]); } sort(input,input+C); sum=input[C-1]-input[0]+1; for(int i=1;i<C;i++) { if(input[i]-input[i-1]>1) Q.push(input[i]-input[i-1]-1); } no_occupied=0; M=min(M,C);//有可能出现木板数量大于被占畜棚的情况 for(int i=0;i<M-1;i++) { no_occupied+=Q.top(); Q.pop(); } cout<<sum-no_occupied<<endl; return 0; }
相关文章推荐
- strong,weak, retain, assign的区别
- timed out waiting for input: auto-logout
- ubuntu下出现su: Authentication failture
- 2015 Multi-University Training Contest 9(hdu 5396 - hdu 5405)
- AIDL的简单示例与解析
- hdoj 1023 Train Problem II 【卡特兰数】
- RAID各级别的特性
- MainActivity 嵌入 Fragment 的每个函数执行的生命周期
- hdoj.1023 Train Problem II【卡特兰数列】 2015/08/27
- 2015.6.17(Tair)
- oc assign / copy / retain / 容器 / 多态
- oc MRC内存管理机制alloc/retain/copy/release/autorelease
- Syntax error, type annotations are available only when source level is at least 1.8
- install ftp client on kail
- Container With Most Water
- LightOJ 1403 - Air Raid【二分匹配】
- Leetcode: Contains Duplicate
- Leetcode: Factorial Trailing Zeroes
- ideaiu的使用
- CCComponentContainer,CCComponent解析