【bzoj4057】[Cerc2012]Kingdoms

原创 2015年11月17日 22:12:05

  闷声大爆搜就好。
  状压判重。
  时间O(n2n)

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define shl(x) (1 << (x))

inline int rd() {
    char c = getchar();
    while (!isdigit(c) && c != '-') c = getchar();
    int x = 0 , f = 1;
    if (c == '-') f = -1 ; else x = c - '0';
    while (isdigit(c = getchar())) x = x * 10 + c - '0';
    return x * f;
}

int n , a[23][23] , c[23] , vis[1 << 21] , ans , all;

void input() {
    n = rd();
    rep (i , 1 , n) c[i] = 0;
    rep (i , 1 , n) rep (j , 1 , n) a[i][j] = rd() , c[i] += a[i][j];
}

void dfs(int s , int t) {
    if (vis[s]) return;
    vis[s] = 1;
    if (t == 1)
        { ans |= s ; return ; }
    rep (i , 1 , n)
        if ((shl(i - 1) & s) && c[i] > 0) {
            rep (j , 1 , n) c[j] -= a[j][i];
            dfs(s ^ shl(i - 1) , t - 1);
            rep (j , 1 , n) c[j] += a[j][i];
        }
}

void solve() {
    ans = 0;
    all = shl(n) - 1;
    rep (i , 0 , all) vis[i] = 0;
    dfs(all , n);
    bool p = 0;
    rep (i , 1 , n) if (shl(i - 1) & ans) {
        if (p) putchar(' ');
        else p = 1;
        printf("%d" , i);
    }
    if (!p) putchar('0');
    //puts("");
}

int main() {
    #ifndef ONLINE_JUDGE
        freopen("data.txt" , "r" , stdin);
    #endif
    per (T , rd() , 1) {
        input();
        solve();
        puts("");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

【CERC2012】【BZOJ4057】Kingdoms

Description有一些王国陷入了一系列的经济危机。在很多年以前,他们私底下互相借了许多钱。现在,随着他们的负债被揭发,王国的崩溃不可避免地发生了……现在有n个王国,对于每对王国A和B,A欠B的钱...

【BZOJ4057】【Cerc2012】Kingdoms 状压DP

关注到N 注意到一次只能破产一个国家,不能同时破多个。 #include #include #include #include #include #include #include #includ...

fhq Treap模板

#include #include #include #include #include using namespace std; struct treap_node{ treap_node *le...
  • Lcomyn
  • Lcomyn
  • 2015年02月08日 14:53
  • 926

BZOJ 1231 mixup2 混乱的奶牛 - 状压dp

传送门 题解:傻逼题 #include #include #include #include #define lint long long #define N 17 using namespace...
  • Mys_C_K
  • Mys_C_K
  • 2017年08月26日 19:48
  • 99

bzoj4059【Cerc2012】Non-boring sequences

分治好题

【CERC2012】【BZOJ4062】Jewel heist

Description擅长偷盗的卢平想要偷走邪恶的欧文收藏的珠宝。欧文在他的商店里放置了n个珠宝。每个珍贵的石头一定有着k种颜色之一的颜色。展览馆非常的大,我们可以将珠宝视为欧几里得平面上的一些互异的...

不无聊的序列(Non-boring sequences,Bzoj4059,CERC2012)

不无聊的序列分治解法

【CERC2012】【BZOJ4059】Non-boring sequences

Description我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短。一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次。给定一...

BZOJ 4059 Cerc2012 Non-boring sequences 线段树+扫描线

题目大意:定义一个序列为【不无聊的】当且仅当这个序列的任意一个区间都存在一个数只出现过一次,给定一个序列,要求判断这个序列是否是【不无聊的】 定义lastilast_i表示第ii个元素上一次出现的位...
  • PoPoQQQ
  • PoPoQQQ
  • 2015年06月05日 18:28
  • 1201

[BZOJ4422][Cerc2015]Cow Confinement(扫描线+线段树)

这篇题解ATP在APIO的时候就开始写写到现在终于写完了。。
  • FromATP
  • FromATP
  • 2017年05月28日 21:57
  • 289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【bzoj4057】[Cerc2012]Kingdoms
举报原因:
原因补充:

(最多只允许输入30个字)