zoukankan      html  css  js  c++  java
  • USACO section 1.3.1 Mixing Milk

    1. 贪心,其他没啥说的

    2. 我的代码:

    /*
    ID: dollar4
    PROG: milk
    LANG: C++
    */
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    struct Node
    {
        int price;
        int num;
    } node[5000];
    bool cmp(Node a, Node b)
    {
        return a.price < b.price;
    }
    int main()
    {
        ofstream fout ("milk.out");
        ifstream fin ("milk.in");
        int n, m, i;
        fin >> n >> m;
        for (i = 0; i < m; i++)
            fin >> node[i].price >> node[i].num;
        sort(node, node + m, cmp);
        int money = 0, sum = 0, j = 0;
        while (sum < n)
        {
            sum += node[j].num;
            money += node[j].num * node[j].price;
            j++;
        }
        int rst = money - (sum - n) * node[j-1].price;
        fout << rst << endl;
        return 0;
    }
    

    3. 官方参考代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <assert.h>
    
    #define MAXFARMER 5000
    
    typedef struct Farmer Farmer;
    struct Farmer {
    	int p;	/* price per gallon */
    	int a;	/* amount to sell */
    };
    
    int
    farmcmp(const void *va, const void *vb)
    {
    	return ((Farmer*)va)->p - ((Farmer*)vb)->p;
    }
    
    int nfarmer;
    Farmer farmer[MAXFARMER];
    
    void
    main(void)
    {
    	FILE *fin, *fout;
    	int i, n, a, p;
    
    	fin = fopen("milk.in", "r");
    	fout = fopen("milk.out", "w");
    
    	assert(fin != NULL && fout != NULL);
    
    	fscanf(fin, "%d %d", &n, &nfarmer);
    	for(i=0; i<nfarmer; i++)
    		fscanf(fin, "%d %d", &farmer[i].p, &farmer[i].a);
    
    	qsort(farmer, nfarmer, sizeof(farmer[0]), farmcmp);
    
    	p = 0;
    	for(i=0; i<nfarmer && n > 0; i++) {
    		/* take as much as possible from farmer[i], up to amount n */
    		a = farmer[i].a;
    		if(a > n)
    			a = n;
    		p += a*farmer[i].p;
    		n -= a;
    	}
    
    	fprintf(fout, "%d\n", p);
    	exit(0);
    }
    


  • 相关阅读:
    BZOJ 1191 HNOI2006 超级英雄hero
    BZOJ 2442 Usaco2011 Open 修建草坪
    BZOJ 1812 IOI 2005 riv
    OJ 1159 holiday
    BZOJ 1491 NOI 2007 社交网络
    NOIP2014 D1 T3
    BZOJ 2423 HAOI 2010 最长公共子序列
    LCA模板
    NOIP 2015 D1T2信息传递
    数据结构
  • 原文地址:https://www.cnblogs.com/dollarzhaole/p/3188919.html
Copyright © 2011-2022 走看看