求助!!24分

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

while循环里面else那个ans += n * t[i].p 因为你还需要买n牛奶就够了,还有while循环条件改成n>0防止0,0的情况
by whoami096 @ 2022-04-01 11:18:55


我前面和你很像 但是while哪里我是这么写的: ``` sort (a + 1, a + n + 1, cmp); int cur = 0, M = 0, h = 0;//h为目前牛奶量的总和,M为目前所需的钱 while (h < n) { cur++; h += a[cur].num;//num是数量 M += a[cur].num * a[cur].s;//s是钱 } if (h > n) M -= (h - n) * a[cur].s; cout << M << endl; ``` cmp我是这么写的 ``` bool cmp(Cow x, Cow y) { return x.s < y.s; } ```
by caoshuchen @ 2022-04-06 10:13:48


``` #include <bits/stdc++.h> using namespace std; struct Cow { int s, num; void read() { cin >> s >> num; } }; bool cmp(Cow x, Cow y) { return x.s < y.s; } Cow a[2000005]; int main() { int n, m, h = 0, M = 0;//h为目前牛奶量的总和 M为目前所需的钱 cin >> n >> m; for (int i = 1; i <= m; i++) a[i].read();//输入 sort (a + 1, a + n + 1, cmp);//按钱数从小到大排序 int cur = 0; while (h < n) { cur++; h += a[cur].num; M += a[cur].num * a[cur].s; } if (h > n) M -= (h - n) * a[cur].s; cout << M << endl; return 0; } ```
by caoshuchen @ 2022-04-06 10:20:26


|