博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Heap:Sunscreen(POJ 3614)
阅读量:5104 次
发布时间:2019-06-13

本文共 2313 字,大约阅读时间需要 7 分钟。

                

                 

  题目大意:一堆牛,为了避免晒太阳会灼烧自己,然后他们自己有自己的防晒指数(一个区间),防晒霜可以提高防晒因数SPF,大了不行小了不行,现在有一桶防晒霜,他们提供一定的SPF,但是最多可以提供k头牛使用,问你这堆防晒霜最多可以给多少头牛提供保护?

  大水题,我们用贪心就可以了,把防晒因数尽量给SPF_MIN大的用(还要比较SPF_MAX满足要求与否),就是建堆,然后不断贪心就可以了。

  

1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 8 typedef struct cow_set_ 9 {10 int min_SPF;11 int max_SPF;12 }COWS;13 typedef struct lotion_set_14 {15 int SPF;16 int cover;17 bool operator < (const lotion_set_ &x) const //自定义比较函数18 {19 return SPF < x.SPF;//最大值优先20 }21 }Lotion;22 23 int fcomp(const void *a, const void *b)24 {25 if ((*(COWS *)a).min_SPF == (*(COWS *)b).min_SPF)26 {27 return (*(COWS *)b).max_SPF - (*(COWS *)a).max_SPF;28 }29 else30 return (*(COWS *)b).min_SPF - (*(COWS *)a).min_SPF;//由大到小排列31 }32 33 static COWS cows_set[2500];34 static bool used[2500];35 priority_queue
que_lotion;36 37 void Search(const int);38 39 int main(void)40 {41 int cow_sum, lotion_sum;42 Lotion tmp;43 44 while (~scanf("%d%d", &cow_sum, &lotion_sum))45 {46 for (int i = 0; i < cow_sum; i++)47 scanf("%d%d", &cows_set[i].min_SPF, &cows_set[i].max_SPF);48 for (int i = 0; i < lotion_sum; i++)49 {50 scanf("%d%d", &tmp.SPF, &tmp.cover);51 que_lotion.push(tmp);52 } 53 qsort(cows_set, cow_sum, sizeof(COWS), fcomp);54 Search(cow_sum);55 }56 return 0;57 }58 59 void Search(const int cow_sum)60 {61 int ans = 0, tmp_cover;62 Lotion out;63 memset(used, 0, sizeof(used));64 65 while (!que_lotion.empty())66 {67 out = que_lotion.top(); que_lotion.pop();68 tmp_cover = out.cover;69 for (int j = 0; j < cow_sum && tmp_cover != 0; j++)70 {71 if (used[j]) continue;72 if (cows_set[j].max_SPF < out.SPF73 || cows_set[j].min_SPF > out.SPF)74 continue;75 76 used[j] = 1; ans++; tmp_cover--;77 }78 }79 printf("%d\n", ans);80 }

还有这一次用了STL的堆,不知道为什么STL的堆总是比我自己手动写的要慢一点,可能是因为STL要先要一片区域的原因

转载于:https://www.cnblogs.com/Philip-Tell-Truth/p/4912943.html

你可能感兴趣的文章
web优化之-js动态合并 动态压缩 去掉js重复引用 js缓存 js延迟加载
查看>>
robot framework接口测试之一-完整的测试用例
查看>>
IOS开发:使用lipo合并armv7,i386,armv7s库文件
查看>>
使用 udev 高效、动态地管理 Linux 设备文件
查看>>
Java8函数之旅(四) --四大函数接口
查看>>
django环境处理
查看>>
记一次企业级爬虫系统升级改造(三):文本分析与数据建模规则化处理
查看>>
javascript window对象
查看>>
Android定制组件之Widget之昨天今天明天
查看>>
【JMeter】选项-函数助手对话框应用举例
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
基于docker的spark-hadoop分布式集群之一: 环境搭建
查看>>
oracle 几个时间函数探究
查看>>
第一个Java Web程序
查看>>
Atomic
查看>>
div 显示滚动条与div显示隐藏的CSS代码
查看>>
Redis-1-安装
查看>>
Access denied for user ''@'localhost' to database 'mysql'
查看>>