USACO 1.3.1 Mixing Milk (milk)
2011-03-23 20:52
239 查看
1、贪心算法
2、优化解:读入数据时将相同价格合并,计算时不需排序。
2、优化解:读入数据时将相同价格合并,计算时不需排序。
/* ID: gengjia1 LANG: C TASK: milk */ #include <stdio.h> #include <stdlib.h> //#define NDEBUG #include <assert.h> int N, M; struct FARMER{ int price; int amount; }; int farmercmp(const void *fa, const void *fb) { struct FARMER *a, *b; a = (struct FARMER *)fa; b = (struct FARMER *)fb; if(a->price > b->price) return 1; if(a->price < b->price) return -1; return 0; } int main(void) { FILE *fin = fopen ("milk.in", "r"); FILE *fout = fopen ("milk.out", "w"); struct FARMER *F; int price = 0; int ca = 0; int i; fscanf (fin, "%d", &N); assert(N >= 0); assert(N <= 2000000); fscanf (fin, "%d", &M); assert(M >= 0); assert(M <= 5000); F = (struct FARMER *)malloc(M * sizeof(struct FARMER)); for(i = 0; i < M; i++) { fscanf(fin, "%d %d", &F[i].price, &F[i].amount); } qsort(F ,M, sizeof(struct FARMER), farmercmp); for(i = 0; i < M && ca < N; i++) { ca += F[i].amount; price += F[i].price * F[i].amount; } if(ca > N) { price -= (ca - N) * F[--i].price; } fprintf(fout, "%d/n", price); fclose(fin); fclose(fout); exit(0); }
相关文章推荐
- USACO1.3.1 Mixing Milk (milk)
- USACO1.3.1 Mixing Milk (milk)
- USACO1.3.1 Mixing Milk(混合牛奶)
- USACO 1.3.1 Mixing Milk
- 【USACO题库】1.3.1 Mixing Milk混合牛奶
- USACO 1.3.1 Mixing Milk
- usaco 1.3.1 milk
- USACO 1.3.1 Mixing Milk
- usaco1.3.1(milk)
- 【贪心】Mixing Milk 混合牛奶 milk (Usaco_Training 1.3)
- USACO 1.3.1 Mixing Milk
- USACO1.3.1--Mixing Milk
- 【贪心】Mixing Milk 混合牛奶 milk (Usaco_Training 1.3)
- USACO 1.3 Mixing Milk (milk)
- Usaco 1.3.1 混合牛奶(Mixing Milk)
- [USACO 1.3.1] Mixing Milk
- USACO section 1.3.1 Mixing Milk
- usaco-1.3.1-Mixing Milk
- usaco 1.3.1 mixing milk
- USACO section 1.3.1 Mixing Milk