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