链接:
来源:牛客网 在一个n*n的国际象棋棋盘上有m个皇后。 一个皇后可以攻击其他八个方向的皇后(上、下、左、右、左上、右上、左下、右下)。 对于某个皇后,如果某一个方向上有其他皇后,那么这个方向对她就是不安全的。 对于每个皇后,我们都能知道她在几个方向上是不安全的。 现在我们想要求出t 0,t 1,...,t 8,其中t i表示恰有i个方向是"不安全的"的皇后有多少个。
输入描述:
第一行两个整数n,m表示棋盘大小和皇后数量。 接下来m行每行两个整数ri,ci表示皇后坐标。 1 <= n, m <= 100,000 1 <= r
i
, c
i
<= n 数据保证没有皇后在同一个位置上。
输出描述:
一行九个整数表示答案。 空格隔开,结尾无空格
示例1
输入
8 44 34 86 51 6
输出
0 3 0 1 0 0 0 0 0
示例2
输入
10 31 11 21 3
输出
0 2 1 0 0 0 0 0 0
分析:这个题有点技巧,八个方向想象成四条直线,每条直线排序,一共四次排序, 每次排序后统计一遍就好了。 这题比赛的时候没做出来啊QAQ
#include#include using namespace std;struct Node{ int x,y,num;}a[100100];int sum[100100];int t[10];int cmp1(Node A,Node B){ if(A.x==B.x) return A.y