20250731
总结
A
对于一个i,只要满足当i<pos时,a[i]<=x;当i>=pos时,a[i]>x
这样就可以没有任何影响找到x
假设在查找过程中小于x的数有cnt[0]个,大于x的有cnt[1]个,所有的大于、小于x的数分别sum[0], sum[1]个
那么答案为从sum[0]中选cnt[0]的方案数、sum[1]中选cnt[1]、剩下的数全排列,三者相乘
直接一波爆算
B
感觉这题比T1简单
从构造角度看,分两种情况:
- 存在下标i,使得p[i] == n, q[i] == n,这种情况直接把i放在第一个
- 第一问答案就是2
- 第二问,我们发现剩下的可以随意排列,答案为(n - 1)!
- 如果不存在,那就先把p[i]==n的放在第一位
此时,考虑怎么放剩下的才能让q数组贡献为1。只要不把大于q[i]的q放在前面就行了,答案为(n - 1)! / (n - q[i]) + (n - 1)! / (n - q[j])
然后注意一下逆元inv[n - q[i]]不要变成inv[(n - q[i])!]就行了,我因为这个调了1个小时
C
这个题就是杨辉三角求和
发现对于整个图,就是个变形的杨辉三角
经过推狮子,最后答案时sigma_{1<=i<=n+1}(C_a[i]-1,a[i]+i-1)
最后计算的时候可以O(n)求解
D
使用容斥,用总方案数减去不合法方案数
- 总:直接枚举加上的数的总和,用隔板法计算分配方案即可
- 否:枚举三条边中比另外两个的和还大的那条边,这时只需要保证总长度加上另外两个数的和比枚举的数小就行,直接把选择数量相乘然后累加就行
!!!!!!这个题的总方案数一定要注意!!!!!!
总方案数要把每次隔板法的0,0,0的情况算进去,不然等死吧

浙公网安备 33010602011771号