分裂 BZOJ2064 状压DP
分析:
这个题很好啊,比起什么裸的状压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相关推荐
- AtCoder AGC035D Add and Remove (状压DP)
题目链接 https://atcoder.jp/contests/agc035/tasks/agc035_d 题解 想了两小时憋出来一个状压DP,发现人家怎么空间才十几MB,原来暴力就行了... 考虑 ...
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
- codeforces 8C. Looking for Order 状压dp
题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...
- UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)
整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...
- 【每日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 ...
- hdu 4778 Gems Fight! 状压dp
转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...
- 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)
题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...
- P2340 奶牛会展(状压dp)
P2340 奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览.由 ...
- UVa 11825 (状压DP) Hackers' Crackdown
这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...
最新文章
- 互联网控制报文协议(ICMP)
- 线性规划与网络流24题●09方格取数问题13星际转移问题
- error when defining a rule - SAP loyalty management的积分定义规则
- C++(18)--复制构造函数
- JS如何判断安卓还是iOS 一种比较被认同的方式
- 阿里终面:如何设计一个高性能网关?
- Linux下两种TCP网络服务器实现方式:循环服务并发服务
- android谷歌打印插件下载地址,谷歌浏览器打印插件(Print Plus)
- PyTorch-1.10(十三)--torch.optim基本用法
- vmware虚拟机的作用
- Mac Pro下终端配置Zsh(iterm2 3.3.0 + oh-my-zsh + solarized配色)
- 【开源“青女四轴”,DIY小四轴】
- 测绘工程本科生如何入门GNSS算法 - 引言
- 适合小白的SQL Server学习笔记
- 转龚文祥的一篇文章:对看起来很美的网站要保持审慎的乐观
- 魔兽会封python_Python爬取大量数据时,如何防止IP被封?
- 计算机数字音乐谱 凉凉,凉凉数字简谱
- 从在浏览器地址栏中输入www.baidu.com到看到百度首页,这个过程中间经历了什么?都涉及到哪些网络协议?
- gis差值分析_arcgis中七种插值方法的对比分析
- 基于微信小程序+SSM学生社团管理系统设计
热门文章
- 05-树7 堆中的路径
- JSON中JObject和JArray,JValue序列化(Linq)
- 2012-11-26 → 2012-12-02 周总结:项目又有新需求了,很兴奋
- linux scp(ssh)免密发送(登陆)配置方法
- Wireshark实战分析之TCP协议(一)
- 几个非常实用性的在线学习Ethical Hacking的网站
- Android下播放YUV视频文件
- linux修改文件或目录的所有者(chown)和用户组
- php实用教程第3版郑阿奇课后答案_SQL Server 实用教程(第3版)课后实验答案 郑阿奇主编的 邮箱344561468@qq.com...
- mac上TK Framework double implementation