Codeforces Round #437-贪心-C. Ordering Pizza
来源:互联网 发布:易语言手机轰炸机源码 编辑:程序博客网 时间:2024/06/05 06:09
http://codeforces.com/contest/867/problem/C
给定m个人,他们吃第一种披萨,吃一片可以获得a的幸福值。
吃2片可以获得b幸福值。他们每个人必须要吃x片。
并且每一个披萨是s片。
问你如何在最少的披萨饼书目下,得到的幸福值最大。
我开始一位计算一下每个人饼数的sum。 然后除s 向上取整
然后计算一下最优解,如果最优解的饼的数目小于等于这数目,就是yes。否则就转换饼的数目。
但是没有想到那个贪心的方式,贪一下a变为b。或者b换a
因为最优解不行,所以这个要求一定是比最优解小,我们只要保证尽可能的大就好了
#include <bits/stdc++.h>using namespace std;typedef long long ll;/* 贪心。*/struct Node{ ll v,num; Node(int _a,int _b){ v=_a; num=_b; }};bool operator<(Node a,Node b){ return a.v>b.v;}priority_queue<Node>q;priority_queue<Node>p;ll m,s,num;ll a,b;int main(){ while(~scanf("%lld%lld",&m,&s)){ ll sum1=0; ll sum2=0; ll ans=0; while(!q.empty()) q.pop(); while(!p.empty()) p.pop(); for(int i=0;i<m;i++){ scanf("%lld%lld%lld",&num,&a,&b); if(a>=b){ sum1=(sum1+num); q.push(Node(a-b,num)); ans+=num*a; } else{ sum2=(sum2+num); p.push(Node(b-a,num)); ans+=num*b; } } int tt1=0,tt2=0,tt3=0; if(sum1%s)tt1=sum1/s+1; else tt1=sum1/s; if(sum2%s) tt2=sum2/s+1; else tt2=sum2/s; if((sum1+sum2)%s) tt3=(sum1+sum2)/s+1; else tt3=(sum1+sum2)/s; if(tt1+tt2<=tt3){ printf("%lld\n",ans); } else{ sum1=sum1%s; sum2=sum2%s; ll anss1=0; ll anss2=0; while(!q.empty()){ if(sum1<=0) break; Node u=q.top(); q.pop(); anss1+=(u.v)*min(u.num,sum1); sum1-=min(u.num,sum1); } while(!p.empty()){ if(sum2<=0) break; Node u=p.top(); p.pop(); anss2+=(u.v)*min(u.num,sum2); sum2-=min(u.num,sum2); } printf("%lld\n",ans-min(anss1,anss2)); } } return 0;}
阅读全文
0 0
- Codeforces Round #437-贪心-C. Ordering Pizza
- Codeforces Round #437 (Div. 2 C. Ordering Pizza 贪心 only two types of pizza
- Codeforces Round #437 Div. 2 C. Ordering Pizza
- CodeForces 867C Ordering Pizza
- codeforces 867 C Ordering Pizza
- Ordering Pizza(贪心)
- codeforces 865B. Ordering Pizza
- Codeforces Round #253 DIV1 C 贪心
- Codeforces Round #228 (Div. 1) C 贪心
- Codeforces Round #274(Div2) C. Exams 贪心
- Educational Codeforces Round 12(C)贪心
- Codeforces Round #311 (Div. 2) C 贪心
- Codeforces Round #363 (Div. 2)-C--贪心
- Codeforces Round #370 (Div. 2) C 贪心
- Codeforces Round #375 (Div. 2) C (贪心)
- Codeforces Round #414 C. Naming Company 贪心
- (贪心)Codeforces Round #402 C. Dishonest Sellers
- Codeforces Round #433 C. Planning(贪心)
- Vision_数据结构_并查集
- 关于含static关键词的代码调用顺序
- jdk源码解析(六)——类(class)文件结构
- 单选Btn
- Ubuntu16.04下安装sublime text3并配置anaconda插件
- Codeforces Round #437-贪心-C. Ordering Pizza
- 判断元音还是辅音
- 欢迎使用CSDN-markdown编辑器
- List与Json的相互转换
- ###struts模型驱动(必须new)能够封装【对象类型属性的属性】.页面传参错误导致的问题:HTTP Status 500
- 【git相关1】一些基本命令
- 《程序设计进阶—Java语言.翁恺》第一周编程作业-分数
- centos 7.2中xampp mysql 数据字符集设置解决中文乱码
- Hbase