BZOJ 2064: 分裂( 状压dp )

时间:2021-10-19 07:53:23

BZOJ 2064: 分裂( 状压dp )

n1+n2次一定可以满足..然后假如之前土地集合S1的子集subs1和之后土地集合S2的子集subs2相等的话...那么就少了2个+操作...所以最后答案就是n1+n2-少掉的最多操作数, 由状压dp完成...

------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
 
using namespace std;
 
#define b(i) (1 << (i))
#define lowbit(x) ((x) & -(x))
 
const int maxn = 21;
 
int dp[b(maxn)], sum[b(maxn)];
int n, m;
 
void Init() {
memset(dp, 0, sizeof dp);
sum[0] = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", sum + b(i));
scanf("%d", &m);
for(int i = n; i < n + m; i++) {
scanf("%d", sum + b(i));
sum[b(i)] = -sum[b(i)];
}
}
 
void Dp() {
for(int S = 1, All = b(n + m); S < All; S++) {
sum[S] = sum[lowbit(S)] + sum[S ^ lowbit(S)];
for(int i = n + m; i--; )
if(S & b(i)) dp[S] = max(dp[S], dp[S ^ b(i)]);
dp[S] += !sum[S];
}
printf("%d\n", n + m - 2 * dp[b(n + m) - 1]);
}
 
int main() {
Init();
Dp();
return 0;
}

------------------------------------------------------------------------

2064: 分裂

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 252  Solved: 156
[Submit][Status][Discuss]

Description

背景: 和久必分,分久必和。。。 题目描述: 中国历史上上分分和和次数非常多。。通读中国历史的WJMZBMR表示毫无压力。 同时经常搞OI的他把这个变成了一个数学模型。 假设中国的国土总和是不变的。 每个国家都可以用他的国土面积代替, 又两种可能,一种是两个国家合并为1个,那么新国家的面积为两者之和。 一种是一个国家分裂为2个,那么2个新国家的面积之和为原国家的面积。 WJMZBMR现在知道了很遥远的过去中国的状态,又知道了中国现在的状态,想知道至少要几次操作(分裂和合并各算一次操作),能让中国从当时状态到达现在的状态。

Input

第一行一个数n1,表示当时的块数,接下来n1个数分别表示各块的面积。 第二行一个数n2,表示现在的块,接下来n2个数分别表示各块的面积。

Output

一行一个数表示最小次数。

Sample Input

1 6
3 1 2 3

Sample Output

2
数据范围:
对于100%的数据,n1,n2<=10,每个数<=50
对于30%的数据,n1,n2<=6,

HINT

Source

BZOJ 2064: 分裂( 状压dp )的更多相关文章

  1. BZOJ 2064&colon; 分裂 状压动归

    最多的操作次数是 $n+m-1$ (相当于把第一个暴力合并,再暴力拆成第二个).如果第一个序列的一个子序列和第二个区间的子序列相等,那么总次数就可以减 $2$.将第二个序列所有数取反,直接求解有多少个 ...

  2. 【BZOJ2064】分裂 状压DP

    [BZOJ2064]分裂 Description 背景:和久必分,分久必和...题目描述:中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力.同时经常搞OI的他把这个变成了一个 ...

  3. &lbrack;BZOJ2064&rsqb;分裂 状压dp

    2064: 分裂 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 656  Solved: 404[Submit][Status][Discuss] De ...

  4. BZOJ 3812 主旋律 &lpar;状压DP&plus;容斥&rpar; &plus; NOIP模拟赛 巨神兵&lpar;obelisk&rpar;&lpar;状压DP&rpar;

    这道题跟另一道题很像,先看看那道题吧 巨神兵(obelisk) 题面 欧贝利斯克的巨神兵很喜欢有向图,有一天他找到了一张nnn个点mmm条边的有向图.欧贝利斯克认为一个没有环的有向图是优美的,请问这张 ...

  5. &lbrack;BZOJ 1072&rsqb; &lbrack;SCOI2007&rsqb; 排列perm 【状压DP】

    题目链接:BZOJ 1072 这道题使用 C++ STL 的 next_permutation() 函数直接暴力就可以AC .(使用 Set 判断是否重复) 代码如下: #include <io ...

  6. BZOJ&period;4145&period;&lbrack;AMPPZ2014&rsqb;The Prices&lpar;状压DP&rpar;

    BZOJ 比较裸的状压DP. 刚开始写麻烦惹... \(f[i][s]\)表示考虑了前\(i\)家商店,所买物品状态为\(s\)的最小花费. 可以写求一遍一定去\(i\)商店的\(f[i]\)(\(f ...

  7. 分裂 BZOJ2064 状压DP

    分析: 这个题很好啊,比起什么裸的状压DP高多了! 我们可以考虑,什么时候答案最大:全合并,之后再分裂 这样,我们必定可以得到答案,也就是说答案必定小于n+m 那么我们可以考虑,什么时候能够使答案更小 ...

  8. BZOJ 3195 &lbrack;Jxoi2012&rsqb;奇怪的道路 &vert; 状压DP

    传送门 BZOJ 3195 题解 这是一道画风正常的状压DP题. 可以想到,\(dp[i][j][k]\)表示到第\(i\)个点.已经连了\(j\)条边,当前\([i - K, i]\)区间内的点的度 ...

  9. BZOJ&lowbar;2064&lowbar;分裂&lowbar;状压DP

    BZOJ_2064_分裂_状压DP Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的 ...

随机推荐

  1. 获取centos6&period;5系统信息脚本

    最近想尝试做两件比较重要的事情,第一是用python写个cmdb,第二还是用python写个小型监控系统,下面是获取系统信息的脚本: #!/usr/bin/env python # coding:ut ...

  2. jsp有哪些内置对象&quest;作用分别是什么&quest;分别有什么方法?

    JSP共有以下9个内置的对象: request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 sess ...

  3. osmdroid启程

    osmdroid一个牛逼的开源地图引擎,从今天开始好好研究一下~

  4. ubuntu不能访问windows中的文件

    出现不能访问某个盘时(例如:OS) Error mounting /dev/sda5 at /media/user/OS: Command-line `mount -t "ntfs&quot ...

  5. &lbrack;CareerCup&rsqb; 8&period;9 An In-memory File System 内存文件系统

    8.9 Explain the data structures and algorithms that you would use to design an in-memory file system ...

  6. Java div 使用说明

    1. 置于底部 position:absolute; bottom:0;

  7. 搭建rtmp直播流服务之3&colon;java开发ffmpeg实现rtsp转rtmp并实现ffmpeg命令的接口化管理架构设计及代码实现

    上一篇文章简单介绍了java如何调用ffmpeg的命令:http://blog.csdn.net/eguid_1/article/details/51777716 上上一篇介绍了nginx-rtmp服 ...

  8. LeetCode&lpar;34&rpar;-Palindrome Number

    题目: Determine whether an integer is a palindrome. Do this without extra space. 思路: 求一个整数是不是回文树.负数不是, ...

  9. java&lowbar;oop&lowbar;类

    类的初始化顺序    再论类的组成    类的初始化顺序详解        变量        实例变量(成员变量)        类变量(静态变量)    方法        实例方法       ...

  10. 【Luogu1937】仓配置(贪心,线段树)

    [Luogu1937]仓配置 题面 直接找洛谷把... 题解 很明显的贪心吧 按照线段的右端点为第一关键字,左端点第二关键字排序 然后线段树维护区间最小就可以啦 #include<iostrea ...