402 C
题意
给你 (n) ,要你构造一张有 (n) 个顶点的图,要求满足下列条件:
- 恰有 (2n+p) 条边
- 无自环和重边
- 对于所有的 (kin [1,n]) ,任意包含 (k) 个节点的子图至多包含 (2k+p) 个节点。
((5 ≤ n ≤ 24;p ≥ 0))
Examples
Input
1
6 0
Output
1 2
1 3
1 4
1 5
1 6
2 3
2 4
2 5
2 6
3 4
3 5
3 6
解
暴力枚举 (1-n) ,枚举到 (i) 时第 (i) 个节点向所有节点连边,如果超过限制,则向 (1-)不超过限制的第一个点 连边。
403 D
题意
一个由数对组成的序列,长度为 (k) ,设每个元素为 ((a_i,b_i)(1le ile k)) ,满足:
- (1 ≤ a_1 ≤ b_1 < a_2 ≤ b_2 < ... < a_k ≤ b_k ≤ n) , (n) 是一个给出的正整数;
- 所有的 (b_1 - a_1, b_2 - a_2, ..., b_k - a_k) 是不同的。
求满足条件的序列的个数。有 (T) 组测试数据。
((1 ≤ T ≤ 2·10^5,1 ≤ k ≤ n ≤ 1000))
Examples
Input
6
1 1
2 1
2 2
3 1
3 2
3 3
Output
1
3
0
6
2
0
解
设序列 (c) , (c_i=b_i-a_i+1) 。
设 (dp[i][j]) 表示序列 (c) 的前 (i) 个元素的前缀和为 (j) 。
即要么将 (i) 个元素加 (1) ,要么将 (i) 个元素加 (1) 之后新添加一个 (1) ,使序列长度增加 (1) 。
转移: (dp[i][j]=dp[i][j-i]+dp[i-1][j-i])
统计答案: (ans[k][n]=sum_{i=k}^{n}dp[k][i]*C[n-i+k][k]*k!)
402 E
题意
有一个 (n×n) 的矩阵,满足以下条件:
- (a[i][j]≥0)
- (sum_{i=1}^n a[i][i]>0)
问该矩阵能否经过若干次乘法,使得每个元素都为正数。
((2le nle 2000))
Examples
Input
2
1 0
0 1
Output
NO
Input
5
4 5 6 1 2
1 2 3 4 5
6 4 1 2 4
1 1 1 1 1
4 4 4 4 4
Output
YES
解
首先明确矩阵可以等价地转化为01矩阵。
然后我们把矩阵看成有向图的邻接矩阵,那么设 (b=a^k,b[i][j]) 就表示从节点 (i) 到 (j) 走 (k) 步是否能到达。由 (sum_{i=1}^n a[i][i]>0) 可知该图有自环。
我们发现如果图是强连通的,那么必定满足题意。
于是tarjan一遍即可。
403 E
题意
$$color{white}{???}$$
Examples
Input
5
1 1 1 1
4 2 1 1
3
Output
Blue
3
Red
1 3
Blue
1 2
Red
2