模拟测试92

帅比萌擦擦* 提交于 2019-12-02 19:17:51

T1:

  显然每个数是独立的。

  无解情况的判定用裴蜀定理即可  

  用$ex_gcd$求出一组特解,对于每个数,只需要求出使$|x|+|y|$最小的一组解即可。

  最优解一定取在$x$或$y$接近$0$时,取个$min$即为答案。

  时间复杂度$O(n)$。

T2:

  根据贪心思想。

  考虑两个数对$(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状态为选择的$a_i$的最大值为$j$时的最优值,更新时只涉及单点插入和区间加,用线段树维护DP数组即可。

  时间复杂度$O(nlogn)$。

T3:

  跑多元最短路,并记录由哪个源点更新。

  枚举每条边,如果两侧的前驱不同,则用这条路径更新两个前驱的答案。

  时间复杂度$O(mlogn)$。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!