zoukankan      html  css  js  c++  java
  • 【题解】CF739D Recover a functional graph(构造+二分图匹配)

    【题解】CF739D Recover a functional graph(构造+二分图匹配)

    题目大意

    一个图被称为F图当且仅当每个点出度为1。可以发现这个图是一个内向基环森林,给出所有点到它能到达的环(只会有一个)的距离dis和那个环的长度len,然而有些点的信息模糊了,用?代替,可以是任何数。现在你要输出一个合法的构造方案。

    可以提炼出一个图是F图的条件:

    • 对应环的距离数组是自然数数列
    • (len=k)的点的个数是(tk,tin N^+)

    由于第二个条件只能用问号补,没有决策需要做,直接补上(也要用二分图匹配实现)。考虑如何满足第一个条件,可以每种长度的环选一个出来作为代表环其他可以丢掉,这样就没有选环的决策了,这样仍然可以构造合法解出来(若有多个dis=p,都连向dis=p-1的点就好了)。满足第一个条件关键在于dis最大的那个点,我们不去将(dis=?)的点变得比已有对应(dis)更大,因为这样肯定不优。

    然而还有一个问题,(len=?,dis=...)的最大的dis,它去哪个地方匹配我们是不确定的,这个枚举一下就好了(只需要枚举一个,多个最大dis的当做多余的连到dis-1就行了)。

    现在我们只有((len=?,dis=...))((len=...,dis=?))的需要搞了,这部分可以二分图匹配做。

    现在问题是自然数数列可能中间有些地方根本就没得,但我们只需要一个点就行了,就建立一排点进行匹配,匹配完成后看这一排点是否满流就行了。

  • 相关阅读:
    OpenAL
    VS2013关于“当前不会命中断点源代码与原始版本不同”的BUG
    Windows中的句柄
    (转)OpenGL中位图的操作(glReadPixels,glDrawPixels和glCopyPixels应用举例)
    全局变量的初始化顺序
    与时间有关的windows函数
    unity中的协程
    Unity3d碰撞检测中碰撞器与触发器的区别
    unity脚本入门
    面试总结关于Spring面试问题(精选)
  • 原文地址:https://www.cnblogs.com/winlere/p/12273703.html
Copyright © 2011-2022 走看看