求救求救,87分!!!悬关

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

``` #include<bits/stdc++.h> using namespace std; long long n,m,summ; struct cow{ long long d,s; }a[2000005]; bool cmpp(cow x,cow y) { return x.d<y.d; } int main() { cin>>n>>m; for(int i=0; i<m; i++) cin>>a[i].d>>a[i].s; sort(a,a+m,cmpp); int i=0; while(n > 0) { if(a[i].s > 0) { a[i].s--; summ+=a[i].d; n--; } else i++; } cout<<summ; return 0; } ```
by drinktowind @ 2023-12-06 20:40:59


你的代码有以下问题 1.数组开小,2*10的6次方开5005,建议开大范围。 2.排序规则不对 ```小于或者等于奶农最大产量的整数数量的牛奶``` 说明,不用排序产量
by drinktowind @ 2023-12-06 20:43:34


换行全部阵亡了QWQ,给个关吧
by drinktowind @ 2023-12-06 20:44:20


玄学,`cmpp`最后一行`return true`会WA,`return false`能AC。 AC 代码: ```cpp #include<bits/stdc++.h> using namespace std; long long n,m,summ; struct cow{ long long d,s; }a[5005]; bool cmpp(cow x,cow y) { if(x.d != y.d) return x.d<y.d; else if(x.s != y.s) return x.s>y.s; return false; } int main() { cin>>n>>m; for(int i=0; i<m; i++) cin>>a[i].d>>a[i].s; sort(a,a+m,cmpp); int i=0; while(n > 0) { if(a[i].s > 0) { a[i].s--; summ+=a[i].d; n--; } else i++; } cout<<summ; return 0; } ```
by wanglexi @ 2023-12-06 20:46:06


数组没开小 @[drinktowind](/user/719619) 总共是 $m$ 桶奶,奶的需求量是 $n$,开5000没问题
by wanglexi @ 2023-12-06 20:47:45


@[wch666](/user/778382)
by wanglexi @ 2023-12-06 20:47:55


@[wanglexi](/user/378403) 《我满级眼瞎》
by drinkto_wind @ 2023-12-06 20:52:04


@[drinkto_wind](/user/931825) 你是小号?
by wangzhiqin @ 2023-12-06 21:01:43


@[wangzhiqin](/user/410272) 怎么
by drinkto_wind @ 2023-12-06 21:02:16


@[drinkto_wind](/user/931825) @[wanglexi](/user/378403) 谢谢两位大佬 已关
by wch666 @ 2023-12-07 17:22:52


|