Mixing Milk(USACO)
/* ID:tianlin2 PROG:milk LANG:C++ */ #include <iostream> #include <cstdlib> #include <fstream> using namespace std; typedef struct milk milk; struct milk{ int mon; int wei; }; //最大农民数 milk m[5000]; int moncmp(const void *va,const void *vb) { milk *a,*b; a=(milk*)va; b=(milk*)vb; if(a->mon>b->mon) return 1; if(a->mon<b->mon) return -1; return 0; } int main() { ofstream fout("milk.out"); ifstream fin("milk.in"); int we,cfar,cmon=0,cwei=0; fin>>we>>cfar; for(int i=0;i!=cfar;++i) fin>>m[i].mon>>m[i].wei; qsort(m,cfar,sizeof(milk),moncmp); for(int i=0;i!=cfar;++i) { cwei+=m[i].wei; if(cwei<=we) cmon+=m[i].wei*m[i].mon; //考虑了多出的情况 else { cmon=cmon+m[i].wei*m[i].mon-(cwei-we)*m[i].mon; cwei=we; } if(cwei==we) break; } fout<<cmon<<endl; //system("pause"); return 0; }
利用了qsort先把m按照单价的大小升序排列,接下来就好办了!从最低的价格开始算起!
官方给出的优秀算法:
#include <fstream> #define MAXPRICE 1001 using namespace std; int main() { ifstream fin ("milk.in"); ofstream fout ("milk.out"); unsigned int i, needed, price, paid, farmers, amount, milk[MAXPRICE][2]; paid = 0; fin>>needed>>farmers; for(i = 0;i<farmers;i++){ fin>>price>>amount; milk[price][0] += amount; } for(i = 0; i<MAXPRICE && needed;i++){ if(needed> = milk[i][0]) { needed -= milk[i][0]; paid += milk[i][0] * i; } //判断此价格点是否有奶供应 else if(milk[i][0]>0) { paid += i*needed; needed = 0; } } fout << paid << endl; return 0; }
很巧妙的省去了排序,直接定义一个价格i,历遍所有价格,看此价格点处是否有奶供应!
转载于:https://www.cnblogs.com/cyxcw1/archive/2010/02/21/3051337.html
Mixing Milk(USACO)相关推荐
- 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
P1208 [USACO1.3]混合牛奶 Mixing Milk 题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业 ...
- 2019 GDUT Rating Contest I : Problem H. Mixing Milk
题面: H. Mixing Milk Input file: standard input Output file: standard output Time limit: 1 second Memory ...
- 混合牛奶 Mixing Milk
P1208 [USACO1.3]混合牛奶 Mixing Milk - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路 1.创建结构体变量,储存农民牛奶的单价和农民一天最多能卖出 ...
- USACO SEC.1.3 No.1 Mixing Milk
题意:需要收购总数为N的牛奶,现在有M个牛奶供应商(总量足够),给出总数和单价,求最小的花销. 核心:基本的贪心解法,按单价排序逐个选取. 目的在于熟悉基本的贪心法的基本方法和思路 /* ID: ls ...
- usaco Mixing Milk
我太菜了先从简单题慢慢刷 /* ID: jinbo wu LANG: C++ PROB: milk */ #include<bits/stdc++.h> using namespace s ...
- USACO——Mixing Milk 混合牛奶
描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同 ...
- USACO Training Section 1.3混合牛奶 Mixing Milk
题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...
- hoj1003 Mixing Milk (哈工大)
//贪心法,使用排序函数,每次都找最便宜的牛奶,然后判断够没够重量 #include <iostream> #include <algorithm> #define X 501 ...
- 洛谷——P1208 [USACO1.3]混合牛奶 Mixing Milk
题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...
最新文章
- R创建透视表(Pivot Tables)
- rhel系统启动过程_Linux 的启动流程
- bzoj 2878 [Noi2012]迷失游乐园——树上的期望dp
- Python中安装moveit_commander,顺带解决rospy模块未安装问题
- python gui界面实例_Python界面(GUI)编程PyQt5工具栏和菜单
- 抓住眼球的美食海报模板|总有设计技法,吸引住你
- MySQL误删数据救命指南:必收藏
- C#门诊收费管理系统设计(数据库+源码+文档)
- 计算机ps图片在哪里看,如何在Photoshop中查看照片的EXIF信息如何删除照片的exif信息...
- 中国各省的简称及省会
- matlab 傅立叶变换去噪
- Centos7 下配置mail使用163邮箱发送邮件
- DES算法的介绍和实现(转的,其实3des一样的原理就是加密解密加密而已)
- C#学习纪要(8):7月17日
- 在北京工作5年的程序员,通过人才引进入职县城事业编,月薪曝光
- 越努力,越幸运—2021年终总结
- 【Excel使用技巧】Excel数据导入sql
- 软考成绩什么时候出?
- 老旧笔记本安装openwrt实践:
- javascript复习资料第一部分