Bear and Finding Criminals-Codeforces680B

注意
本文最后更新于 2023-11-17,文中内容可能已过时。

题目链接:Bear and Finding Criminals

大致题意就是小熊警察住在某个城市,他要抓各个城市的罪犯,现在用一个 BCD 可以知道那个城市里一定有罪犯。

一定能确定该城市有小偷的几种情况:

  1. 警察所住城市有罪犯,则一定能检测到

  2. 警察所住城市的左边和右边位置若不为 0,则说明两座城市都有罪犯(只有一边为 1 是不能确定到底哪个城市有罪犯的)

  3. 警察所在城市的一边检测到有罪犯,但在另一边已经没有城市了,则说明该城市一定有罪犯

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;

int t[107];

int main()
{
  int n, a;
  while(cin>>n>>a){
    int sum = 0;
    for(int i =1; i <= n; i++)
      cin >> t[i];
    if(t[a]) sum++;//小熊所在城市有罪犯
    for(int i = 1; i <= n; i++){
      if(a-i > 0&&a+i <= n) {
        if(t[a-i] == 1&&t[a+i] == 1)
          sum+=2;
      }
      else if(a-i <= 0&&a+i <= n){//警察在第一个点
        if(t[a+i])
          sum++;
      }
      else if(a-i > 0&&a+i > n){
        if(t[a-i])
          sum++;
      }
    }
    cout <<sum<<endl;
  }
  return 0;
}

相关内容

Buy me a coffee~
Lruihao 支付宝支付宝
Lruihao 微信微信
0%