传送门

题意:一开始$n$块面积最后$m$块面积,面积和相等每次可以分裂或者合并,问最少几次


昨天忘发了...

不会....

考虑最差情况,$n+m-2$所有先合并再分裂

发现只有当前后两个子集相等时可以变成对方

如果前后能分成$k$堆对应相等,次数就是$n+m-2*k$

问题就是求前后各能分成几堆面积相等

混在一起,后面的面积改为负

$f[i]$表示选了集合$i$里的土地,能分成几个互不相交的权值为$0$的子集

$f[i]=max{f[i^(1<<j)]}+ sum[i]==0 $

因为$0-0=0$

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=(<<)+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n,m,f[N],sum[N],All;
int main(){
//freopen("in","r",stdin);
n=read();
for(int i=;i<n;i++) sum[<<i]=read();
m=read();
for(int i=n;i<n+m;i++) sum[<<i]=-read();
All=<<(n+m);
for(int i=;i<All;i++){
int lowbit=i&-i;
sum[i]=sum[i-lowbit]+sum[lowbit];
for(int j=;j<n+m;j++)
if(i&(<<(j-))) f[i]=max(f[i],f[i-(<<(j-))]);
f[i]+= sum[i]==;
}
printf("%d",n+m-*f[All-]);
}

BZOJ 2064: 分裂 [DP 状压 转化]的更多相关文章

  1. bzoj 2064: 分裂【状压dp】

    参考:https://www.cnblogs.com/liu-runda/p/6019426.html 有点神奇 大概就是显然最直观的转移是全部合起来再一个一个拆,是n+m次,然后设f[i][j]为分 ...

  2. BZOJ 2734: [HNOI2012]集合选数 [DP 状压 转化]

    传送门 题意:对于任意一个正整数 n≤100000,如何求出{1, 2,..., n} 的满足若 x 在该子集中,则 2x 和 3x 不能在该子集中的子集的个数(只需输出对 1,000,000,001 ...

  3. BZOJ_2064_分裂_状压DP

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

  4. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

  5. 【HDU】4352 XHXJ's LIS(数位dp+状压)

    题目 传送门:QWQ 分析 数位dp 状压一下现在的$ O(nlogn) $的$ LIS $的二分数组 数据小,所以更新时直接暴力不用二分了. 代码 #include <bits/stdc++. ...

  6. BZOJ 2064: 分裂( 状压dp )

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

  7. 分裂 BZOJ2064 状压DP

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

  8. bzoj2064: 分裂(状压dp)

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

  9. BZOJ 1087 题解【状压DP】

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3112  Solved: 1816[Submit][ ...

随机推荐

  1. React Native学习(四)—— 写一个公用组件(头部)

    本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...

  2. c++(线性队列)

    这里的线性结构实际上指的就是连续内存的意思,只不过使用“线性”这个词显得比较专业而已.前面一篇博客介绍了现象结构的处理方法,那么在这个基础之上我们是不是添加一些属性形成一种新的数据结构类型呢?答案是肯 ...

  3. JqGrid 多行表头设置

    1.我想要统计的效果是这样的 2.只要在初始化表格中加上如下代码就可以了: jQuery("#tbAbroadStatisticByUnit").jqGrid('setGroupH ...

  4. POJ 1797 Heavy Transportation(Dijkstra变形——最长路径最小权值)

    题目链接: http://poj.org/problem?id=1797 Background Hugo Heavy is happy. After the breakdown of the Carg ...

  5. SQL语句order by两个字段同时排序。

    ORDER BY  后可加2个字段,用英文逗号隔开.理解:对两个字段都排序,并不是之排序其中的一个字段: f1用升序, f2降序,sql该这样写 ORDERBY  f1, f2  DESC 也可以这样 ...

  6. HttpUrlConnection使用与总结

    /*     * URL请求的类别分为二类,GET与POST请求.二者的区别在于:      * a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,      ...

  7. Efounds笔试

    Efounds的笔试~ 1.比较两个浮点数大小 一般不会直接用"=="或者"!="对两个浮点数进行比较. 判断两个浮点数float a 与 float b 是否 ...

  8. Java this 关键字的用法

    this 关键字的用法 this 在类中就是代表当前对象,可以通过 this 关键字完成当前 对象的成员属性.成员方法和构造方法的调用. 那么何时用 this? 当在定义类中的方法时,如果需要调用该类 ...

  9. 自己搭建CA颁发证书做https加密网站

    192.168.10.187 CA服务器 192.168.10.190 web服务器 (1)搭建CA cd /etc/pki/CA 在这个目录下创建serial和index.txt两个文件 echo ...

  10. Python初识 - day5

    一.装饰器(decorator) 1.定义:本质是函数(装饰其它函数),就是为了其它函数添加附加功能. 2.原则:一是不能修改被装饰函数的源代码:二是不能修改被装饰函数的调用方式. 3.装饰器包含的知 ...