tg 29 题解
T1
赛时忘了exgcd怎么用的了
导致我随手冲出一发板子但是不会填参
于是赛后听了\(w\color\red{enqizhi}\)奆佬讲解:
根据裴蜀定理,显然有\(ax+by=gcd(a,b),x,y\in Z\)
它的推论就是\(gcd(a,b)\not | c\to ax+by=c\)没有整数解
于是-1的条件就是\(\exist x_i,gcd(a,b)\not | x_i\)
然后考虑有解情况,此时\(gcd(a,b)|x_i\)
令\(x_i=k*gcd(a,b),k\in Z\),\(x_0,y_0\)是方程\(ax+by=gcd(a,b)\)的一组特解
于是\(ax_0+by_0=gcd(a,b)\to kax_0+kby_0=x_i\)
于是\(x=kx_0,y=ky_0\)是方程\(ax+by=x_i\)的一组特解
通解显然是\(x'=x+k\cdot \frac{b}{gcd(a,b)},y'=y-k\cdot \frac{a}{gcd(a,b)}\)
通过打表我们可以发现
当\(x'\)或\(y'\)最接近\(0\)的时候,答案可能取最小值
于是四种情况考虑一遍
取最小非负整数解可以通过对含系数\(k\)的那一项取个模,
剩下几项的就可以通过上边的式子推出来了
T2
线段树优化DP,没想明白
身体状态不是非常好,可能不会太想明白了
先搬个题解
考虑两个数对\((a_i,b_i)\)和\((a_j,b_j)\),
如果 $a_i<b_j $并且 \(b_i>a_j\),那么我们希望\(i\) 排在$j $前面。
对于相反的情况,我们希望 \(j\)排在 \(i\)前面。
其余两种情况\(i\)和\(j\)以任意顺序排列都是相同的。
显然按\(a+b\)从小到大排列就可以满足所有的需求。
和普通的线段树优化DP似乎不太一样
这个状态本身不能用数组下标表示
于是每个状态的最优决策直接线段树上查
定义\(f_{i,j}\)为取到\(i,max(a)=j\)的最优决策
\(1.j<=min(a_i,b_i)\)
这个时候无脑选上一个\(val_i\)即可
具体操作就是直接线段树区间加
\(2.a_i<j<=b_i\)
这一部分状态转移方程是
\(f_{i,j}=max(f_{i,j},f_{i-1,j}+v_{i}),j=a_i\)
T3
赛时的多源最短路:多个单源最短路的简单加和
题解的多源最短路:多个源点一起跑单源最短路
于是先把所有的源点放到堆里
用这些源点去更新到每个点的最小值
然后做好标记,它是从哪个源点转移来的
对于一条边而言,如果它的两个端点取到最小值时源点不同就更新答案
答案更新非常显然\(:min(d_s+d_t+v_{s,t})\)
正确性的证明:
对于源点\(i\),由\(i\) 拓展的点 \(j\) 以及与 \(j\) 相邻且不由 \(i\) 拓展的点 \(k\),
如果 \(i\) 的最优路径从 \(j\) 走到了 \(k\),那么走到拓展 \(k\) 的源点是最优的。
因此这个做法是正确的。
T4
感觉烧有点好但是脖子上来了
md题解是图片
\(30pts\)是一个不过脑子的搜索/状压
但是考场写挂了


浙公网安备 33010602011771号