acm训练记1:2016沈阳现场赛
我实在也不是谦虚,我一个退役苟怎么就去搞acm了呢
jcvb太神啦
A:输入两个数,输出两个之和加上其中较大的那个,sb题;
B:输入一个由C,O,H构成的物质,输出其相对分子质量,sb题(好像题目保证有这种物质);
C:\(a_1=a\),\(a_2=b\),\(a_n=2*a_{n-2}+a_{n-1}+n^4\),球\(a_n\)。矩阵乘法sb题,记录\(a_{n-1}\),\(a_n\),1,n,\(n^2\),\(n^3\),\(n^4\);
我才不会说如果令\(b_n=a_n+\frac{1}{2}n^4+5n^3+24n^2+\frac{139}{2}n+100\),则有\(b_n=2b_{n-2}+b_{n-1}\)呢
D:Alice和Bob在买m件商品,每次每人出一个价,如果有一人出价比另一个高则价高者获得这件商品,否则奇数轮Alice获得,偶数轮Bob获得。
\(f[i][j][k]\)表示当前还剩\(i\)件物品,先出价者(A)有\(j\)元,后出价者(B)有\(k\)元时,先出价者能获得多少件物品。显然,初始可以假设两个人出价都是0元,这时A的收益是i-f[i-1][k][j],B想:他加价(1元)的话A的收益是i-1-f[i-1][k-1][j],如果此时A收益减少,则B显然会采用这个策略;然后A想:她加价的话如果A收益增加,则A采用这个策略。猜结论:这样最后停止时就得到最优解。时间复杂度\(O(n^4)\),我也不知道怎么过的\(n,a,b\le255\),可能上述轮流加价的过程均摊\(O(1)\)吧;
E:输入一个图,点数不超过50,每个点度数不超过20,球它的大小为S的生成完全子图个数。爆搜即可,sb题;
F:给定一些三维旋转操作,定义两个旋转操作的距离是给定两个旋转\(R_1\)和\(R_2\)的距离为\(max_{|x|=1} dist(R_1(p),R_2(p))\),其中\(dist(a,b)\)为两个点在单位球上的距离。
考虑球两个旋转操作的距离,首先把球面距离变为欧几里得距离,即球\(max_{|x|=1} |Ax-Bx|\)。\(|Ax-Bx|^2=|Ax|^2+|Bx|^2-2x^TA^TBx\),\(|Ax|=|Bx|=1\),即球\(x^TA^TBx\)的最小值,令\(C=A^TB\),则C时一个正交矩阵。考虑把这个二次型标准化,显然一个特征值为1,若三个特征值都是实数,则最小值即为最小的特征值,若三个特征值有2个复数,则这两个复数显然互为共轭且膜长都是1,即C可以标准化为\(\left[\begin{matrix}1&0&0\\0&\cos{\theta}&\sin{\theta}\\0&-\sin{\theta}&\cos{\theta}\end{matrix}\right]\),即为\(x^2+(y^2+z^2)\cos{\theta}\),最小值为\(\cos{\theta}\).
G:有一个底面半径为1,高为2的圆柱体容器,里面装有高度为\(h\)的水,现将容器歪斜知道水刚好无法溢出,球此时水的表面积。
1、\(h\ge1\),则表面为一个椭圆,容易算出椭圆的半长轴长\(\sqrt{(2-h)^2+1}\)和半短轴长1;
2、\(h<1\),则表面为椭圆的一个部分,先球表面和桶壁的夹角\(\theta\),考虑平行于底面的一层,截面为一个弓形,假设距离顶端的距离为\(x\),则当前弓形的圆心角为\(\cos{\beta}=1-x\tan{\theta}\),面积为\(2\beta-\frac{1}{2}\sin{2\beta}\),积分即为\(\int_{0}^{2} (2\beta-\frac{1}{2}\sin{2\beta})\,dx = \int_{0}^{1-2\tan{\theta}} (2\beta-\frac{1}{2}\sin{2\beta})\,d(\cos{\beta}) = -\int_{0}^{\arccos{(1-2\tan{\theta}})} 2\beta\sin{\beta}-\frac{1}{2}\sin{2\beta}\sin{\beta}\,d\beta=(\sin{x}-x\cos{x}-\frac{1}{3}\sin^3{x})|_{0}^{\arccos{(1-2\tan{\theta}})}\),二分\(\theta\)即可。
H:有n个人,每个人猜测一个不同的长度为L的1到6构成的序列,现在掷一个均匀的骰子,当某一个人的猜测第一次出现的时候结束,这个人获胜,球每个人获胜的概率。
建出猜测的ac自动机,把所有结束状态的点的出边去掉,记转移矩阵为A,则所求为\((A^0+A^1+\cdots)x=\frac{1}{I-A}x\),球一个逆矩阵即可。
I:有一棵树,每条边有一个长度,每个点的父亲节点编号小于它,根节点居住着一个“长者”,其余每个点有一个“记者”,每个“记者”能沿着边移动,连续移动距离L的时间为\(L^2\),休息一下的时间为P,只能在节点处休息,球每个点到根节点的最短时间。
dp,有根树点分治。先用根节点到重心父亲的路径更新重心为根的子树的dp值,再用重心的dp值更新所有重心的后代。
J:一个无向图为基环树,要求兹磁两个操作:1、把与某个点x距离不超过k的点权值加y;2、球与某个点x距离不超过k的点权和。\(k\le2\)。
考虑bfs序上与x距离不超过2的点一定为\(\le\)常数段区间的并,线段树即可,由于有环,全是细节。要是考场上遇到就交给敦敦大了
K:p是一个素数,p=13或103或100003,定义\(r(h,k)=2^{\sin^3{(2\pi\frac{hk}{p})}}\),输入一个序列\(a_0,a_1,\cdots,a_{p-1}\),定义\(b_k=\sum_{h=0}^{p-1} a_h*r(h,k)\),球\(b_k\).
先用原根转化,则转化为\(b'_k=a_0+\sum_{h=0}^{p-2}a'_h*c_{h+k}\),把\(a_k\)反过来就变成卷积形式orz,fft即可
L:不会,感觉是一个码农dp题
M:有一些物品,每个物品有三个属性,当前颜色为0时的价值,当前颜色为1时的价值,物品的颜色。对于一个物品序列,定义总价值为维护一个当前颜色,初始颜色为0,先累加上每个物品在当前颜色下的价值,再把当前颜色变为该物品的颜色。给定n个物品,球第k大的子序列价值。
显然可以转化为k长路问题【由于图是一个dag,所以是p的】,暴力上堆即可。吐槽:可持久化堆真费空间啊,能不用的地方一定不能用,要不然直接mle。