A

题意:n(n<=20)个国家,每个国家之间有一些债务关系,总体为负债的国家会破产,破产国家的债务关系全部消除。问哪些国家可能成为最后一个唯一存在的国家。

题解:

对于每一个状态,面对若干个负债国,哪个国家先破产会影响最后的结果。

考虑到n<=20,可以状压。f[s]表示状态为s(0表示未破产,1表示已破产)是否存在。

转移方程:if(!s&(1<<i) && i在s状态下已破产)  f[s+(1<<i)] | = f[s];

O(2^n * n^2)//很慢www谁有更好的方法请留言

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<iostream>
 5 #include<queue>
 6 using namespace std;
 7
 8 const int N=50;
 9 int n,a[N][N],ok[N],f[1100000];
10
11 int main()
12 {
13     //freopen("a.in","r",stdin);
14     int T;
15     scanf("%d",&T);
16     while(T--)
17     {
18         scanf("%d",&n);
19         for(int i=0;i<n;i++)
20             for(int j=0;j<n;j++)
21                 scanf("%d",&a[i][j]);
22
23         memset(f,0,sizeof(f));
24         f[0]=1;
25         for(int s=0;s<(1<<n);s++)
26         {
27             if(!f[s]) continue;
28             for(int i=0;i<n;i++)
29             {
30                 if(!(s&(1<<i)))
31                 {
32                     int sum=0;
33                     for(int j=0;j<n;j++)
34                         if(!(s&(1<<j))) sum-=a[i][j];
35                     if(sum<0) f[s|(1<<i)]=1;
36                 }
37             }
38         }
39         memset(ok,0,sizeof(ok));
40         int bk=0,now=0;
41         for(int i=0;i<n;i++)
42             if(f[((1<<n)-1)-(1<<i)]) ok[i]=1,bk++;
43         for(int i=0;i<n;i++)
44             if(ok[i])
45             {
46                 now++;
47                 if(now<bk) printf("%d ",i+1);
48                 else printf("%d\n",i+1);
49             }
50         if(!bk) printf("0\n");
51     }
52     return 0;
53 }

转载于:https://www.cnblogs.com/KonjakJuruo/p/9809493.html

[cerc2012][Gym100624A]20181013相关推荐

  1. [cerc2012][Gym100624B]20181013

    转载于:https://www.cnblogs.com/KonjakJuruo/p/9809637.html

  2. [cerc2012][Gym100624C]20181013

    题意:用元素符号表示字符串 题解:签到题 简单dp 难点在于把元素符号都改成小写qaq 1 #include<cstdio> 2 #include<cstdlib> 3 #in ...

  3. BZOJ 4059: [Cerc2012]Non-boring sequences ( )

    要快速在一段子序列中判断一个元素是否只出现一次 , 我们可以预处理出每个元素左边和右边最近的相同元素的位置 , 这样就可以 O( 1 ) 判断. 考虑一段序列 [ l , r ] , 假如我们找到了序 ...

  4. 论文阅读2018-10-13

    论文阅读2018-10-13 Addressing the minimum fleet problem in on-demand urban mobility 原文及翻译 METHODS Addres ...

  5. BZOJ4061/Gym100624F CERC2012 Farm and Factory 最短路、切比雪夫距离

    传送门--BZOJCH 传送门--Vjudge 设\(f_i\)表示\(i\)到\(1\)号点的最短距离,\(g_i\)表示\(i\)到\(2\)号点的最短距离,\(s_i\)表示\(n+1\)号点到 ...

  6. datagrid显示mysql_WPF DataGrid显示MySQL查询信息,且可删除、修改、插入 (原发布 csdn 2018-10-13 20:07:28)...

    1.入行好几年了,工作中使用数据库几率很小(传统行业).借着十一假期回家机会,学习下数据库. 2.初次了解数据库相关知识,如果本文有误,还望告知. 3.本文主要目的,记录下wpf界面显示数据库信息,且 ...

  7. 20181013优秀的软件推荐专栏(每日一次)

    小马win7旗舰版64位激活工具 v10.1031 官方版是一款快速激活win7系统的工具软件,小马win7旗舰版激活工具工具采用一键式的激活方式,简单方便,内置5种品牌机oem进行选择激活,真正做到 ...

  8. 【跃迁之路】【725天】程序员高效学习方法论探索系列(实验阶段482-2019.2.15)...

    实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. 我将开源我的学习方 ...

  9. 【跃迁之路】【724天】程序员高效学习方法论探索系列(实验阶段481-2019.2.14)...

    实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. 我将开源我的学习方 ...

最新文章

  1. python 加注拼音-又一个奇葩要求,Python是如何将“中文”转“拼音”的?
  2. 使用frameset时的target属性
  3. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第三次迭代 | 中心元变换 | 检验数计算 | 最优解判定 )
  4. 学生信息管理系统小结
  5. 四部门发文!坚决避免数据中心盲目无序发展
  6. iis php mysql 一键安装_LNMP(Nginx服务,MySQL 服务,安装PHP服务 手动安装技术文档)
  7. NgRx使用CreateSelector组装复合Selector
  8. Java元数据总结:Java注释的使用和定义
  9. Maven工作笔记-jar包打入本地仓库并打包
  10. 新云网站管理系统最新版注入漏洞
  11. Mac OS下使用VS Code对C++程序进行debug的配置
  12. icmp基于tcp还是udp_imi -- 基于PHP协程应用开发框架,支持WebSocket,TCP,UDP应用开发...
  13. 前端VUE学习总结(一)
  14. MongoDB windows 局域网连接
  15. icinga ido2db
  16. QT编译程序出现[ui_Widget.h] Error 1
  17. 怎么提取pdf中的表格数据_如何从pdf第1部分中提取表格数据
  18. 计算机无法屏保,电脑屏幕保护程序为什么不能修改 原因及解决方法【详细介绍】...
  19. termux无法安装引导程序包_分享一个小玩意儿Termux
  20. Redis设置密码,查看密码,修改密码,忘记密码。

热门文章

  1. linux 只运行一个实例 互斥锁,Linux多线程4-1_互斥量
  2. android service 访问数据库,XE5 ANDROID通过webservice访问操作MSSQL数据库
  3. git rebase 调整commit顺序
  4. java 泛型 类型形参(Type Parameters) 类型
  5. python PEP 487
  6. Python Types
  7. hadoop jar
  8. 编程语言对比 函数定义
  9. 1.5 训练_开发_测试集划分
  10. Oracle11g数据库快速安装