题目传送门(内部题114)


输入格式

  第一行一个正整数$n$。
  接下来一行$n-1$个正整数,第$i$个数为$f_{i+1}$。
  接下来一行$n$个数,若第$i$个数为$0$则表示林先森希望$i$号点的彩灯是关闭状态,若第$i$个数为$1$则表示林先森希望$i$号点的彩灯是开启状态。


输出格式

  输出一行一个整数,表示林先森最少需要几秒才能看到他期望看到的树。


样例

样例输入1:

4
1 2 3
0 1 1 0

样例输出1:

2

样例输入2:

7
1 1 2 2 3 3
0 1 1 1 0 0 1

样例输出2:

3


数据范围与提示

样例解释:

  第一个样例:
  $\bullet$第一秒林先森拨动$3$号点的开关,彩灯状态变为$0\ 0\ 1\ 0$。
  $\bullet$第二秒林先森什么也不做,彩灯状态变为$0\ 1\ 1\ 0$,满足要求。
  第二个样例:
  $\bullet$第一秒林先森拨动$4$号点的开关,彩灯状态变为$0\ 0\ 0\ 1\ 0\ 0\ 0$。
  $\bullet$第二秒林先森拨动$7$号点的开关,彩灯状态变为$0\ 1\ 0\ 1\ 0\ 0\ 1$。
  $\bullet$第三秒林先森拨动$1$号点的开关,与$2$号点传递的拨动效果抵消,彩灯状态变为$0\ 1\ 1\ 1\ 0\ 0\ 1$,满足要求。

数据范围:

  对于$30\%$的数据,$n\leqslant 8$。
  对于另$30\%$的数据,林先森希望看到所有彩灯都被点亮。
  对于$100\%$的数据,$1\leqslant n\leqslant 16$。


题解

数据范围较小,考虑状压$DP$。

因为答案最大为$n$,所以我们可以枚举秒数。

设$dp[i][state]$表示第$i$秒,状态为$state$是否可行。

因为开关只与正负是否相同有关,而与具体是开还是关无关,所以我们可以假设最终的状态为起始状态,然后想办法转移到$0$状态(其实就是代码复杂度低一点而已)。

预处理出来每个点会对其它的点在下一秒做的贡献即可。

时间复杂度:$\Theta(2^nn^2)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n,state;
int fa[20],Map[20][20];
bool dp[20][100000];
int main()
{
scanf("%d",&n);
for(int i=0;i<=n;i++)Map[1][i]=1;
for(int i=2;i<=n;i++)
{
Map[i][0]=1<<(i-1);
scanf("%d",&fa[i]);
int now=i;
for(int j=1;j<=n;j++)
{
now=fa[now];
if(now)Map[i][j]=Map[i][j-1]|(1<<(now-1));
else Map[i][j]=Map[i][j-1];
}
}
for(int i=1;i<=n;i++){int x;scanf("%d",&x);state|=x<<(i-1);}
dp[0][state]=1;
for(int i=0;i<=n;i++)
{
if(dp[i][0]){printf("%d",i);break;}
for(int s=1;s<(1<<n);s++)
if(dp[i][s])
{
dp[i+1][s]=1;
for(int j=1;j<=n;j++)
dp[i+1][s^Map[j][i]]=1;
}
}
return 0;
}

rp++

[CSP-S模拟测试]:装饰(状压DP)的更多相关文章

  1. 2018.10.17 NOIP模拟 管道(状压dp)

    传送门 状压dp好题. 怎么今天道道题都有点东西啊 对于今天题目神仙出题人先膜为上策:%%%%DzYoAk_UoI%%%% 设f[i][j]f[i][j]f[i][j]表示选取点的状态集合为iii,当 ...

  2. 2018.09.08 NOIP模拟 division(状压dp)

    这么sb的题考场居然写挂了2233. 假设n=∏iaiki" role="presentation" style="position: relative;&qu ...

  3. 2018.08.29 NOIP模拟 movie(状压dp/随机化贪心)

    [描述] 小石头喜欢看电影,选择有 N 部电影可供选择,每一部电影会在一天的不同时段播 放.他希望连续看 L 分钟的电影.因为电影院是他家开的,所以他可以在一部电影播放过程中任何时间进入或退出,当然他 ...

  4. 4.26 省选模拟赛 T3 状压dp 差分求答案

    LINK:T3 比较好的题目 考试的时候被毒瘤的T2给搞的心态爆炸 这道题连正解的思路都没有想到. 一看到题求删除点的最少个 可以使得不连通. 瞬间想到最小割 发现对于10分直接跑最小割即可. 不过想 ...

  5. NOIp模拟赛 巨神兵(状压DP 容斥)

    \(Description\) 给定\(n\)个点\(m\)条边的有向图,求有多少个边集的子集,构成的图没有环. \(n\leq17\). \(Solution\) 问题也等价于,用不同的边集构造DA ...

  6. 【CSP模拟赛】Adore(状压dp 二进制)

    题目描述 小w偶然间见到了一个DAG.这个DAG有m层,第一层只有一个源点,最后一层只有一个汇点,剩下的每一层都有k个节点.现在小w每次可以取反第i(1<i<n-1)层和第i+1层之间的连 ...

  7. 6.28 NOI模拟赛 好题 状压dp 随机化

    算是一道比较新颖的题目 尽管好像是两年前的省选模拟赛题目.. 对于20%的分数 可以进行爆搜,对于另外20%的数据 因为k很小所以考虑上状压dp. 观察最后答案是一个连通块 从而可以发现这个连通块必然 ...

  8. 【62测试】【状压dp】【dfs序】【线段树】

    第一题: 给出一个长度不超过100只包含'B'和'R'的字符串,将其无限重复下去. 比如,BBRB则会形成 BBRBBBRBBBRB 现在给出一个区间[l,r]询问该区间内有多少个字符'B'(区间下标 ...

  9. 【XSY2745】装饰地板 状压DP 特征多项式

    题目大意 你有\(s_1\)种\(1\times 2\)的地砖,\(s_2\)种\(2\times 1\)的地砖. 记铺满\(m\times n\)的地板的方案数为\(f(m,n)\). 给你\(m, ...

随机推荐

  1. 04: redis集群

    1.1 主从同步 1.CPA原理 1. CPA原理是分布式存储理论的基石: C(一致性):   A(可用性):  P(分区容忍性); 2. 当主从网络无法连通时,修改操作无法同步到节点,所以“一致性” ...

  2. WPF使用资源图片

    一.加载本项目的图片 WPF引入了统一资源表示Uri来标识和访问资源.其中较为常见的情况是用Uri加载图像.Uri表达式的一把形式为:协议+授权+路径 协议:pack:// 授权:有两种,一种用于访问 ...

  3. MySQL存储引擎MyISAM和InnoDB有哪些区别?

    一.MyISAM和InnoDB的区别有哪些? 1.InnoDB支持事务,MyISAM不支持.对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在be ...

  4. 本人亲测-C#常用工具类

    /* * HTTP接口工具类 */ public class HttpUitls { /* * get请求 */ public static string Get(string Url) { //Sy ...

  5. IOS手机伪类a:active失效

    IOS手机伪类a:active失效:点击更改颜色,松开恢复 解决方案:OS系统的移动设备中,需要在按钮元素或body/html上绑定一个touchstart事件才能激活:active状态 docume ...

  6. 配置Linux静态IP地址

  7. dedecms 多级栏目时,调用上级栏目名称和链接

    {dede:field name='position' runphp='yes'} $tc="-"; //分隔符 $tw=$GLOBALS['cfg_list_symbol']; ...

  8. 关于this关键字

    首先看一下这篇博客介绍:http://blog.csdn.net/ccpat/article/details/44515335 下面贴段代码 package com.xujingyang.test; ...

  9. SecureCRT 连接 Centos7.0 (NAT模式),且能连接公网。

    1.打开物理主机运行-输入cmd,输入ipconfig,获取物理主机ip地址. ip:192.168.11.138 2.点击网络适配器,选择NAT模式. 3.点击Centos界面左上角-编辑-虚拟网络 ...

  10. linux上如何安装postgresql

    安装对应的postgresql的yum源 rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7-x86_64 ...