zoukankan      html  css  js  c++  java
  • 2-sat

    果然我还是不会2-sat

    大概就是处理一些真假关系,把每个点拆成真假两个

    如果a是真的b比是假的就从a的真连一条边到b的假,b的真连一条边到a的假

    如果最后两个点在同一个环中那他们必同时选,所以如果缩点以后a的真假同时在一个强联通分量里就没有解

    输出任意解的话看一下a的真假哪个的dfs序大就选哪个,tarjan缩点的顺序是反的所以选强联通分量编号小的那个

    210. 【UER #6】寻找罪犯

    考虑每句话的真假和每个人是不是罪犯

    如果a是不罪犯的话那他的话一定都是真的,如果x说y是罪犯那如果y是罪犯这句话就是真的,否则x的话除了这句都是真的且x是罪犯,但这样的话边数是(O(n^2))

    考虑前缀和优化,如果g这句话是假的话那么g之前的话一定都是对的,从(g_y)的假连向(g-1)的真;如果g这句话是真的的话(g_y)一定和(g_x)所说一致,从(g_y)的真连向(g)的真;如果g这句话的前缀都是真的的话那么(g-1)的前缀一定也是真的,从(g)的真连向(g-1) 的真;如果a的话的最后一句的前缀里面有假话的话那么a一定是一个罪犯

  • 相关阅读:
    2019暑假集训 windy数
    2019暑假集训 数字游戏
    2019暑假集训 周年纪念晚会
    2019暑假集训 加分二叉树
    0013-求圆柱体体积
    0012-求滑动距离
    0011-绝对值函数
    0010-温度转换
    0009-乘法问题
    0008-三位数倒序问题
  • 原文地址:https://www.cnblogs.com/ZUTTER/p/10371492.html
Copyright © 2011-2022 走看看