USACO: Barn Repair
来源:互联网 发布:软件项目经理的职责 编辑:程序博客网 时间:2024/06/03 20:39
/*PROG: barn1LANG: C++11*/#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <cstdlib>#include <climits>#include <ctype.h>#include <queue>#include <stack>#include <vector>#include <utility>#include <deque>#include <set>#include <map>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define mst(a,b) memset(a,b,sizeof(a))#define eps 10e-8typedef long long ll;const int N = 100010;const ll MOD = 1000000007;const int INF = 0x7fffffff;int m ,s ,c, k, i;bool stalls[500];int main(){ ifstream fin ("barn1.in"); ofstream fout ("barn1.out"); fin >> m >> s >> c; for(i = 0; i < c; i++){ fin >> k; stalls[k] = 1; } // get rid of both end i = 1; while(i <= s && !stalls[i] ){ i++; } vector<int> vacancy; int empty = 0;// only when empty slots is between occupied stalls int board = 0; while(1){ empty = 0; while(i <= s && !stalls[i]){ i++; empty++; } if( i <= s){ board++; if(empty) vacancy.push_back(empty); } else { break; } while( i <= s && stalls[i]){ i++; } if(i == s+1){ break; } } sort(vacancy.begin(), vacancy.end()); for(int i = 0; i < board -m; i++){ c += vacancy[i]; } fout << c << endl; fin.close(); fout.close(); return 0;}
贪心: 首先计算没有木板限制时为达到总length最短所需要的木板。 用合并的方式来达到减少木板的目的。每一次合并浪费掉的木板最短,结果就是最优解。
具体的一次扫描,计算初始木板个数的同时统计连续无奶牛的stall的长度,最后排序,从短的开始合并就可以了。
0 0
- Barn Repair(usaco)
- USACO 1.3-Barn Repair
- [USACO] Barn Repair
- USACO 1.3 Barn Repair
- USACO Barn Repair
- USACO/Barn Repair(贪心)
- usaco Barn Repair
- [USACO]Barn Repair
- USACO Barn Repair----贪心
- USACO:Barn Repair
- usaco 24 barn repair
- USACO Barn Repair
- Barn Repair USACO
- USACO-Barn Repair
- USACO Barn Repair
- USACO Barn Repair
- USACO Barn Repair
- Barn Repair-usaco
- Android Activity与Service间的通讯之一(回调函数)
- 第七篇 硬件内存资源的获取,解析
- 银行系统的简单问题
- 创建型设计模式:简单工厂模式
- 汉诺塔
- USACO: Barn Repair
- iOS判断是否是表情和邮箱格式的判断
- Adapter深入理解与优化
- mmap设备操作
- BRISK: Binary Robust Invariant Scalable Keypoints
- 国内外安全网站网址大集合
- Threads vs. Async
- 交换两个变量的值
- TCP/UDP