十萬個數據就不可能用笨辦法去一個一個試了,先將指數遞減排序並假定閾值為最大值。閾值不斷縮小時根據上一次的記錄去修改得到新的閾值的正確率。如果選用下一個閾值時並沒有縮小則記錄,不立刻操作。
突然發現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; }