题意

  n个点,m个关系。a依赖b则a需要出现在b前。

  求满足所有关系的最短序列长度。

  n<18, m<n(n-1)

题解

  问题事实上等价于有向有环图的拓扑排序。

  所以用拓扑排序结合搜索有个显然的2^n*n^2的做法。

  赛场上写的有点丑T了。

  标算是DP。F[S]表示添加了集合S的最短长度。对于每个S,枚举添加点x:若x被依赖的所有点都出现过,则只需要在当前序列最后添加x;否则,需要在最后再添加一个x使尚未添加的点满足条件。

  复杂度O(2^n*n)。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 int h[30], f[300000];
 5
 6 int main()
 7 {
 8     int T;
 9     for (scanf("%d", &T); T; T--)
10     {
11         memset(h, 0, sizeof(h));
12         int n, m;
13         scanf("%d%d", &n, &m);
14         for (int i = 0; i < m; ++i)
15         {
16             int u, v;
17             scanf("%d%d", &u, &v);
18             h[v] ^= 1 << (u - 1);
19         }
20         int maxx(pow(2, n));
21         for (int i = 0; i < maxx; ++i)
22             f[i] = 2 * n;
23         f[0] = 0;
24         for (int i = 0; i < maxx; ++i)
25             for (int j = 1; j <= n; ++j)
26                 if (!(i & (1 << (j - 1))))
27                     if ((h[j] ^ i) & h[j])
28                         f[i ^ (1 << (j - 1))] = min(f[i ^ (1 << (j - 1))], f[i] + 2);
29                     else
30                         f[i ^ (1 << (j - 1))] = min(f[i ^ (1 << (j - 1))], f[i] + 1);
31         printf("%d\n", f[maxx - 1]);
32     }
33
34     return 0;
35 }

转载于:https://www.cnblogs.com/aseer/p/8479842.html

Aiiage Camp Day5 A Rikka with Linker相关推荐

  1. Aiiage Camp Day4 A Board game

    题意 N个D维空间点,每次可将一个点移动至字典序小于它且大于0的坐标处.Alice和Bob轮流移动,最先无法移动者输. 1<=n,d<=100 题解 每个维度相互独立.所以问题等价于D个尼 ...

  2. 2019年 CCPC-Wannafly Winter Camp 总结及感悟

    比赛网站:传送门 一.得到的知识训练 1. dp ①直接dp 数据范围很小(n<=100) 且符合动态规划的题目特征可直接暴力dp,直接用多维(一般三维以上)状态.多重(一般三重以上)for循环 ...

  3. Tree-AC训练实录

    Tree-AC比赛记录 2018 ICPC nanjing     Bronze  120/310 ICPC qingdao    Bronze  153/360 2019 ZJPSC        ...

  4. 【长更】一句话题解(各大oj)

      太简单的题,但是又要记录下来做过哪些东西,就写在这里啦~   早搞不搞,等到快退役了才来搞   标 * 的为有价值的题,标 ^ 的为欺诈题,标 - 的为知识点待填坑,标 ? 的表示看别人是这样做的 ...

  5. 2019 wannafly winter camp day5-8代码库

    目录 day5 5H div2 Nested Tree (树形dp) 5F div2 Kropki (状压dp) 5J div1 Special Judge (计算几何) 5I div1 Sortin ...

  6. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  7. Spark菜鸟学习营Day5 分布式程序开发

    Spark菜鸟学习营Day5 分布式程序开发 这一章会和我们前面进行的需求分析进行呼应,完成程序的开发. 开发步骤 分布式系统开发是一个复杂的过程,对于复杂过程,我们需要分解为简单步骤的组合. 针对每 ...

  8. 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字

     Swift 2.0学习笔记(Day5)--我所知道的标识符和关键字   原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和关键字,一直没有好好的总结,就是这样的用着,现在小 ...

  9. Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...

最新文章

  1. 图像处理——基于深度学习HED实现目标边缘检测
  2. 极限编程阅读笔记--第二篇
  3. 【CodeForces - 472A】Design Tutorial: Learn from Math (tricks,思维,数论,打表)
  4. 多线程和线程池的基本知识总结
  5. MFCC梅尔频率倒谱系数
  6. OpenResty安装下载
  7. 【XSY2731】Div 数论 杜教筛 莫比乌斯反演
  8. HTML中怎么点击超链接让新页面在另一个窗口打开?
  9. js打印倒三角形和正三角形
  10. Ubuntu16.04 GTX1050Ti安装CUDA10.0和cuDNN7.4.2
  11. 【软件定义汽车】【场景篇】智能座舱
  12. 计算机网络三大要素是,计算机网络安全的三大要素不包括?
  13. 秘宝 联想正式进入元宇宙 互联网巨头的数字藏品用的哪种技术?
  14. 为用户“NT AUTHORITY/NETWORK SERVICE”授予的权限不足,无法执行此操作。 (rsAccessDenied)
  15. 【电子产品】kindle使用心得.满满干货
  16. EXCEL如何设置下拉选项打勾 + 不正常选项拉红
  17. Android中给定一个日期判断是周几.
  18. 大数运算(4)——大数乘法
  19. AI-039: Python深度学习3 - 三个Karas实例-1
  20. 电子学习用品商城小程序开发功能需求分析

热门文章

  1. 学习CSS 不错网址
  2. Window 2000 网络操作命令全释
  3. java创建datetime_Java OffsetDateTime ofInstant()用法及代码示例
  4. java 克隆对象工具类_关于dorado-core源码包中CloneUtils克隆工具类对对象进行克隆复制操作...
  5. css网页布局中文字排版的属性和用法
  6. JavaScript prototype整理(网上的三种理解)
  7. Spring整合Hibernate图文步骤
  8. 四种参数传递的形式——URL,超链接,js,form表单
  9. org.apache.hadoop.io
  10. 汇编(8086cpu): 地址寄存器