2019 Multi-University Training Contest 5
2019 Multi-University Training Contest 5
A. fraction
upsolved
题意 输入 \(x,p\),输出最小的 \(b\) 使得 \(bx\%p<b\)
做法
- \(bx-py<b\),即 \(b(x-1)<py\),即 \(\frac{b}{y}<\frac{p}{x-1}\)
- 另一方面,\(bx>py\),即 \(\frac{p}{x}<\frac{b}{y}\)
- GCD 即可。
B. three arrays
unsolved
题意 给定两个数组\(a\),\(b\),要求两两配对异或和得到的\(c\)数组字典序最小。
做法
- 比赛时就是个憨憨
- 对\(a,b\)序列分别建字典树
- 开两个指针初始分别指向两颗字典树的根节点,然后同步行动
(1)当两棵树左儿子都还有时,该两个指针都往左儿子跑
(2)当两棵树右儿子都还有时,该两个指针都往右儿子跑
(3)当上述两种情况没了,就一左一右地跑,这样会对后面的答案产生\((1<<dep)\)地影响 - 递归处理即可
- 时间复杂度大胆猜测为\(O(n * logMAX)\)
D. equation
solved by rdc 78min -2
题意 求\(\sum_{i=1}^{n} |a_ix+b_i| = C\) 的解。
做法 分段函数,对零点排序,从小到大扫描,记录斜率和截距。
E. permutation 1
solved by F0_0H 104min -3
题意 求差分序列第\(k\)大的排列
做法
- k很小
- 所以当\(n\)小于8时暴力,大于8时,前几项贪心确定,后几项暴力
F. string matching
solved by sdcgvhgj 14min
做法 抄一遍exkmp
G. permutation 2
solved by sdcgvhgj 40min
做法 f[i]=f[i-1]+f[i-3]
G. line symmetric
unsolved by sdcgvhgj -11
题意 判断一个简单多边形移动一个点之后能否变成一个轴对称的简单多边形
做法
- n≤4输出YES
- 枚举边的中垂线或角平分线做为对称轴,然后判是否合法
- 判的时候只判了每个点是否对称,并没有判是否移动后会不能变成简单多边形
- 当时想的是它两边一定有一边是不跨轴的,否则它本身就不合法,所以一定不需要判
- 其实是可能两边都跨轴的,并且很好举例子,为什么当时就憨在那了。。
- 当时看榜一片红,而且自己的做法怎么想怎么对,其实数据一点也没毛病而且很强。。完全是自己sb,值得反省