CCF 202012-2 期末预测之最佳阈值
作者:互联网
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std; typedef struct {
#include<iostream> #include<set> #include<vector> #include<algorithm> #include<cstring> #define mm(a,b) memset(a,b,sizeof(a)) using namespace std; struct node{ int y; int result; }; bool cmp(node a,node b){ return a.y<b.y; } vector<node> v; set<int> s; node temp; const int N=1e5+5; int sum[N]; int best_y,best_num; int main(){ mm(sum,0); //也可以直接用 int sum[N]={0} 代替 int m; cin>>m; for(int i=0;i<m;i++){ cin>>temp.y>>temp.result; v.push_back(temp); } sort(v.begin(),v.end(),cmp); // 关键来了,就是求挂科前缀和 for(int i=1;i<=m;i++){ sum[i]=sum[i-1]+v[i-1].result; } int one,zero; for(int i=1;i<=m;i++){ temp.y=v[i-1].y; if(s.count(temp.y)) continue; s.insert(temp.y); one=sum[m]-sum[i-1]; zero=i-1-sum[i-1]; temp.result=one+zero; if(temp.result>=best_num){ best_y=temp.y; best_num=temp.result; } } cout<<best_y<<endl; return 0; }
int y; int result; }S; int main() { vector<S> s; int number; cin>>number; while(number--) { S temp; cin>>temp.y>>temp.result; s.push_back(temp); } int Maxseita=INT_MIN;int seita;int maxsamenumber=INT_MIN; for(int i=0;i<s.size();i++) { seita=s[i].y; int samenumber=0; for(int j=0;j<s.size();j++) { if(s[j].y>=seita) { if(s[j].result==1) samenumber++; } else { if(s[j].result==0) samenumber++; } } if(samenumber>maxsamenumber) { maxsamenumber=samenumber; Maxseita=seita; } else if(samenumber==maxsamenumber) { if(seita>Maxseita) { Maxseita=seita; } } } cout<<Maxseita; }
标签:CCF,阈值,temp,int,samenumber,result,202012,include,best 来源: https://www.cnblogs.com/-Asurada-/p/14363638.html