偏序问题
题目链接:ybtoj高效进阶 21263
题目大意
给你 n 个长度为 m 的排列。
然后问你有多少个位置对,满足在任何一个排列中一个的值都比另一个的大。
思路
这种偏序问题有各种各样的做法,KD-tree,CDQ分治,等等。
但是在十维下,都不如暴力了。
嗯,那就暴力吧。
那暴力也不行啊。
考虑到它给的是排列,那我们可以求出在当前这一位放这个数可以大于那些对。
那我们要找的就是对于每一位都会大于的对。
那我们可以把大于看成 1 1 1,小于等于看成 0 0 0,那就是每个的结果与在一起要是 1 1 1。
然后那么多组,就想到可以用 bitset 来优化。
然后就过了。
(无语)
代码
#include<cmath>
#include<cstdio>
#include<bitset>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
struct node {
int a[11]