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,

代码很短,但是我没有想到这个思路

讲出来其实很容易理解,我们把两边都分成k堆,两边对应的一堆和相等,这样我们就只需要做n1+n2-k*2次操作就可以了

状压dp即可,f[s]表示左边取某些块,右边取某些块,中间相等次数最多是多少

 var
sum,f:array[.. shl ]of longint;
n1,n2,n:longint; procedure init;
var
i:longint;
begin
read(n1);
for i:= to n1 do
read(sum[<<i>>]);
read(n2);
for i:=n1+ to n1+n2 do
begin
read(sum[<<i>>]);
sum[<<i>>]:=-sum[<<i>>];
end;
n:=n1+n2;
end; procedure up(var x:longint;y:longint);
begin
if x<y then x:=y;
end; procedure dp;
var
i,j,k:longint;
begin
for i:= to <<n- do
begin
k:=i and (-i);
sum[i]:=sum[i-k]+sum[k];
for j:= to n do
if i and (<<j>>)> then up(f[i],f[i-<<j>>]);
if sum[i]= then inc(f[i]);
end;
write(n-f[<<n-]<<);
end; begin
init;
dp;
end.

2064: 分裂 - BZOJ的更多相关文章

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

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

  2. [BZOJ 2064]分裂

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

  3. Bzoj 2064 分裂 题解

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

  4. BZOJ 2064: 分裂 [DP 状压 转化]

    传送门 题意:一开始$n$块面积最后$m$块面积,面积和相等每次可以分裂或者合并,问最少几次 昨天忘发了... 不会.... 考虑最差情况,$n+m-2$所有先合并再分裂 发现只有当前后两个子集相等时 ...

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

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

  6. BZOJ 2064: 分裂 状压动归

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

  7. [BZOJ] 4145: [AMPPZ2014]The Prices

    设\(f[S][i]\)表示考虑到第\(i\)家店,已经买了集合\(S\)内的物品 一个朴素的想法是枚举子集转移 \[ f[S][i]=\min\{f[T][i-1]+cost[S\oplus T][ ...

  8. BZOJ2064: 分裂

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

  9. [BZOJ2064]分裂 状压dp

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

随机推荐

  1. part 5 Two way databinding in AngularJS

  2. 【python】python文件和目录操作方法大全(含实例)

    转自:http://www.jb51.net/article/48001.htm 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Pyt ...

  3. 《Cocos2d-x实战 Lua卷》上线了

    感谢大家一直以来的支持!各大商店均开始销售:京东:http://item.jd.com/11659697.html当当:http://product.dangdang.com/23659810.htm ...

  4. AMQ学习笔记 - 13. Spring-jms的配置

    概述 如何使用spring-jms来简化jms客户端的开发? 这篇文章主要记录如何配置以便以后复用,而非原理的讲解,有些内容我 没有掌握原理. producer端 producer端负责发送,这里使用 ...

  5. 10款很酷的HTML5动画和实用应用 有源码

    10款很酷的HTML5动画和实用应用,这里有菜单.SVG动画.Loading动画,总有你喜欢的,而且,每一款HTML5应用都提供源代码下载,方便大家学习和研究,一起来看看吧. 1.HTML5 SVG ...

  6. [NOIP2014]解方程

    3732 解方程  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 输入描述 Input Descrip ...

  7. 记录一次会话CRT

    记录一次会话CRT --------------------- su -oracle sqlplus / as sysdba sqlplus username/password  如:普通用户登录   ...

  8. mysql快速上手2

    上一篇文章讲的是mysql的基本操作,这一篇会有一点难以理解,本节主要内容mysql视图,存储过程,函数,事务,触发器,以及动态执行sql 视图view 视图是一个虚拟表,其内容由查询定义.同真实的表 ...

  9. PHP获取时间日期的多种方法

    分享下PHP获取时间日期的多种方法. <?php echo "今天:".date("Y-m-d")."<br>";     ...

  10. PHP CI 查询条件大全

    php CI 框架 this->db->where() 条件 PHP 5 版本 $this->db->where() 接受可选的第三个参数.如果你将它设置为 FALSE, Co ...