Heap:Sunscreen(POJ 3614)
2015-10-27 00:20
309 查看
晒太阳
题目大意:一堆牛,为了避免晒太阳会灼烧自己,然后他们自己有自己的防晒指数(一个区间),防晒霜可以提高防晒因数SPF,大了不行小了不行,现在有一桶防晒霜,他们提供一定的SPF,但是最多可以提供k头牛使用,问你这堆防晒霜最多可以给多少头牛提供保护?
大水题,我们用贪心就可以了,把防晒因数尽量给SPF_MIN大的用(还要比较SPF_MAX满足要求与否),就是建堆,然后不断贪心就可以了。
#include <iostream> #include <functional> #include <algorithm> #include <queue> using namespace std; typedef struct cow_set_ { int min_SPF; int max_SPF; }COWS; typedef struct lotion_set_ { int SPF; int cover; bool operator < (const lotion_set_ &x) const //自定义比较函数 { return SPF < x.SPF;//最大值优先 } }Lotion; int fcomp(const void *a, const void *b) { if ((*(COWS *)a).min_SPF == (*(COWS *)b).min_SPF) { return (*(COWS *)b).max_SPF - (*(COWS *)a).max_SPF; } else return (*(COWS *)b).min_SPF - (*(COWS *)a).min_SPF;//由大到小排列 } static COWS cows_set[2500]; static bool used[2500]; priority_queue<lotion_set_>que_lotion; void Search(const int); int main(void) { int cow_sum, lotion_sum; Lotion tmp; while (~scanf("%d%d", &cow_sum, &lotion_sum)) { for (int i = 0; i < cow_sum; i++) scanf("%d%d", &cows_set[i].min_SPF, &cows_set[i].max_SPF); for (int i = 0; i < lotion_sum; i++) { scanf("%d%d", &tmp.SPF, &tmp.cover); que_lotion.push(tmp); } qsort(cows_set, cow_sum, sizeof(COWS), fcomp); Search(cow_sum); } return 0; } void Search(const int cow_sum) { int ans = 0, tmp_cover; Lotion out; memset(used, 0, sizeof(used)); while (!que_lotion.empty()) { out = que_lotion.top(); que_lotion.pop(); tmp_cover = out.cover; for (int j = 0; j < cow_sum && tmp_cover != 0; j++) { if (used[j]) continue; if (cows_set[j].max_SPF < out.SPF || cows_set[j].min_SPF > out.SPF) continue; used[j] = 1; ans++; tmp_cover--; } } printf("%d\n", ans); }
还有这一次用了STL的堆,不知道为什么STL的堆总是比我自己手动写的要慢一点,可能是因为STL要先要一片区域的原因
相关文章推荐
- c++中const用法大全与实质剖析
- 2015 长春、沈阳区域赛总结
- 2012福建省信息学奥林匹克CCF NOIP夏令营第三天训练
- UESTC OJ1221(DFS)
- EditText的使用方法详解
- IOS程序启动原理
- timer使用思考
- WM_PAINT与WM_ERASEBKGND补充
- keepalived实现nginx的高可用(双主模型)
- Android读书笔记------View动画(2)
- 冒泡排序
- 洛谷1791/CODEVS1214线段覆盖
- 关于python中文转码出现的错误
- 用 goto + if 模拟 循环
- hdu 1002 高精度加法
- CentOS yum时出现"Could not retrieve mirrorlist"
- 字符与字符串
- 【项目管理与构建】Nexus的详细介绍以及安装(四)
- 【项目管理与构建】Nexus的详细介绍以及安装(四)
- gcc warning #pragma comment 解决