L.Sudoku and Minesweeper(简单构造)

题意

    有一个$9 \times 9$大小的经典数独,进行 扫雷 游戏,可以将数字替换成$’‘$表示地雷,请构造出一个合法方案,使得剩下的数字*相邻的地雷数量等于该数字,注意,不能将整张地图全部填充地雷.

思路

    签到题,从最后一句话入手,不能将全部地图更换为地雷,那整张地图 只安排一个数字 ,因为一个数字相邻的数量最多为8,所以只选择一个非边界的8即可。

Code:

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
#include <bits/stdc++.h>
#define endl '\n'
using i64 = long long;
using namespace std;
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
vector<string> str(10), ans(10);
for (int i = 1; i <= 9; i++)
cin >> str[i];
for (int i = 1; i <= 9; i++)
for (int j = 0; j < 9; j++)
ans[i] += '*';
int x, y;
for (int i = 1; i <= 9; i++)
for (int j = 0; j < 9; j++)
if (str[i][j] == '8' && i > 1 && i < 9 && j > 0 && j < 8)
{
x = i, y = j;
break;
}
ans[x][y] = '8';
for (int i = 1; i <= 9;i++)
cout << ans[i] << endl;
return 0;
}

B.Crash Test

题意

    汽车进行碰撞测试,起初,汽车面向墙壁,并距离墙壁$D$米远;现在有$n$个推进器,每个推进器的性能为$h_i$,若汽车此时距离墙壁有$d$米,当$d \geq h_i$时,汽车将前进$h_i$格,反之,汽车将到达墙壁并反弹至$h_i-d$米,且方向立刻朝向墙壁,已经每种推进器能使用任意次数(包括零次),请问汽车 距离墙壁的最近距离 是多少?

数据范围

  • $1 \le n \le 100, 1 \le D \le 10^{18}$
  • $1 \le h_i \le 10^{18}$

分析