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]表示左边取某些块,右边取某些块,中间相等次数最多是多少

 1 var
 2     sum,f:array[0..1 shl 21]of longint;
 3     n1,n2,n:longint;
 4
 5 procedure init;
 6 var
 7     i:longint;
 8 begin
 9     read(n1);
10     for i:=1 to n1 do
11       read(sum[1<<i>>1]);
12     read(n2);
13     for i:=n1+1 to n1+n2 do
14       begin
15         read(sum[1<<i>>1]);
16         sum[1<<i>>1]:=-sum[1<<i>>1];
17       end;
18     n:=n1+n2;
19 end;
20
21 procedure up(var x:longint;y:longint);
22 begin
23     if x<y then x:=y;
24 end;
25
26 procedure dp;
27 var
28     i,j,k:longint;
29 begin
30     for i:=1 to 1<<n-1 do
31       begin
32         k:=i and (-i);
33         sum[i]:=sum[i-k]+sum[k];
34         for j:=1 to n do
35           if i and (1<<j>>1)>0 then up(f[i],f[i-1<<j>>1]);
36         if sum[i]=0 then inc(f[i]);
37       end;
38     write(n-f[1<<n-1]<<1);
39 end;
40
41 begin
42     init;
43     dp;
44 end.

View Code

转载于:https://www.cnblogs.com/Randolph87/p/3757750.html

2064: 分裂 - BZOJ相关推荐

  1. Bzoj 2064 分裂 题解

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

  2. [BZOJ] 2064: 分裂

    注意到\(n\)很小,应该是状压DP 记原集合为\(S\),目标集合为\(T\),如果我们能把\(S\)分成\(x\)个不相交的非空子集,且这\(x\)个子集能和\(T\)中的一些不相交非空子集的和相 ...

  3. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

  4. 分裂游戏(bzoj 1188)

    Description 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子 ...

  5. BZOJ 1188: [HNOI2007]分裂游戏(multi-nim)

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1386  Solved: 840 [Submit][Status][Discuss] Descrip ...

  6. BZOJ 2135 刷题计划(贪心,求导,二分)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2135 是 hydro 的 BZOJ ...

  7. BZOJ 3731: Gty的超级妹子树

    Description 我曾在青山之中遇过你, 新竹做杖,鬓插紫茱萸. 跣足踏过无边丝雨, 又拾起燕川雪片片落如席-- Gty神(xian)犇(chong)从来不缺妹子-- 他又来到了一棵妹子树下,发 ...

  8. 【BZOJ1188】分裂游戏(博弈论)

    [BZOJ1188]分裂游戏(博弈论) 题面 BZOJ 洛谷 题解 这道题目比较神仙. 首先观察结束状态,即\(P\)状态,此时必定是所有的豆子都在最后一个瓶子中. 发现每次的转移一定是拿出一棵豆子, ...

  9. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

最新文章

  1. MATLAB实战系列(十六)-2021年大学生数学建模美赛竞赛赛题及问题解析
  2. MySQL为表的指定字段添加数据
  3. 线性代数---矩阵的各种问题求解方法
  4. 百度seo排名规则_SEO:百度搜索引擎排名规则都有哪些?
  5. Qt中文本编辑器实现语法高亮功能(Qscitinlla)
  6. ubuntu修改服务器端,修改ubuntu 服务器配置
  7. ld cannot find an existing library
  8. Jquery中BlockUI的遮罩效果详解
  9. dcdc转换器计算机显示,DC-DC转换器的问题
  10. Linux下压缩文件夹
  11. java 生成word 分页_Java 插入分页符和分节符到Word文档
  12. Python库——PyPDF2介绍
  13. 12月2日科技资讯|微信回应发原图泄露位置信息;Linux Kernel 5.4.1 发布
  14. 金蝶k3单据编码规则_金蝶K3财务操作手册
  15. python案例2-简易网吧系统
  16. 分布式技术一周技术动态 2016-10-09
  17. CentOS7安装OpenStack(Rocky版)-02.安装Keyston认证服务组件(控制节点)
  18. 数学家西蒙斯:华尔街最赚钱的基金经理
  19. Description 一个笼子里关了若干鸡和兔子,鸡有2只脚,兔子有4只脚,没有例外。已知笼子里脚的 总数a,问笼子里至少有多少只动物,至多有多少只动物? Input 第一行是测试数据的组数n,后面
  20. 22本JavaScript高清电子书下载

热门文章

  1. 程序员都用什么来记录知识_1年前的小五都用 Python 来做什么?
  2. 力扣 数组中的第K个最大元素
  3. mcq 队列_人工智能| AI解决问题| 才能问题解答(MCQ)| 套装1
  4. javascript写入_如何在JavaScript中写入HTML元素?
  5. AAC ADTS格式分析
  6. hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle
  7. python datatime 平均值_python求数据的时间平均
  8. hdu 5783——Divide the Sequence
  9. Qt eventFilter实现信号与槽
  10. android文本复制自定义剪切板,android 剪切板-文本复制、粘贴