【jzoj 6166】送分大水题(高维前缀和)(高维差分)

送分大水题

题目链接:jzoj 6166

题目大意

给你 n 个 m 维向量。
然后每次询问给出一个 m 维向量,问你有多少对向量满足条件。
条件有四种:每一维最大值都大于等于或小于等于一个值,每一维最小值都小于等于或大于等于一个值。

思路

首先看到这种鬼题我们发现其实可以用高维的一些数据结构啊,什么的。
但由于有 10 10 10 维,这个码量就变得十分的恐怖。
(当然可能有什么简单的写法,但是我不会)
第一第二个询问其实就分别跑一个高维前缀和高维后缀就可以了。
就是处理出有多少个数满足大于某个向量或小于。
那第一第二你其实把大于的两两组合,小于的两两组合,就分别是两问的答案了。

接着我们来看第三第四个询问。
我们考虑延续求第一第二问的思路。
发现这个 max ⁡ \max max 和这个 min ⁡ \min min 不太好搞,那我们考虑从第一问推到第三问,从第二问推到第四问。
首先我们求出的是 max ⁡ ( A i , B i ) < = C i \max(Ai,Bi)<=Ci max(Ai,Bi)<=Ci 的,那我们考虑要怎么得到 max ⁡ ( A i , B i ) > = C i \max(Ai,Bi)>=Ci max(Ai,Bi)>=Ci 的。
(由于它是要每一项都满足,所以你不能是一个满足比它大,另一个随便选,它的 max ⁡ \max max 可能是由两个数分别贡献才比 C i Ci Ci 大或等于的)
(我比赛的时候就是因为这样就锅了)
那我们可以考虑先求出 max ⁡ ( A i , B i ) = C i \max(Ai,Bi)=Ci max(Ai,Bi)=Ci,通过跑后缀和得到 max ⁡ ( A i , B i ) > = C i \max(Ai,Bi)>=Ci max(Ai,Bi)>=Ci

那怎么得到呢?不难想到用差分,那就是高维差分。
然后第二个求第四个也是同样道理。

然后讲一讲高维的前缀和差分要怎么搞。
具体可以看看代码,你其实就可以想一维的,再想二维的,然后你就可以推广出来了。
然后记得差分不要用容斥的那个,你十维搞容斥会烦死,你就用类似求前缀和的方式减。
然后你注意一下差分枚举的顺序就可以了。
具体差分的实现可以看看我的代码。

然后自己看看数据就知道要快读快输。
(我这种**就不知道)

然后,由于我没有将求前缀啊,求后缀啊这些打包,所以。。。
你懂的,八百多行的代码。
所以——

全 ! ! ! 全!!!

体 ! ! ! 体!!!

起 ! ! ! 起!!!

立 ! ! ! 立!!!

代码

#pragma GCC optimize(2)

#include<cstdio>
#define ll long long

using namespace std;

int n, m, a[11], q, op, re, now;
int num[4][4][4][4][4][4][4][4][4][4];
int val[4][4][4][4][4][4][4][4][4][4];
ll ans1[4][4][4][4][4][4][4][4][4][4];
ll ans2[4][4][4][4][4][4][4][4][4][4];
ll ans3[4][4][4][4][4][4][4][4][4][4];
ll ans4[4][4][4][4][4][4][4][4][4][4];
ll ans; 
char c;

char buf[1<<23], *p1=buf, *p2=buf, obuf[1<<23], *O=obuf;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1<<21, stdin), p1 == p2) ? EOF : *p1++)

int read() {
	re = 0; c = getchar();
	while (c < '0' || c > '9') c = getchar();
	while (c >= '0' && c <= '9') {
		re = (re << 3) + (re << 1) + c - '0';
		c = getchar();
	}
	return re;
}

int read1() {
	c = getchar();
	while (c < '0' || c > '9') c = getchar();
	return c - '0';
}

ll write(ll x) {
	if (x > 9ll) write(x / 10ll);
	putchar(x % 10 + '0');
}

int main() {
	freopen("water.in", "r", stdin);
	freopen("water.out", "w", stdout);
	
	n = read(); m = read();
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= m; j++) {
			a[j] = read1() - 1;
		}
		num[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]]++;
		val[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]]++;
	}
	
	
	//算出第一个第二个答案(直接前缀后缀)
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 1; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10 + 1];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 1; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9 + 1][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 1; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8 + 1][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 1; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7 + 1][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 1; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6 + 1][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 1; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5 + 1][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 1; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4 + 1][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 1; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3 + 1][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 1; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2 + 1][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 1; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1 + 1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	
	 //这一部分杠掉的是求后缀,但是我当时卡时间把就把它放到前面求前缀一起了
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3 - 1; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3 - 1; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3 - 1; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3 - 1; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3 - 1; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3 - 1; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3 - 1; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3 - 1; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3 - 1; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3 - 1; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	//先记录答案,准备搞第三第四个答案
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		now = num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		ans1[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = 1ll * now * (now - 1) >> 1;
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = ans1[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		now = val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		ans2[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = 1ll * now * (now - 1) >> 1;
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = ans2[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	}
	
	
	//搞第三个答案:搞出第一个答案的差分数组 得到 max(Ai,Bi)=Ci 的个数
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 1; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 1; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 1; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 1; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 1; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 1; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 1; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 1; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 1; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 1; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	//跑后缀得到第三个的答案 max(Ai,Bi)>=Ci 的个数
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3 - 1; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3 - 1; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3 - 1; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3 - 1; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3 - 1; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3 - 1; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3 - 1; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3 - 1; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3 - 1; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3 - 1; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	//求第四个跟求第三个同一个道理
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4 - 1; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4 - 1; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4 - 1; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4 - 1; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4 - 1; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4 - 1; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4 - 1; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4 - 1; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4 - 1; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4 - 1; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 1; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 1; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 1; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 1; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 1; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 1; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 1; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 1; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 1; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 1; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	
	q = read();
	while (q--) {
		op = read();
		for (int i = 1; i <= m; ++i) {
			a[i] = read1();
			a[i]--;
		}
		
		if (op == 1) {
			ans = ans1[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
		if (op == 2) {
			ans = ans2[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
		if (op == 3) {
			ans = ans3[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
		if (op == 4) {
			ans = ans4[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
	}
	
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值