枚举 洛谷P2105 K皇后
传送站点
用二维数组存储会爆内存,看了题解,特来补题。
改用枚举,先枚举行再枚举每个皇后进行判断
知道一条直线的斜率,直线上的一个点及另一点的横坐标,可以求出该点纵坐标
会被皇后左对角线斜着攻击的点的横纵坐标之差等于皇后横纵坐标之差 y[ j ] - x[ j ] = y1 - i;
会被皇后右对角线斜着攻击的点的横纵坐标之和等于皇后横纵坐标之和 y[ j ] + x[ j ] = y2 + i;
用以上两个公式表示每个会被攻击到的点的纵坐标
#include <bits/stdc++.h>
using namespace std;
const int maxn = 20010;
int x[maxn], y[maxn];
bool v[maxn], vis[maxn];
int n, m, k;
int main()
{
std::ios::sync_with_stdio(