[COCI2019-2020#3] Preokret 题解
清风雪月
2021-12-04 20:57:20
第2篇题解,望通过
------------
这里进入正题
首先,我们定义 $a,b$ 为两队得分,$n$ 为进球得分的次数。
```cpp
int a,b,n;//注意,定义在int main()之前
```
然后,开始输入数据,同时,我们计算三问也从这部分开始。
看过题目的朋友们肯定知道,我们需要一个函数来读入每次进球,因此定义 $x$ 为输入时需要知道的进球队伍。
```cpp
int x;/*当然x定义在a,b,n旁边,
这里只是为了方便大家了解过程
*/
```
接着,我们输入 $x$ ,然后开始给 $a$ 和 $b$ 增加。
```cpp
for(int i=1;i<=n;i++)
{
cin>>x;
if(x==1)a++;
else b++;
```
为了完成第二问,我们需要一个数来统计打平次数,定义它为 $sum1$,也定义在上面。同时注意,初始比分 $0:0$ 也算作一次打平。
```cpp
int sum=1;
```
那么怎么判断是否打平呢?很简单,如果 $a=b$,那么他们就打平了。
```cpp
if(a==b)sum1++;
```
接下来最难的就是第三问,如何判断一个队是否翻盘呢?
我们可以这样判断,如果一队比另外一队进球数少,我们就给它做上一个标记,如果它已经有标记了,那么就根据当前进球的队,我们来判断是否翻盘个数增加,这一步,我们需要融合前面每队进球来进行。同时,我们定义 $a$ _ $flag$ 和 $b$_$flag$ 来做标记。
```cpp
bool a_flag=false,b_flag=false;
```
这时,我们需要一个值来进行增加翻盘个数,定义 $fa$ 和 $fb$。
```cpp
int fa,fb;
```
如果看懂了的话,应该可以做了,这里就不放代码了。