分析:

这个题很好啊,比起什么裸的状压DP高多了!

我们可以考虑,什么时候答案最大:全合并,之后再分裂

这样,我们必定可以得到答案,也就是说答案必定小于n+m

那么我们可以考虑,什么时候能够使答案更小:就是n中去一些,m中取一些,它们的和相等的时候,ans-=2;

这样,我们就可以考虑状态f[S][s]表示,在n中取状态S,m中取状态s的最多和相等部分

之后转移可以从f[S-1<<i-1][s]或者f[S][s-1<<i-1]转移,之后判断sum[S]和sum[s]是否相等,相等f[S][s]+=2;

最后答案为n+m-f[(1<<n)-1][(1<<m)-1];

附上代码:

#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <iostream>
using namespace std;
#define N 11
#define M 1<<10
int f[M][M],a[N],b[N],n,m,sum[M],sum2[M];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int S=1;S<1<<n;S++){for(int i=1;i<=n;i++){if((1<<(i-1))&S){sum[S]=sum[S^(1<<(i-1))]+a[i];break;}}}scanf("%d",&m);for(int i=1;i<=m;i++)scanf("%d",&b[i]);for(int S=1;S<1<<m;S++){for(int i=1;i<=m;i++){if((1<<(i-1))&S){sum2[S]=sum2[S^(1<<(i-1))]+b[i];break;}}}for(int S=1;S<1<<n;S++){for(int s=1;s<1<<m;s++){for(int i=1;i<=n;i++){if(S&(1<<(i-1)))f[S][s]=max(f[S][s],f[S^(1<<(i-1))][s]);}for(int i=1;i<=m;i++){if(s&(1<<(i-1)))f[S][s]=max(f[S][s],f[S][s^(1<<(i-1))]);}if(sum[S]==sum2[s])f[S][s]+=2;}}printf("%d\n",n+m-f[(1<<n)-1][(1<<m)-1]);return 0;
}

  

转载于:https://www.cnblogs.com/Winniechen/p/9095486.html

分裂 BZOJ2064 状压DP相关推荐

  1. AtCoder AGC035D Add and Remove (状压DP)

    题目链接 https://atcoder.jp/contests/agc035/tasks/agc035_d 题解 想了两小时憋出来一个状压DP,发现人家怎么空间才十几MB,原来暴力就行了... 考虑 ...

  2. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  3. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  4. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  5. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  6. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

  7. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

  8. 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)

    题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...

  9. P2340 奶牛会展(状压dp)

    P2340 奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览.由 ...

  10. UVa 11825 (状压DP) Hackers' Crackdown

    这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...

最新文章

  1. 互联网控制报文协议(ICMP)
  2. 线性规划与网络流24题●09方格取数问题13星际转移问题
  3. error when defining a rule - SAP loyalty management的积分定义规则
  4. C++(18)--复制构造函数
  5. JS如何判断安卓还是iOS 一种比较被认同的方式
  6. 阿里终面:如何设计一个高性能网关?
  7. Linux下两种TCP网络服务器实现方式:循环服务并发服务
  8. android谷歌打印插件下载地址,谷歌浏览器打印插件(Print Plus)
  9. PyTorch-1.10(十三)--torch.optim基本用法
  10. vmware虚拟机的作用
  11. Mac Pro下终端配置Zsh(iterm2 3.3.0 + oh-my-zsh + solarized配色)
  12. 【开源“青女四轴”,DIY小四轴】
  13. 测绘工程本科生如何入门GNSS算法 - 引言
  14. 适合小白的SQL Server学习笔记
  15. 转龚文祥的一篇文章:对看起来很美的网站要保持审慎的乐观
  16. 魔兽会封python_Python爬取大量数据时,如何防止IP被封?
  17. 计算机数字音乐谱 凉凉,凉凉数字简谱
  18. 从在浏览器地址栏中输入www.baidu.com到看到百度首页,这个过程中间经历了什么?都涉及到哪些网络协议?
  19. gis差值分析_arcgis中七种插值方法的对比分析
  20. 基于微信小程序+SSM学生社团管理系统设计

热门文章

  1. 05-树7 堆中的路径
  2. JSON中JObject和JArray,JValue序列化(Linq)
  3. 2012-11-26 → 2012-12-02 周总结:项目又有新需求了,很兴奋
  4. linux scp(ssh)免密发送(登陆)配置方法
  5. Wireshark实战分析之TCP协议(一)
  6. 几个非常实用性的在线学习Ethical Hacking的网站
  7. Android下播放YUV视频文件
  8. linux修改文件或目录的所有者(chown)和用户组
  9. php实用教程第3版郑阿奇课后答案_SQL Server 实用教程(第3版)课后实验答案 郑阿奇主编的 邮箱344561468@qq.com...
  10. mac上TK Framework double implementation