#A. S练习3

    客观题

S练习3

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填 ⨉ ;除特殊说明外,判断题 1.5 分,选择题 3 分,共计 40 分)

#include <iostream>
using namespace std;
const int SpecialNumber = 0xffffffff;
int a[2000], cnt[2000], n, l, r, m, sum[2000];
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        if (i == 1) {
            cnt[i] = a[i] ^ SpecialNumber;
        } else {
            cnt[i] = (cnt[i - 1] & a[i]) ^ (cnt[i - 1] | a[i]) ^ SpecialNumber;
        }
        sum[i] = sum[i - 1] | a[i];
    }
    while (m--) {
        cin >> l >> r;
        cout << (((cnt[r] & cnt[l - 1]) ^ (cnt[r] | cnt[l - 1]) ^ SpecialNumber) > (sum[r] ^ sum[l - 1])) << " ";
    }
    return 0;
}

1<=n,l,r<=10310^3,a[i]在int的范围内

判断题

  1. 这个程序只会输出"true"和"false" {{ select(1) }}
  • 正确
  • 错误
  1. r-l+1为奇数时,将SpecialNumber改为1不影响结果 {{ select(2) }}
  • 正确
  • 错误
  1. sum数组是单调递增的 {{ select(3) }}
  • 正确
  • 错误
  1. 如果将所有int变量改为long long变量,对于任何输入,结果不变 {{ select(4) }}
  • 正确
  • 错误

选择题

  1. 当输入为
5 2
-1 -1 -1 -1 -1
1 5
2 3

时,输出为() {{ select(5) }}

  • 0 1
  • 1 0
  • 0 0
  • 1 1
  1. 当输入为
5 2
1 2 3 4 5
1 5
2 3

时,输出为() {{ select(6) }}

  • 0 1
  • 1 0
  • 0 0
  • 1 1

完善程序(单选题,每小题 3 分)

题目描述

在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩具状态移动到某人心中的目标状态。

输入格式

前4行表示玩具的初始状态,每行4个数字1或0,1表示方格中放置了玩具,0表示没有放置玩具。接着是一个空行。接下来4行表示玩具的目标状态,每行4个数字1或0,意义同上。

输出格式

一个整数,所需要的最少移动次数。

样例输入

1111
0000
1110
0010 

1010
0101
1010
0101

样例输出

4
#include<bits/stdc++.h>
using namespace std;
#define US unsigned short
US read() {
    US num = 0;
    char c;
    for (int i = 0; i < 16; i++) {
        cin >> c;
        num = __1__;
    }
    return num;
}
int dis[65536];
int offset[] = {1,-4,4,-1};
queue<US>qu;
int main() {
    memset(dis,0x3f, sizeof(dis));
    US start = read(),end = read();
    dis[start] = 0;
    qu.push(start);
    while (!qu.empty()) {
        US now = qu.front();qu.pop();
        for (int i = 15; i >= 0; i--) {
            if (__2__) {
                for (int j : offset){
                    if(i + j < 0 || i + j >= 16 || __3__) continue;
                    if (( __4__ ) != (__5__)) {
                        if (dis[__4__] > dis[now] + 1) {
                            dis[__4__] = dis[now] + 1;
                            qu.push(__4__);
                        }
                    }

                }

            }
        }
    }
    cout << dis[end];
    return 0
}

1.1处应该填写(){{ select(7) }}

  • c == '0' ? 0 : 1
  • num + c
  • num * 2 + c
  • (num << 1) + (c == '0' ? 0 : 1)

2.2处应该填写(){{ select(8) }}

  • now & 1
  • now << i & 1
  • now >> i & 1
  • now | 1

3.3处应该填写(){{ select(9) }}

  • (i + j) / 4 == i / 4
  • i / 4 == j / 4
  • j / 4 == 0
  • (i + j) / 4 == i / 4 && j / 4 == 0

4.4处应该填写(){{ select(10) }}

  • ((now - (one << i))) | (one << (i + j))
  • ((now - (one << i)))
  • ((now ^ (one << i)))
  • ((now - (one << i))) + (one << (i + j))

5.5处应该填写(){{ select(11) }}

  • ((now - (one << i))) | (one << (i + j))
  • ((now ^ (one << i)))
  • ((now - (one << i)))
  • ((now - (one << i))) + (one << (i + j))

2024年7月12日 初赛练习(3)【提高组】

未参加
状态
已结束
规则
OI
题目
1
开始于
2024-7-12 17:00
结束于
2024-7-15 0:00
持续时间
0.7 小时
主持人
参赛人数
22