4525: [Cerc2012]Kingdoms
4525: [Cerc2012]Kingdoms
题意
n个国家,两两之间可能存在欠债或者被欠债的关系,一个国家破产:其支出大于收入。问一个国家能否坚持到最后。
思路
很有意思的一道题。
dp[s]表示在当前国家存在情况为s,1-存活,0-破产。那么起始为11111...。然后枚举一个国家,判断是否可以破产,转移。
最后,扫一遍所有只有1的情况。
代码
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream> using namespace std; const int N = ;
int d[N][N],f[(<<)+]; inline int read() {
int x = ,f = ;char ch = getchar();
for (; !isdigit(ch); ch=getchar()) if(ch=='-') f=-;
for (; isdigit(ch); ch=getchar()) x = x*+ch-'';
return x*f;
} int main() {
int T = read();
while (T--) {
int n = read();
for (int i=; i<=n; ++i)
for (int j=; j<=n; ++j)
d[i][j] = read();
int MaxS = (<<n)-;
for (int i=; i<=MaxS; ++i) f[i] = false;
f[MaxS] = true;
for (int s=MaxS; s>=; --s) {
if (!f[s]) continue;
int ans = ;
for (int i=; i<=n; ++i) {
if (!(s&(<<(i-)))) continue;
int sum = ;
for (int j=; j<=n; ++j)
if (s&(<<(j-))) sum += d[j][i]; //j欠i=>i可以获得的
if (sum < ) f[s^(<<(i-))] = true;
}
}
bool flag = true;
for (int i=; i<=n; ++i) {
if (f[(<<(i-))]) {
if (flag) printf("%d",i),flag = false;
else printf(" %d",i);
}
}
if (flag) printf("");
puts("");
}
return ;
}
4525: [Cerc2012]Kingdoms的更多相关文章
- BZOJ 4057: [Cerc2012]Kingdoms( 状压dp )
状压dp.... 我已开始用递归结果就 TLE 了... 不科学啊...我dp基本上都是用递归的..我只好改成递推 , 刷表法 将全部公司用二进制表示 , 压成一个数 . 0 表示破产 , 1 表示没 ...
- BZOJ4057 [Cerc2012]Kingdoms
题意 有一些王国陷入了一系列的经济危机.在很多年以前,他们私底下互相借了许多钱.现在,随着他们的负债被揭发,王国的崩溃不可避免地发生了--现在有n个王国,对于每对王国A和B,A欠B的钱被记为d_AB( ...
- BZOJ 4057: [Cerc2012]Kingdoms
状压DP #include<cstdio> #include<cstring> using namespace std; int F[1200005],A[25][25],st ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- csuoj 1116: Kingdoms
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116 1116: Kingdoms Time Limit: 3 Sec Memory Limit ...
- BZOJ 4059: [Cerc2012]Non-boring sequences ( )
要快速在一段子序列中判断一个元素是否只出现一次 , 我们可以预处理出每个元素左边和右边最近的相同元素的位置 , 这样就可以 O( 1 ) 判断. 考虑一段序列 [ l , r ] , 假如我们找到了序 ...
- 4063: [Cerc2012]Darts
4063: [Cerc2012]Darts Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 85 Solved: 53[Submit][Status] ...
- 【BZOJ4061】[Cerc2012]Farm and factory(最短路,构造)
[BZOJ4061][Cerc2012]Farm and factory(最短路,构造) 题面 BZOJ 然而权限题QwQ. 题解 先求出所有点到达\(1,2\)的最短路,不妨记为\(d_{u,1}, ...
- UVA 12507 Kingdoms
D - Kingdoms Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & %llu A kingdom ha ...
随机推荐
- day001-日期格式类、装拆箱
1.Object 1.1 String类型可以不用重写toString()方法 1.2 自定义类一般都去重写toString()方法 调用时机: a)对象名调用toString() b)打印输出时,间 ...
- ASP.NET 上传图片到FTP
目录: 2.代码 3.参考资料 4.IIS环境FTP配置 5.使用虚拟目录注意Server.MapPath() 1. 项目介绍 建立FTP文件服务器与应用程序分开. 下面方法中的参数为Stream因为 ...
- percona-toolkit 工具集安装
下载地址: www.percona.com/downloads/percona-toolkit 安装方法一,源码安装: perl Makefile.PL make:make install ...
- 广搜最短路径变形,(POJ3414)
题目链接:http://poj.org/problem?id=3414 解题报告: 1.每个节点都是一个独立的状态 2.这里的状态转移就是有几种出路,4种:1.倒掉a中的水,2.把a中的水倒到b中去, ...
- ssh key一键自动化生成公钥私钥,并自动分发上百服务器免密码交互
题记:由于工作需要管理大量服务器,所以需要配公钥实现免密登录. ssh批量分发可以一键执行这个操作,但是使用ssh分发服务还需要对各个服务器进行.ssh/id_dsa.pub公钥上传,密码验证.所以需 ...
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
SurfaceView遮挡其他控件的项目背景: 最近在做播放器项目,由于底层实现是用Surface和OpenGL切换渲染,所以在布局里面同时使用了GLSurfaceView和SurfaceView,同 ...
- 剑指offer54 表示数值的字符串
错误的代码: class Solution { public: bool isNumeric(char* string) { if(string == NULL) return false; if(* ...
- Spring boot 集成三种定时任务方式
三种定时任务方式分别为 org.springframework.scheduling.annotation.Scheduled java.util.concurrent.ScheduledExecut ...
- CentOS上安装mongodb
安装mongodb pymongo修改yum源vi /etc/yum.repos.d/10gen.repo[10gen]name=10gen Repositorybaseurl=http://down ...
- 牛客小白月赛1 J おみやげをまらいました 【MAP】
链接:https://www.nowcoder.com/acm/contest/85/J おみやげをまらいました! 蛙蛙还是给你带来了礼物.但它有个小小的要求,那就是你得在石头剪刀布上赢过它才能 ...