本文主要是介绍CCF-CSP 202012-2 期末预测之最佳阈值C++,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前缀和(数据预处理,降低查找循环复杂度!)
for(int i=1;i<=nums.length;i++){
sum[i]=sum[i-1]+nums[i];
}在这里插入代码片
sum[l,r]=sum[r]-sum[l-1];
源代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+4;struct mcase{int y;int res;
};vector<mcase>mtest;
set<int>st;
int nsum[maxn]={0};
int n;void Init(){cin>>n; mcase temp;temp.y=0;temp.res=0;mtest.push_back(temp);//索引为0不用 for(int i=0;i<n;i++){cin>>temp.y>>temp.res;mtest.push_back(temp);}
}bool cmp(mcase a,mcase b){//结构体比较函数 if(a.y<b.y){return true;}return false;
}int main(){Init();int maxsum=0;int ans=0;sort(mtest.begin(),mtest.end(),cmp);//将测试数据按照y值排序 for(int i=1;i<=n;i++){//前缀和 nsum[i]=nsum[i-1]+mtest[i].res;}for(int i=1;i<=n;i++){int tempy=mtest[i].y;if(st.count(tempy)){//若数据重复跳过 continue;}else{st.insert(tempy);int yucez1=nsum[n]-nsum[i-1];int yucez0=i-1-nsum[i-1]; int sumyuz=yucez1+yucez0;if(sumyuz>=maxsum){//大于等于是更新 maxsum=sumyuz;ans=tempy;}}}cout<<ans;return 0;
}在这里插入代码片
这篇关于CCF-CSP 202012-2 期末预测之最佳阈值C++的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!