1070. Mooncake (25)
2015-11-25 11:17
239 查看
1.卡在测试点2比较久,结果发现amount也需要使用double才能通过,使用long long或者int都不行
2.贪心算法,每次取单位价格最高的mooncake
存储结构:
AC代码:
2.贪心算法,每次取单位价格最高的mooncake
存储结构:
struct mooncakeNode{ double amount;//需要使用double,才能通过测试点2 double price; double unitPrice; mooncakeNode() :amount(0), price(0), unitPrice(0){}; };
AC代码:
//#include<string>
//#include<stack>
//#include<unordered_set>
//#include <sstream>
//#include "func.h"
//#include <list>
#include <iomanip>
#include<unordered_map>
#include<set>
#include<queue>
#include<map>
#include<vector>
#include <algorithm>
#include<stdio.h>
#include<iostream>
#include<string>
#include<memory.h>
#include<limits.h>
#include<stack>
using namespace std;
/*
3 2000
180 150 100
7.5 7.2 4.5
3 20
180 150 100
7.5 7.2 4.5
0 20
3 0
180 150 100
7.5 7.2 4.5
3 1
180 150 100
7.5 7.2 4.5
*/
struct mooncakeNode{ double amount;//需要使用double,才能通过测试点2 double price; double unitPrice; mooncakeNode() :amount(0), price(0), unitPrice(0){}; };
bool cmp(const mooncakeNode&a, const mooncakeNode&b)
{
if (a.amount == b.amount && a.price >= b.price) return true;
else
return (double)a.price*b.amount > (double)b.price*a.amount;
}
int main(void)
{
int n, marketNeed;
cin >> n >> marketNeed;
vector<mooncakeNode> mooncake(n);
for (int i = 0; i < n; i++)
{
cin >> mooncake[i].amount;
}
for (int i = 0; i < n; i++)
{//输入总价格和求出单位价格
cin >> mooncake[i].price;
if (mooncake[i].amount == 0)
{
mooncake[i].price = 0;
mooncake[i].unitPrice = 0;
}
else
mooncake[i].unitPrice = mooncake[i].price / mooncake[i].amount;
}
sort(mooncake.begin(), mooncake.end(), cmp);
double profit=0;
for (int i = 0; i < n && marketNeed!=0; i++)
{
if (mooncake[i].amount == marketNeed)
{//如果刚好相等,则全部要了
profit += mooncake[i].price;
marketNeed -= mooncake[i].amount;
}
else if (mooncake[i].amount < marketNeed)
{//如果数量小于市场需要,则全部要了
profit += mooncake[i].price;
marketNeed -= mooncake[i].amount;
}
else
{//如果数量大于市场需要,则取市场需要部分即可
profit += mooncake[i].price*marketNeed/mooncake[i].amount;
marketNeed = 0;
}
}
printf("%.2lf", profit);
//cout << setprecision(2) << profit << endl;
return 0;
}
相关文章推荐
- web.xml详解
- 关于cookie与网络安全的一些学习
- Caffe、TensorFlow、MXnet三个开源库对比
- HDU 2255 奔小康赚大钱 KM模板题
- 为listview设置padding时,滑动页面顶部与底部不显示padding
- JavaScript菜鸟教程学习 http://www.runoob.com/js/js-tutorial.html
- MyBatis学习总结(七)——Mybatis缓存
- 在STM32中使用printf发送字符串到串口
- Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported
- 从程序员到项目经理(24):怎样给领导汇报工作
- C# #if DEBUG
- 基于jquery实现页面滚动时顶部导航显示隐藏
- IO流中的字符流FileWriter
- Zookeeper的事件驱动和订阅模式
- Android中常见的热门标签的流式布局的实现
- ECharts 实时折线
- ab测试
- 页面上的复选框,然后保存到数据库,再从数据库取出来,看那个复选框被选中
- 从程序员到项目经理(23):项目管理不能浑水摸鱼
- 从程序员到项目经理(22):对绩效考核的吐槽