BZOJ 2064 分裂

哪里有什么不可言会的嘛。。。

考虑原本的操作数为n+m(将所有面积放到一个奇怪的地方去,从那个奇怪的地方取面积)。

然而有些子集的和是相等的,这样这些子集就并不用放到那个奇怪的地方去。也不用取出来。少2次操作。

dp[s]表示最多从这个集合里分出多少个子集,使得a,b对应子集和相等。(表示本来要dp[s][t]的。。。一个意思了。。。)

然后转移。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,sum[1<<21],f[1<<21];
int lowbit(int x)
{
    return (x&(-x));
}
int main()
{
    scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d",&sum[1<<i]);
    scanf("%d",&m);for (int i=1;i<=m;i++) {scanf("%d",&sum[1<<(n+i)]);sum[1<<(n+i)]=-sum[1<<(n+i)];}
    n+=m;
    int top=1<<n;
    for (int i=1;i<top;i++)
    {
        sum[i]=sum[lowbit(i)]+sum[i-lowbit(i)];
        for (int j=1;j<=n;j++)
        {
            if (i&(1<<j))
                f[i]=max(f[i],f[i-(1<<j)]);
        }
        f[i]+=(sum[i]==0);
    }
    printf("%d\n",n-2*f[top-1]);
    return 0;
}
时间: 2024-10-14 03:10:20

BZOJ 2064 分裂的相关文章

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

传送门 题意:一开始$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

bzoj 2064: 分裂【状压dp】

参考:https://www.cnblogs.com/liu-runda/p/6019426.html 有点神奇 大概就是显然最直观的转移是全部合起来再一个一个拆,是n+m次,然后设f[i][j]为分别取i,j状态的最多相同大小块的集合数,枚举新加块转移,答案是n+m-2*f[(1<<n)-1][(1<<m)-1] 原因是体积和相同的两个快可以自己转移,不用再和别的块合并一下 #include<iostream> #include<cstdio> using

2064: 分裂 - BZOJ

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

[bzoj 1188]分裂游戏

题目大意: 共有n个瓶子,第i个瓶子中装有p[i]颗巧克力豆,两个人轮流取豆子,每一轮每人选择3个瓶子.标号i,j,k.并要保证i<j<=k且第i个瓶子中至少要有1颗巧克力豆,随后这个人从第i个瓶子中拿走一颗豆子并在j,k中各放入一粒豆子(j可能等于k).如果轮到某人而他无法按规则取豆子,那么他将输掉比赛.你先取,求在给定每个瓶子中的最初豆子数后是否必胜,且求出第一步该如何取,第一步有多少种必胜取法? sg题,此题注意每一颗豆子都是一个游戏,对每个豆子求sg. 代码如下: 1 #include

[BZOJ2064]分裂 状压dp

2064: 分裂 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 656  Solved: 404[Submit][Status][Discuss] Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的他把这个变成了一个数学模型. 假设中国的国土总和是不变的. 每个国家都可以用他的国土面积代替, 又两种可能,一种是两个国家合并为1个,那么新

计数类问题专题

主要是前两天被uoj的毛爷爷的题虐的不轻,心里很不爽啊,必须努力了,, 计数类问题分为:1.组合数学及数论计数 2.dp:状态压缩dp,插头轮廓线dp,树形dp,数位dp,普通dp 3.容斥原理 4.polya原理 5.图论计数 6.生成函数 7.其它(生成树计数等等) 本文主要研究前3个内容 考虑基本计数原理:加法原理,减法原理,乘法原理,除法原理 计数的基本原则:结果不重不漏 加法原理比较自然,中间过程有时减法原理 考虑到无向,有向图的各种量值(生成树之类)计数,状态压缩dp解决 论文:ht

状压dp初探

写了几道状压...然后就一直在颓废... 2064: 分裂 http://www.lydsy.com/JudgeOnline/problem.php?id=2064 初始的为正,最后的为负,假设我们能找到k组凑成0的话,答案就是n+m-2*k.于是状压..其实我一点都不会.. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define rep(i,l,r)

博弈论入门小结

感受到了被博弈论支配的恐惧-- 入门的话个人按顺序推荐几篇论文: <由感性认识到理性认识--透析一类搏弈游戏的解答过程>张一飞 <解析一类组合游戏>  王晓珂 <组合游戏概述-浅谈SG游戏的若干拓展及变形> 贾志豪 看完这三篇还是要有点时间的,然而博主很傻的倒着看完了,然后就成功地完成了入门到放弃,事倍功半-- 到现在为止博弈论做了7道题,感觉只是大致学了一点皮毛,以后肯定回去再做一些题目,然而Hz书店没有和博弈论有关的书,差评. 只能说博弈论是一个很奇妙的东西,并没有

分裂游戏(bzoj 1188)

Description 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子,每一轮每人选择 3 个瓶子.标号为 i,j,k, 并要保证 i < j , j < = k 且第 i 个瓶子中至少要有 1 颗巧克力豆,随后这个人从第 i 个瓶子中拿走一颗豆 子并在 j,k 中各放入一粒豆子(j 可能等于 k) .如果轮到某人而他无法按规则取豆子,那么他将输 掉比赛.胜利者可以