@[A_Little_BadBoy](/user/1159333) 本来可以直接存数组然后 n log n 快速排序的。。。你弄这么复杂还加一个 log ,,
by xiaozengX @ 2023-12-22 00:22:00
@[A_Little_BadBoy](/user/1159333) 你同价格的牛奶总数读入的时候根本没加上
by xiaozengX @ 2023-12-22 00:31:46
@[A_Little_BadBoy](/user/1159333) 你这写法真是。。。不知道怎么评了
```cpp
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,m,p,a;//题目要求
long long total=0;//记录总价格
map<int,int>t1;//存放单价和数量
set<int>t2;//存放单价
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>p>>a;
if(!t1.count(p)){
t1[p]=a;
}
else {
t1[p]=t1[p]+a;
}
t2.insert(p);
}
for(auto i:t2)//从最小值开始遍历单价
{
int temp=min(n,t1[i]);//取min(该单价的总牛奶数,目前还需的总牛奶数)
total+=i*temp;
n-=temp;
if(!n)break;//n==0结束循环
}
cout<<total;
return 0;
}
```
这样就过了,你 count 应该判这个农夫的单价而不是这个农夫的牛奶持有数量
建议您好好学基础的数组、排序等等数据存储和处理方式,set和map都是基于平衡树实现的查询工具,本身是具有 log n 的时间复杂度的,解决更为困难的题目的时候会占用很多时间资源导致 TLE ,调试过程中也会造成很多困扰
by xiaozengX @ 2023-12-22 00:35:57
**感谢大佬出手相助!**
@xiaozengX原来的代码已AC,之后已重新按照您的思路重写了一遍(已通过),十分感谢!
by A_Little_BadBoy @ 2023-12-22 16:20:09