其他分享
首页 > 其他分享> > 清北学堂2020.11.26笔记

清北学堂2020.11.26笔记

作者:互联网

模拟赛

T1 \(90\)

观察数据范围,\(n1,n2\) 都比较小,于是可以考虑先算只有颜色 \(1,2\) 的个数,然后在相邻颜色相同的位置插入 \(3,4\)。

设 \(f_{i,j,k,l}\) 为 \(i,j\) 个颜色 \(1,2\),有 \(k\) 个位置相邻颜色一样,最后一个颜色为 \(l\)。通过 \(f\) 算出 \(g_i\),表示把 \(1,2\) 放完以后,有 \(i\) 个位置不合法的方案数。

这时候,\(3,4\) 有 \(i\) 个位置必须放,有 \(j(i\le j \le n_1+n_2+1)\) 个位置可以放。

枚举 \(i,j\),可以发现对于每个位置, \(3,4\) 只有三种放法:\(cnt_3+1=cnt_4,cnt_3=cnt_4+1,cnt_3=cnt_4\),记作 ABA,BAB,AB。

于是总方案数:

\[g_i\times C_{n_1+n_2+1-i}^{j-i} \text{(算选 j 个位置的方案数)} \times C_{j}^{ABA} \times C_{j-ABA}^{BAB} \text{(算放的方案数)} \times C_{n_3+BAB-1}^{j-1} \text{(选代表,隔板法算每个位置放的个数的方案数)} \times 2^{AB} \text{(每个 AB 可以表示成 AB 或者 BA)} \]

枚举 \(i,j,ABA\) 即可。(这里还有一个 ABA 的范围,但掉线了)

T2 \(80\)

显然是贪心。设当前处理的是 \(a_1,a_2\),\(y=c_{pre},x=\sum a_{pre}\)。所以 \(c_1=\max(x+a_1+b_1,y+b_1)\),\(c_2=\max(x+a1+a2+b2,x+a1+b1+b2,y+b1+b2)\)。

当把 \(1\) 和 \(2\) 交换时,\(c1=\max(x+a1+a2+b1,x+a2+b1+b2,y+b1+b2)\)。

当 \(y+b1+b2\) 为最大值的时候,交换对答案没有影响,因此可以消去。

提出相同的项,\(c1=\max(a2,b1)+a1+b2,c2=\max(a1,b2)+a2+b1\)。

根据式子 \(x+y-\max(x,y)=\min(x,y)\),得出只需要 \(\min(a1,b2)<min(a2,b1)\) 即可把 \(1\) 放到 \(2\) 之前。

然而这是错的。当 \(\min(a1,b2)=\min(a2,b1)\) 时,\(\min\) 的相等不具有传递性,\(\min(a1,b2)=\min(a2,b1)\) 且 \(\min(a1,b3)=\min(a3,b1)\) 并不能说明 \(\min(a2,b3)=\min(a3,b2)\)。如数据 23 33 1 1 233 233。所以当 \(\min(a1,b2)=\min(a2,b1)\) 时,再推一下 \(c3\) 的式子,得出结论:按 \(a\) 从小到大排序。

T3 \(80\)

考虑算每个 \(a_i\) 的贡献。

可以发现 \(i\) 和 \(n-i+1\) 的贡献是相同的,因此只需要算 \(i\le \lceil \frac{n} {2} \rceil\) 的贡献。

每个 \(i\) 对于答案的贡献是固定的,先预处理出来,记作 \(b_i\)。从 \(1\dots i\),每个位置都会有 \(1\) 的贡献。从 \(i+1\dots n-i+1\),每个的贡献都是 \(i\times inv_p\),\(p\) 为位置。从 \(n-i+2\) 到 \(n\),贡献类推。

询问时算一下 \(\sum a_i b_i\) 即可

T4 \(20\)

时间一定是 \(dis_{p1,p2}\) 或 \(dis_{p1,p2}/2\)。枚举叶子节点,判断答案是否存在。(这里又掉线了,具体不知道怎么做)

晚上的模拟赛

T1 \(100\)

二分算两次即可。

T2 \(50\)

当 \(n=2\) 时,直接解方程即可。可以发现此时 \(f(B,C)\) 和 \(f(A,C)\) 有一次函数关系。转化到二维平面上,当有 \(n\) 个点的时候,答案一定在这 \(n\) 个点组成的凸包上。所以对于每个 \(x\),枚举线段的端点,取与 \(x=X\) 相交的最大值即可。

标签:26,min,cnt,a1,a2,b1,b2,2020.11,清北
来源: https://www.cnblogs.com/alan-zhao-2007/p/14043989.html