zoukankan      html  css  js  c++  java
  • AGC 016 E Poor Turkeys

    Problem Statement

    There are N turkeys. We number them from 1 through N.

    M men will visit here one by one. The i-th man to visit will take the following action:

    • If both turkeys xi and yi are alive: selects one of them with equal probability, then eats it.
    • If either turkey xi or yi is alive (but not both): eats the alive one.
    • If neither turkey xi nor yi is alive: does nothing.

    Find the number of pairs (ij) (1≤i<jN) such that the following condition is held:

    • The probability of both turkeys i and j being alive after all the men took actions, is greater than 0.

    Constraints

    • 2≤N≤400
    • 1≤M≤105
    • 1≤xi<yiN


    我有个乱搞做法,和题解略微不同,感性上看很有道理,在这里mark一下,如果哪位能叉掉请在评论区告知我。

    设bz[i][j]∈{0,1}表示i是否可能与j同时存活。

    易于发现这个bz是有传递性的,即如果bz[x][y]=0,bz[y][z]=0,那么一定有bz[x][z]=0

    每次的连边(x,y)相当于是令bz[x][y]=0,那么我们传递一次bz数组。

    特殊地,如果在这次(x,y)之前,已经有bz[x][y]=0,那么这次以后,x和y必定都死了,die[x]=die[y]=1。

    最后如果数对(i,j)满足die[x]=0 and die[y]=0 and bz[x][y]=1,就满足条件。

    复杂度O(nm+n^2)

    贴一下官方题解:

    Editorial

  • 相关阅读:
    爬虫前面
    常用模块学习
    函数、递归、内置函数
    迭代器、装饰器、软件开发规范
    python基础
    列表、字典、集合
    介绍、基本语法、流程控制
    python学习的第一个星期
    vmware使用nat连接配置
    Vue API 3模板语法 ,指令
  • 原文地址:https://www.cnblogs.com/lyd729/p/9221081.html
Copyright © 2011-2022 走看看