智慧构造

P10644

Public NOIP Round #8 D. 矩阵

fi=j=1mai,jf_i=\sum_{j=1}^m a_{i,j}gj=i=1nai,jg_j=\sum_{i=1}^n a_{i,j}。当 ci,j=figjc'_{i,j}=f_i-g_j 时认为 ci,jc'_{i,j} 的符号是正确的。记 p1p1 为一个不全相同的行,p2p2 为一个不全相同的列。如果能构造出合法的 fi=gj\sum f_i=\sum g_j,可以同 arc135d 的方法,取出同符号的 fi,gjf_i,g_j 消掉绝对值较小的,再取出符号相反的 fi,fjf_i,f_jgi,gjg_i,g_j 消掉绝对值较小的。

如果存在 p1,p2p1,p2。找到一个 cp1,p2cp1,p3c_{p1,p2}\neq c_{p1,p3},枚举 cp1,p2c'_{p1,p2}cp1,p3c'_{p1,p3} 的符号,令 fp1=0,gp2=cp1,p2,gp3=cp1,p3f_{p1}=0,g_{p2}=c'_{p1,p2},g_{p3}=c'_{p1,p3},带进去解 fi,gjf_i,g_j ,有唯一解。然后调整,令 fp1f_{p1} 初始为 figjnm\frac{\sum f_i-\sum g_j}{n-m} 使 fi=gj\sum f_i=\sum g_j

如果不存在 p1p1p2p2,即所有 ci,jc_{i,j} 相等。如果 nn 为偶数,构造 gj=0g_j=0,前 n2\frac{n}{2}fif_ic1,1c_{1,1},其他为 c1,1-c_{1,1}。否则 nn 为奇数,令 gjg_j 全为 xx,有 n1n1fif_ix+c1,1x+c_{1,1}n2=nn1n2=n-n1 个为 xc1,1x-c_{1,1},有 c1,1=(mn)xn1n2c_{1,1}=\frac{(m-n)x}{n1-n2}n1n2n1\neq n2,枚举 n1n1xxmm 为奇偶也同理。

否则不妨设 p1p1 有值。因为每列的 ci,jc_{i,j} 都相等,构造第一行复制 nn 次。所以有 n×f1=fi=gjn\times f_1=\sum f_i=\sum g_jgj=f1ci,jg_j=f_1-c'_{i,j}gj=m×f1c1,j\sum g_j=m\times f_1-\sum c'_{1,j}。所以 (nm)×f1=c1,j(n-m)\times f_1=-\sum c'_{1,j}。设 dpi,sdp_{i,s} 表示前 iici,jc'_{i,j} 的和为 ss 是否可行。bitset O(n3w)O(\frac{n^3}{w}) 加速。

arc189e

n3n\le 3 无解。n=4n=4(1,2),(3,4)(1,2),(3,4) 权值为 11(1,4),(2,3)(1,4),(2,3) 权值为 22(1,3),(2,4)(1,3),(2,4) 权值为 33n=5n=5 时如样例。

证明 mx=2mx=2 不合法。归纳,对于 n1n-1p1,,pn1p_1,\dotsb,p_{n-1} 使得 mx=2mx=2 不合法,如果全同色,nn 可以加在最前或最后;否则找到分界点 pxp_xpxp_x 以前为 11,以后为 22,如果 (px,n)(p_x,n)11p1,,px,n,px+1,,pn1p_1,\dotsb,p_x,n,p_{x+1},\dotsb,p_{n-1} 不合法,否则 p1,,px1,n,px,,pn1p_1,\dotsb,p_{x-1},n,p_x,\dotsb,p_{n-1} 不合法。

对于 n>5n>5mx=3mx=3 合法。将 nn 分为 44 个集合 X1,X2,X3,X4X1,X2,X3,X4,对应 n=4n=4 时的 1,2,3,41,2,3,4。集合内权值为 33,集合间权值为 n=4n=4 的权值。可能不合法的方案会要求连续在 X1X1X2X2 间切换,再连续在 X1X1X4X4 间切换,即 X1X2+X4|X1|\ge |X2|+|X4|。其他一些可能不合法的情况也要求其中一个集合至少为另外两个集合之和。令 X1X2X3X4X11|X1|\ge |X2|\ge |X3|\ge |X4|\ge |X1|-1。但当 n=5n=5 时会寄,特判即可。

CF1097E

cnc_n 为最大的 kk 使得 k(k+1)2n\frac{k(k+1)}{2}\le n。可以构造 ((1),(3,2),(6,5,4),)((1),(3,2),(6,5,4),\dotsb) 使得 fncnf_n\ge c_n

cnc_n 内划分任意一个排列。设最长上升子序列长为 lenlen。如果 len>klen>k,取出,(k1)k2nlen\frac{(k-1)k}{2}\le n-len。否则由 Dilworth,存在 lenlen 个下降子序列可以拼出原序列,贪心构造。

P9731

对于 m=2m=2,一定有解。连边 (u,v)(u,v),把奇数度的点连向一个虚点,跑欧拉回路。可以保证原来奇数度的点入度出度差为 11

对于更大的 mm,当作 n×m2n\times \frac{m}{2}22 个的处理,使得左右两边差值 1\le 1。分治左右两边。

P11066

分为要向左的点和要向右的点。从后往前做,要向左的点先向右一步,要向右的点直接去要去的位置。再从前往后,要向左的点去要去的位置。问题是,对于只要向右走一步的点,会在这时挡到路。

先做一步调整。调整会把空位从最右移到最左,所以上面部分反过来。每次从后往前考虑 iii+1i+1,如果 mm 为奇数就不考虑最后一个点。如果 iii+1i+1 在右移一格后需要调整,就交换 i+2,i+2,0,i+1,否则直接 i+2,i+1,把空位向左移。

理论上 5n5n,常数较小。