障碍

P3355 骑士共存问题

﹥>﹥吖頭↗ 提交于 2020-01-29 20:35:14
题目描述 在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示。棋盘上某些方格设置了障碍,骑士不得进入 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击 输入格式 第一行有 2 个正整数n 和 m (1<=n<=200, 0<=m<n2),分别表示棋盘的大小和障碍数。接下来的 m 行给出障碍的位置。每行 2 个正整数,表示障碍的方格坐标。 输出格式 将计算出的共存骑士数输出 题解: 和 P4304 [TJOI2013]攻击装置 类似的题,这里懒得写了,双倍经验 AC代码: # pragma GCC optimize(2) # include <bits/stdc++.h> # include <ext/rope> using namespace std ; using namespace __gnu_cxx ; # define LL long long const int MAXN = 40000 + 50 ; const int MAXM = 2e6 + 50 ; const int MOD = 1e9 + 7 ; const int INF = 0x3f3f3f3f ; int n , m , s , t , tot = 1 , head [ MAXN ] , to [ MAXM ] , nxt

【模拟】桐桐的游戏

匿名 (未验证) 提交于 2019-12-02 23:43:01
题目描述 桐桐最近在玩一个跳棋游戏,规则是:有个圆圈,分成N等分,顺时针标号为1到N。假设其中有些段的障碍。桐桐从1号段出发,每次顺时针跳K段,目标是跳到第Z号段,但过程中不能跳到障碍段上去。 假如,N=13,K=3,Z=9,则跳的路径上的段号为1,4,7,10,13,3,6和9,在此假设没有跳到障碍段上去。 现在请帮桐桐求出最小的K。 输入 第一行有整数N,Z和M(2≤N≤1000,2≤Z,0≤M≤N-2)。 N表示圆分成的段数,Z表示桐桐想跳到的目标段号,M表示障碍数。 第二行有M个数,表示有障碍的段号。段1和段Z保证没有障碍。 输出 一个数K。 输入样例#1 7 4 1 6 输入样例#2 9 7 2 2 3 输入样例#3 7 6 2 2 4 输出样例#1 1 输出样例#2 3 输出样例#3 5 ˼· 模拟!上! # include <Algorithm> # include <Iostream> # include <Cstring> # include <Cstdio> int Ans , n , m , k , l ; int A [ 1250 ] ; bool F ; int main ( ) { scanf ( "%d%d%d" , & n , & k , & m ) ; if ( m == n - 2 ) { printf ( "%d" , k - 1 ) ;