题目
题目就略了,相信大家肯定也知道题目才过来看的,懒得贴题目了。
思路
先讲讲思路,思路有两种,第一种暴力解法,相信大家都会,但如果用这种解法的话,只有70分。
第二种解法,是我在考场上没有想到的,现在才慢慢想清楚。如果按照题目的意思,写了一个predict函数,那一定会有双重循环,一定会超时。因此我们要降低时间复杂度,把O(n^2)降成O(n)。
其实我们可以发现,双重循环的计算过程中存在重复计算,所以我们只需计算它有多少个0和多少个1.
遍历思路:
遍历0的话,从头开始遍历,等于前面的0数+1;
遍历1的话,从尾开始遍历,等于后面的1数+1;
代码
#include <iostream>
#include <algorithm>
using namespace std;
struct score
{
int y,result;
};
bool cmp(score a,score b)
{
if(a.y<b.y)
return true;
else
return false;
}
int