程序段错误,再调用map的b值产生警告,不知道怎么修改
#include<bits/stdc++.h>using namespace std;
#define endl '\n'
#define deb(x) cout<< #x << " = " <<x <<'\n';
#define INF 0x3f3f3f3f
#define int long long
using namespace std;
typedef pair<int,int>pii;
void solve()
{
int n;
cin>>n;
vector<int>a(n);
map<int,int>mp;
vector<int>cnt;
for(int i=0;i<n;i++)
{
cin>>a;
mp]++;
}
for(auto:mp)
{
cnt.push_back(b);
}
sort(cnt.begin(),cnt.end());
vector<int>sum(cnt.size());
sum=cnt;
for(int i=1;i<n;i++)
{
sum=sum+cnt;
}
int ans=INF;
for(int i=0;i<=n;i++) //i最小为0次,最大为n次
{
// 二分找那个点
int pos =lower_bound(cnt.begin(),cnt.end(),i)-cnt.begin(); //找到大于等于x的位置
int cost =0;
cost =sum+sum.back()-sum-(cnt.size()-pos)*i; // pos后面那个要减去的数
ans=min(cost,ans);
}
cout<<ans<<endl;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin>>t;
while(t--)
{
solve();
}
}
在你的代码中,#include后面没有包含头文件的名称。请确保包含所需的头文件,并且你可以使用C++标准库中的map容器和算法函数。
这是一个示例代码,展示如何使用map容器和算法函数:
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main() {
// 创建一个map容器
map<int, int> myMap;
// 在map中插入值
myMap.insert(pair<int, int>(1, 10));
myMap.insert(pair<int, int>(2, 20));
myMap.insert(pair<int, int>(3, 30));
myMap.insert(pair<int, int>(4, 40));
myMap.insert(pair<int, int>(5, 50));
// 遍历输出map中的键值对
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
// 使用算法函数对map中的值进行操作
transform(myMap.begin(), myMap.end(), myMap.begin(), [](pair<int, int> p) {
return make_pair(p.first, p.second * 2);
});
// 再次遍历输出修改后的map中的键值对
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
return 0;
}
希望这可以帮助到你!如果有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]