蒟蒻暴力 求助佬人

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

74pts好离谱啊
by Mysterious_Ow @ 2023-10-12 21:43:06


@[Mysterious_Ow](/user/1009997) 顶
by Mysterious_Ow @ 2023-10-12 21:49:21


```cpp #include <iostream> #include <algorithm> using namespace std; long long n,m,k=0,p[5010],q[5010],s[5010]; bool flag=false; int main(){ cin>>n>>m; if(n==0&m==0){ cout<<0; return 0; } for (int i=0;i<m;i++){ cin>>p[i]>>q[i]; s[i]=p[i]; //p[i]是单价,s[i]也是单价,q[i]是产量。 } sort(s,s+m); for (int i=0;i<m;i++){ if(q[i]!=0){ flag=true; break; } } if(flag==false){ cout<<0; return 0; }//预判产量为0的情况。 for (int i=0;i<m;i++){ for (int j=0;j<m;j++){ if(p[j]==s[i]){ if(n>q[j]) { k+=p[j]*q[j]; n-=q[j]; q[j]=0; } else { k+=n*p[j]; cout<<k; return 0; } } } } } //https://www.luogu.com.cn/discuss/707227 ``` 第 $36$ 行要加一句 ``q[j]=0`` ,因为假如你有 $2$ 种单价相同的物品,你在第一次循环该单价时,就已经将这两种单价都算进去了,但是由于有两个相同的单价,第二次循环如果没有清零会再加一次。
by K_mectory @ 2023-10-14 08:51:41


Hack ```cpp 100 3 5 20 5 40 10 100 ``` 正确输出 ``700`` ,您的代码输出 ``500``。
by K_mectory @ 2023-10-14 08:53:19


@[Mysterious_Ow](/user/1009997)
by K_mectory @ 2023-10-14 08:53:41


@[villazhou2011](/user/653832) 膜拜-大佬
by Mysterious_Ow @ 2023-10-14 09:17:50


这题正解是贪心
by zhangtl527 @ 2023-10-18 20:15:40


|