ccf 202012-2 期末预测之最佳阈值

multimap+map即可(累加的思想)

//
// Created by clay on 2021/4/13.
//

#include <bits/stdc++.h>
using namespace std;
int main(){
    int m;
    cin>>m;
    multimap<int,int> mp;
    for(int i=0;i<m;i++){
        int x,y;
        cin>>x>>y;
        mp.insert(pair<int,int>(x,y));
    }
    vector<int> v,v2(2);  //v2用于累加
    map<int,vector<int>> mp2;
    //在一次遍历中实现累加的概念
    for(auto i=mp.begin();i!=mp.end();i++){
        v.push_back(i->first);
        //第一维并不一定是单个字符
        mp2[i->first].resize(4);
        //计算单个字符中为1的个数
        if(i->second==1){
            mp2[i->first][1]++;
            v2[1]++;
        }
        else{
            mp2[i->first][0]++;
            v2[0]++;
        }
        mp2[i->first][2]=v2[0];
        mp2[i->first][3]=v2[1];
    }
    int cnt=0,f;
    for(auto i=mp2.begin();i!=mp2.end();i++){
        int temp=0;
        //统计前面为0的个数
        temp+=mp2[i->first][2]-mp2[i->first][0];
        //统计包括自己的为1的个数
        temp+=v2[1]-mp2[i->first][3]+mp2[i->first][1];
        if(temp>=cnt){
            cnt=temp;
            f=i->first;
        }
    }
//    cout<<f<<endl;
    cout<<f;
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值