2064: 分裂

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 570  Solved: 350
[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

和谐社会模拟赛

这道题真心和谐啊,连题解都搜不到,黄学长都说“只可意会,不可言传”。逗我呢?!
于是乎本着良心我决定言传一下。
我们可以先把这些国家想成橡皮泥,我们的目的就是把一堆橡皮泥变成另一堆橡皮泥。考虑最多的步数,就是我们先把所有橡皮泥揉到一起,然后再挨个往外掰,那么步数就是n1+n2-2。
但是,我们可以注意到,如果我们可以再把当前的两堆橡皮泥分成4堆,两两对应,那么,我们就没有必要把两堆在和在一起在分开了。换句话说,我们把它分解成了两个子问题,而这么做的条件就是两两对应的堆大小相等。然后两个小堆可能被我们接着往下分,然后又省了两步,然后……
所以,假设我们这么做最多可以分成k对,那么答案就是n+m-2*k。
那么问题来了,我们到底怎么去求呢?
数据范围这么小,我们可以考虑状压一发。为了方便,我们把两堆合在一起状压,状态就是看这些橡皮泥选没选,然后挨个去找最佳的转移,最终看一下当前状态是否也是可以组成两两配对的两堆的,如果是,那么f[i]+1,因为刨去i表示的橡皮泥剩下的也一定是两两配对的。

 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <queue>
 6 #include <algorithm>
 7 #include <cmath>
 8 #include <map>
 9 #include <vector>
10 #define N (1<<21)
11 using namespace std;
12 int f[N],sum[N];
13 int n1,n2,n;
14 int a[100],b[100];
15 int main()
16 {
17     scanf("%d",&n1);
18     for(int i=1;i<=n1;i++)
19     {
20         scanf("%d",&a[i]);
21         sum[(1<<(i-1))]=a[i];
22     }
23     scanf("%d",&n2);
24     for(int i=1;i<=n2;i++)
25     {
26         scanf("%d",&b[i]);
27         sum[(1<<(i-1+n1))]=-b[i];
28     }
29     n=n1+n2;
30     for(int i=1;i<(1<<n);i++)
31     {
32         sum[i]=sum[i&(-i)]+sum[i-(i&(-i))];
33         for(int j=1;j<=n;j++)
34         {
35             if(i&(1<<(j-1)))
36             {
37                 f[i]=max(f[i],f[i-(1<<(j-1))]);
38             }
39         }
40         if(!sum[i])f[i]++;
41     }
42     printf("%d\n",n-2*f[(1<<n)-1]);
43     return 0;
44 }

View Code

转载于:https://www.cnblogs.com/liutianrui/p/7695176.html

Bzoj 2064 分裂 题解相关推荐

  1. [BZOJ] 2064: 分裂

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

  2. 2064: 分裂 - BZOJ

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

  3. 【业界偷懒】【Public】BZOJ题目一句话题解整理

    转发[Hzwer]: 就当是复习一下自己做过的题,顺便提供一个简要题解给大家看. 做题时候实在想不出来看一下一句话题解,可以有一个提示的作用又不至于一下子知道了全部浪费了一道题吧.. 部分题目(如我A ...

  4. 【醒目】【业界偷懒】【Public】BZOJ题目一句话题解整理

    就当是复习一下自己做过的题,顺便提供一个简要题解给大家看. 做题时候实在想不出来看一下一句话题解,可以有一个提示的作用又不至于一下子知道了全部浪费了一道题吧.. 部分题目(如我A过得大部分奶牛题)是别 ...

  5. BZOJ 3070 震波 题解

    题目传送门 题目大意: 有一棵 n n n 个带权点的树,所有边的长度都是 1 1 1,现在有两种操作.操作 1 1 1:询问 x x x 周围与它距离不超过 k k k 的点的权值和(包括自己):操 ...

  6. BZOJ 4551树题解

    好吧,洛谷的数据比较水暴力就可以过....(而且跑到飞快) 不过(BZ水不过去)还是讲讲正规的做法. 其实一眼可以看出可以树剖,但是,码起来有点麻烦. 其实有一种更简单的离线做法. 我们很容易联想到并 ...

  7. bzoj 4398 福慧双修 题解

    卡了一晚上啊 首先我们要跑一边整张图的spfa,记录每个点是从哪条边出去的(pre数组) 这里记录的不是前驱边,而是和原点相连的第一个点编号,因为不能走重复边所以才要记录这个,以免刚刚出去又原路返回 ...

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

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

  9. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

最新文章

  1. Linux编程常见问题
  2. 计算机视觉训练模型效果不佳怎么破?
  3. 用 Java 爬小姐姐图片,这个厉害了。。。
  4. 分享JavaScript开发实战经验
  5. 如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行
  6. 自学linux指令分析-mkdir
  7. 数据结构C++版-图
  8. 【Meachine Learning】lecture1 --吴恩达
  9. window.dialogArguments只兼容ie的问题解决
  10. 初识OFDM(七):OFDM中的信道估计
  11. matlab计算abc三相短路电流_电工都知道三相电动机按一千瓦两个电流计算 却不会计算公式...
  12. 图形化的电力通信光纤资源管理系统概述与功能特点
  13. 如何增强台式计算机无线网络,台式机无线网信号差怎么解决
  14. Altium_Designer-原理图库如何添加低电平有效的管脚?
  15. 日期操作类和io机制
  16. 《老路用得上的商学课》21-30学习笔记
  17. 各大CMS采集资源站合集
  18. 如何简单的运营企业群呼系统呼叫中心系统
  19. ps考试引擎安装溢出屏幕
  20. 警惕安全档案的陷阱 | 确认偏见

热门文章

  1. 深度|​揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活!
  2. 德国汽车产业研究:立足本土,迈向世界
  3. 德国再出颠覆性发明,这次要安排我们的快递
  4. 智能机器人与系统高精尖创新中心2018年度开放基金项目申报通知
  5. 贝叶斯网络之父Judea Pearl:要建立真正的人工智能,少不了因果推理
  6. 研究报告:城市大脑的起源、现状与未来趋势
  7. 无人驾驶推进时间表及五大技术领域关键节点
  8. 你要偷偷学会排查线上 CPU 飙高的问题,然后惊艳所有人!
  9. 41 岁的黄峥辞任拼多多董事长一职,未来将投身于科学研究!
  10. 漫画 | 产品经理的八大罪状