这里简单说一下,我联系这道题目,本来是想联系排序算法的,然后我用来系统函数sort排序,二分查找等等提高速度的方法;但是然并卵,每次都是运行超时啊,要疯掉了。看了一下大家的答案,发现自己陷入到排序的陷阱中了,根本不用排序的。就是一道数学题目!难受了我一晚上,睡觉前还在想到底是哪里的瓶颈,难为老年coder了。
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
struct Movie{
int bj;
int cj;
int scoreb;
int scorec;
int index;
};
int main()
{
int n,m,firstScore=0,secondScore=0,index=1;
cin >> n;
map<int,int> strMap;
for(int i = 0; i < n;i++){
int temp;
cin >> temp;
strMap[temp]++;
}
cin >> m;
Movie ret[m];
for(int i = 0; i < m;i++){
//因为我的数据结构是这样所以会很浪费时间
ret[i].cj = 0;
ret[i].bj = 0;
ret[i].scoreb = 0;
ret[i].scorec = 0;
ret[i].index = i+1;
cin >> ret[i].bj;
}
for(int i = 0; i < m;i++){
cin >> ret[i].cj;
//这里不要每次都访问数组的小标,很浪费时间的。
int tempb = strMap[ret[i].bj];
int tempc = strMap[ret[i].cj];
int tempi = ret[i].index;
if(tempb >= firstScore){
if(tempb > firstScore){
firstScore = tempb;
secondScore = tempc;
index = tempi;
}else{
if(tempc > secondScore){
secondScore = tempc;
index = tempi;
}
}
}
}
cout<<index<<endl;
return 0;
}

京公网安备 11010502036488号