鱼C论坛

 找回密码
 立即注册
查看: 201|回复: 1

程序段错误,再调用map的b值产生警告,不知道怎么修改

[复制链接]
发表于 2024-1-15 10:19:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. #define deb(x) cout<< #x << " = " <<x <<'\n';
  5. #define INF 0x3f3f3f3f
  6. #define int long long
  7. using namespace std;
  8. typedef pair<int,int>pii;
  9. void solve()
  10. {
  11.     int n;
  12.     cin>>n;
  13.     vector<int>a(n);
  14.     map<int,int>mp;
  15.     vector<int>cnt;
  16.     for(int i=0;i<n;i++)
  17.     {
  18.         cin>>a[i];
  19.         mp[a[i]]++;
  20.     }
  21.     for(auto[a,b]:mp)
  22.     {
  23.         cnt.push_back(b);
  24.     }
  25.     sort(cnt.begin(),cnt.end());
  26.     vector<int>sum(cnt.size());
  27.     sum[0]=cnt[0];
  28.     for(int i=1;i<n;i++)
  29.     {
  30.         sum[i]=sum[i-1]+cnt[i];
  31.     }
  32.     int ans=INF;
  33.     for(int i=0;i<=n;i++) //i最小为0次,最大为n次
  34.     {
  35.         // 二分找那个点
  36.         int pos =lower_bound(cnt.begin(),cnt.end(),i)-cnt.begin(); //找到大于等于x的位置
  37.         int cost =0;
  38.         cost =sum[pos-1]+sum.back()-sum[pos-1]-(cnt.size()-pos)*i; // pos后面那个要减去的数
  39.         ans=min(cost,ans);
  40.     }
  41.     cout<<ans<<endl;
  42. }




  43. signed main()
  44. {
  45.     ios::sync_with_stdio(0);
  46.     cin.tie(0);
  47.     int t;
  48.     cin>>t;
  49.     while(t--)
  50.     {
  51.         solve();
  52.     }
  53. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-15 10:19:09 | 显示全部楼层
在你的代码中,#include后面没有包含头文件的名称。请确保包含所需的头文件,并且你可以使用C++标准库中的map容器和算法函数。

这是一个示例代码,展示如何使用map容器和算法函数:

  1. #include <iostream>
  2. #include <map>
  3. #include <algorithm>

  4. using namespace std;

  5. int main() {
  6.     // 创建一个map容器
  7.     map<int, int> myMap;

  8.     // 在map中插入值
  9.     myMap.insert(pair<int, int>(1, 10));
  10.     myMap.insert(pair<int, int>(2, 20));
  11.     myMap.insert(pair<int, int>(3, 30));
  12.     myMap.insert(pair<int, int>(4, 40));
  13.     myMap.insert(pair<int, int>(5, 50));

  14.     // 遍历输出map中的键值对
  15.     for (auto it = myMap.begin(); it != myMap.end(); ++it) {
  16.         cout << "Key: " << it->first << ", Value: " << it->second << endl;
  17.     }

  18.     // 使用算法函数对map中的值进行操作
  19.     transform(myMap.begin(), myMap.end(), myMap.begin(), [](pair<int, int> p) {
  20.         return make_pair(p.first, p.second * 2);
  21.     });

  22.     // 再次遍历输出修改后的map中的键值对
  23.     for (auto it = myMap.begin(); it != myMap.end(); ++it) {
  24.         cout << "Key: " << it->first << ", Value: " << it->second << endl;
  25.     }

  26.     return 0;
  27. }
复制代码


希望这可以帮助到你!如果有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 02:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表