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一定是一个罪犯

  • 相关阅读:
    配置JDK环境变量
    yum 卸载安装的软件包及依赖
    常用命令--patch
    Git 源码编译安装
    基础Git命令
    下载资源的一些方法
    Python/Jupyter小技巧
    欺诈类Kaggle竞赛赛题描述
    工作小笔记
    进入互联网数据分析岗位需要明白的一些事
  • 原文地址:https://www.cnblogs.com/ZUTTER/p/10371492.html
Copyright © 2011-2022 走看看