HDU4791->贪心&&二分优化
2016-10-07 21:47
351 查看
HDU4791->贪心&&二分优化
题意:有一家打印店,打印超过一定分数后每份的单价就会降低,你需要打印一些文件,你可以打印敲好的份数或者是多打印一些废纸以凑得更低的价格,问打印这些文件所需的最小花费。
题解:
采用贪心策略,从最单价低价开始计算,直到计算到数量的区间正好包含所需印刷的产品数量。
但是单纯采取贪心策略遍历整个价格数组会TLE,所以需要二分优化,先二分找到包含当前价格的价格区间,然后在当前区间内的价格以及数量超过当前区间的区间中选取最低总价。
代码:
#include <stdio.h> #include <iostream> #include <algorithm> using namespace std ; #define MAX 100005 #define INF 0x7fffffffffffffff struct node1 { long long num ,query; long long mini; }ans[MAX]; struct node { long long s , p ; long long sum; }print[MAX]; bool comp1(const struct node1&a , const struct node1&b) { return a.query < b.query ; } bool comp2(const struct node1&a , const struct node1&b) { return a.num < b.num ; } int main() { int T ; int n , m ,q; scanf("%d" , &T) ; while(T --) { scanf("%d%d" , &n , &m) ; for(int i = 0 ; i < n ; i ++) { scanf("%lld%lld" , &print[i].s , &print[i].p) ; print[i].sum = print[i].s*print[i].p ; } for(int i = 0 ; i < m ; i ++) { scanf("%lld" , &ans[i].query) ; ans[i].num = i ; ans[i].mini = INF ; } sort(ans , ans+ m , comp1) ; long long temp = INF ; int cnt = m-1 ; for(int i = n - 1 ; i >= 0 ; i --) { while (cnt>=0&&ans[cnt].query >= print[i].s) { if(ans[cnt].mini > temp) ans[cnt].mini = temp ; if(ans[cnt].query*print[i].p < ans[cnt].mini) { ans[cnt].mini = ans[cnt].query*print[i].p ; } cnt -- ; } if(temp > print[i].sum) { temp = print[i].sum ; } } sort(ans , ans + m,comp2); for(int i = 0 ; i < m ; i ++) { printf("%lld\n" , ans[i].mini) ; } } return 0 ; }
相关文章推荐
- bzoj1044 木棍分割 二分+贪心&dp优化
- J - 序列变换---没找到原题----<贪心+二分>
- 一次ASP字符串连接“&”优化(从>90s到0.7s)
- <android里图片下载工具类AsyncImageLoader分析> 后续:优化
- 快速排序<优化>
- 性能优化:使用SparseArray代替HashMap<Integer,Object>
- < 弱牛刷贪心给JerryDung&qiuwei大神Orz>最大乘积
- Android中View绘制优化二一---- 使用<include />标签复用布局文件
- SQL Server优化的方法<二>
- SQL Server优化的方法<四>
- CPU 的 cache 和 latency_立华软件园_游戏开发->程序设计->优化调试
- Android UI 优化 [ 类别:Layout ] <merge>的学习
- Oracle - SQL 优化 -------- > 创建计划表
- button在底部的多个view切换优化之<实例二3D切换>
- hdu 4004 The Frog's Games (二分+贪心)
- mysql快速优化<一>
- 修路&&牛.. 贪心+二分..
- 机器学习中的优化方法<一>
- DB2数据库性能调整和优化<目录>
- < 弱牛刷贪心给JerryDung&qiuwei大神Orz>最大乘积