zoukankan      html  css  js  c++  java
  • 【BZOJ 4057 Kingdoms】

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 450  Solved: 187
    [
    Submit][Status][Discuss]

    Description

    有一些王国陷入了一系列的经济危机。在很多年以前,他们私底下互相借了许多钱。现在,随着他们的负债被揭发,王国的崩溃不可避免地发生了……现在有n个王国,对于每对王国A和B,A欠B的钱被记为d_AB(我们假设有d_BA=-d_AB成立)。如果一个王国入不敷出(即需要支付超过所能获得的钱),它就可能破产。每当一个王国破产,与它相关的所有债务关系都会被去除,无论是正是负。而王国们的破产不是一瞬间完成的,而是第一个王国破产后,接下来可能破产的王国再继续破产,直到剩下的王国经济都是稳定的。不同的结局将取决于谁先破产,尤其是有的结局只会留下一个王国。请你计算,对于每个王国,是否存在一种结局使得该王国是唯一的幸存者。

    Input

    第一行一个正整数T,表示有T组数据。

    每组数据第一行一个正整数n,表示有n个王国,1 <= n <= 20。

    接下来n行,每行n个整数,第i行第j个整数表示d_ij,保证有d_ii = 0, d_ij = -d_ji, |d_ij| <= 10^6。

    Output

    每组数据输出一行,按照升序输出所有可能的王国编号,空格隔开,如果没有一个王国能满足条件,输出一个0。

    Sample Input

    1
    3
    0 -3 1
    3 0 -2
    -1 2 0

    Sample Output

    1 3

    HINT

    Source

    鸣谢Tjz

    题解:
           ①n很小,考虑状态压缩。

           ②用01表示是否破产,然后状态转移为:状态为布尔量转移。
             
      f[i^(1<<(j-1))]=f[i] 表示让j破产。

    不因一场宿命而忘却初衷

    不因一世坎坷而残喘苟活。————汪峰《流年啊 你奈我何

  • 相关阅读:
    [2019南昌邀请赛网络赛D][dp]
    [ Educational Codeforces Round 65 (Rated for Div. 2)][二分]
    [hdoj5927][dfs]
    [cf1140D. Minimum Triangulation][dp]
    [hdoj6483][莫队+线段树/ST]
    使用GAC加速 解决CSP问题 Kakuro
    UVA 11427 Expect the Expected
    UVA 11021 Tribles
    UVA 11174 Stand in a Line 树上计数
    《算法概论》第八章的一些课后题目 关于NP-Complete Problem
  • 原文地址:https://www.cnblogs.com/Damitu/p/7691848.html
Copyright © 2011-2022 走看看