• 省选模拟14


    A. 开车

      大意就是在一张图上给某些边复制1遍,使这张图存在欧拉回路。

      由于复制一条边必然会修改两个点的状态,所以不难想到可以将这些点两两配对,于是可以求出来原图的一颗最小生成树,那么需要复制的边一定在最小生成树上,所以在树上两两配对即可。

      考虑贪心,对于每条边,只有在这条边两边需要修改的点的个数是奇数,也就是不能内部解决的时候才会跨过这条边,dfs一遍即可。

    B. 上分

      首先将坐标转换,(i,j)->(i-j+1,j),那么需要通过的位置形成了矩形,两个矩形的交集就是位置。

      所以不难发现这是一个杨氏矩阵,预处理阶乘和阶乘的前缀积就可以实现$O(1)$回答每组询问。

      细节很多。需要大力分类讨论。

    C. 隔膜

      考虑维护一个集合S,对于集合S中的元素满足这个元素的权值是所有位置在它后面的元素中最小的。

      那么若某个元素在集合中,它最终属于 $S_{last} mod 2$ last表示集合中比他位置靠前的最后的元素。

      否则,最终的朝向与初始相同。

      证明可以感性理解一下,首先对于第一次操作必然翻2,那么对于后面的操作,如果当前元素不是后面最小的,那么一定会翻i,因为上一个人一定翻了i+1。

      否则,翻i+1会使自己丢掉i,那么只有i是后面最小的时候可能合法。

      然后可以用个什么数据结构维护一下,由于题目保证了单调减,所以比较简单的做法是用set维护。

  • 相关阅读:
    软件工程--团队作业3
    软件工程--团队作业2
    软件工程第二次作业---结对编程
    软件工程第一次作业补充
    软件工程第一次作业
    用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?
    买卖股票的最佳时机
    爬楼梯
    删除排序数组中的重复数字
    1500802035王叔文
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12246872.html
Copyright © 2020-2023  润新知