/* 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)相关推荐

  1. 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk

    P1208 [USACO1.3]混合牛奶 Mixing Milk 题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业 ...

  2. 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 ...

  3. 混合牛奶 Mixing Milk

    P1208 [USACO1.3]混合牛奶 Mixing Milk - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路 1.创建结构体变量,储存农民牛奶的单价和农民一天最多能卖出 ...

  4. USACO SEC.1.3 No.1 Mixing Milk

    题意:需要收购总数为N的牛奶,现在有M个牛奶供应商(总量足够),给出总数和单价,求最小的花销. 核心:基本的贪心解法,按单价排序逐个选取. 目的在于熟悉基本的贪心法的基本方法和思路 /* ID: ls ...

  5. usaco Mixing Milk

    我太菜了先从简单题慢慢刷 /* ID: jinbo wu LANG: C++ PROB: milk */ #include<bits/stdc++.h> using namespace s ...

  6. USACO——Mixing Milk 混合牛奶

    描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同 ...

  7. USACO Training Section 1.3混合牛奶 Mixing Milk

    题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...

  8. hoj1003 Mixing Milk (哈工大)

    //贪心法,使用排序函数,每次都找最便宜的牛奶,然后判断够没够重量 #include <iostream> #include <algorithm> #define X 501 ...

  9. 洛谷——P1208 [USACO1.3]混合牛奶 Mixing Milk

    题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...

最新文章

  1. R创建透视表(Pivot Tables)
  2. rhel系统启动过程_Linux 的启动流程
  3. bzoj 2878 [Noi2012]迷失游乐园——树上的期望dp
  4. Python中安装moveit_commander,顺带解决rospy模块未安装问题
  5. python gui界面实例_Python界面(GUI)编程PyQt5工具栏和菜单
  6. 抓住眼球的美食海报模板|总有设计技法,吸引住你
  7. MySQL误删数据救命指南:必收藏
  8. C#门诊收费管理系统设计(数据库+源码+文档)
  9. 计算机ps图片在哪里看,如何在Photoshop中查看照片的EXIF信息如何删除照片的exif信息...
  10. 中国各省的简称及省会
  11. matlab 傅立叶变换去噪
  12. Centos7 下配置mail使用163邮箱发送邮件
  13. DES算法的介绍和实现(转的,其实3des一样的原理就是加密解密加密而已)
  14. C#学习纪要(8):7月17日
  15. 在北京工作5年的程序员,通过人才引进入职县城事业编,月薪曝光
  16. 越努力,越幸运—2021年终总结
  17. 【Excel使用技巧】Excel数据导入sql
  18. 软考成绩什么时候出?
  19. 老旧笔记本安装openwrt实践:
  20. javascript复习资料第一部分

热门文章

  1. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件
  2. js校验复选框(多选按钮)是否被选中的方法
  3. 使用python愉快地做高数线代题目~
  4. Windows10自带搜索增强设置
  5. 【Spring】通过动态代理改进银行转账事务控制
  6. 矩阵乘以其矩阵转置求导-数学
  7. 虚拟机环境下Centos7操作系统的详细安装教程
  8. Intel GPU实现游戏与数据中心
  9. 使用元组输入进行计算和归约
  10. Python爬虫实战糗事百科实例