十万个数据就不可能用笨办法去一个一个试了,先将指数递减排序并假定阈值为最大值。阈值不断缩小时根据上一次的记录去修改得到新的阈值的正确率。如果选用下一个阈值时并没有缩小则记录,不立刻操作。
突然发现CSP有下载答卷功能。
#include<bits/stdc++.h> using namespace std; int n; class s{ public: int x,y; s(int a,int b){ x=a; y=b; } }; bool cmp(s q,s w){ return q.x>w.x; } int main(){ cin>>n; vector<s>a; int x,y; int q=0; while(n){ cin>>x; cin>>y; q+=y; a.push_back(s(x,y)); n--;} sort(a.begin(),a.end(),cmp); n=a.size(); int i; int cor; int j,tmp; int maxx=-1; int maxj; q=n-q; q+=a[0].y; vector<int > p; for(i=0;i<n;i++){ p.push_back(a[i].y); if(i!=n-1&&a[i].x==a[i+1].x){ continue; } for(j=0;j<p.size();j++){ if(p[j]==1){ q++; }else{ q--; } } p.clear(); if(q>maxx){ maxx=q; maxj=a[i].x; } // cout<<a[i].x<<" "<<q<<endl; } cout<<maxj; }