传送门:P4297 [NOI2006]网络收费

题目大意:

给定一棵满二叉树,每个叶节点有一个状态(0,1),任选两个叶节点,如果这两个叶节点状态相同但他们的LCA所管辖的子树中的与他们状态相同的叶节点个数较少(少于1/2),则会产生2f的代价,如果状态不同,则产生f的代价,如果状态相同且LCA管辖子树中与他们状态相同叶节点个数较多,则不产生代价,现在每个节点可以变更状态,但变更状态也有自己的代价,求最小总代价(来自leozhang大佬)

QWQ:

因为各个点互相之间的贡献由各个点之间的LCA的状态

所以考虑从根节点枚举当前点是A多还是B多的状态

因为直接再枚举其子节点的AB个数dfs显然不合理

考虑从子节点往上枚举AB个数做背包

显然各节点贡献可以分开计算

因为显然不可能在统计该节点时记录叶子节点的所有状态

所以提前计算所有叶子节点费用

记录每个叶子节点在他各种祖先的不同状态的贡献

计算叶子节点贡献时算一遍就好了

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define C getchar()-48
inline ll read()
{
ll s=0,r=1;
char c=C;
for(;c<0||c>9;c=C) if(c==-3) r=-1;
for(;c>=0&&c<=9;c=C) s=(s<<3)+(s<<1)+c;
return s*r;
}
const ll N=2060,inf=1ll<<60;
ll n,gs,ans=inf;
ll f[N][2],a[N],dp[N][N],c[N][12],pd[20];
inline int lca(int a,int b)
{
for(int i=n-1;i>=0;i--) if((a>>i)!=(b>>i)) return n-i-1;
}
inline void dfs(int x,int cs)
{
for(int i=0;i<=1<<n;i++) dp[x][i]=inf;
if(cs==n)
{
dp[x][0]=f[x-gs][0];
dp[x][1]=f[x-gs][1];
for(int i=0;i<n;i++) dp[x][pd[i]^1]+=c[x-gs][i];
return;
}
pd[cs]=1;dfs(x<<1,cs+1),dfs(x<<1|1,cs+1);
for(int i=0;i<=1<<(n-cs-1);i++)
for(int j=(1<<(n-cs-1))+1-i;j<=1<<(n-cs-1);j++)
dp[x][i+j]=min(dp[x][i+j],dp[x<<1][i]+dp[x<<1|1][j]); pd[cs]=0;dfs(x<<1,cs+1),dfs(x<<1|1,cs+1);
for(int i=0;i<=1<<(n-cs-1);i++)
for(int j=0;i+j<=1<<(n-cs-1);j++)
dp[x][i+j]=min(dp[x][i+j],dp[x<<1][i]+dp[x<<1|1][j]);
}
int main()
{
n=read();gs=(1<<n);
for(int i=0;i<gs;i++) a[i]=read();
for(int i=0;i<gs;i++) f[i][a[i]]=0,f[i][a[i]^1]=read();
for(int i=0;i<gs;i++)
for(int j=i+1;j<gs;j++)
{
int rt=lca(i,j),v=read();
c[i][rt]+=v,c[j][rt]+=v;
}
dfs(1,0);
for(int i=0;i<=gs;i++) ans=min(ans,dp[1][i]);
cout<<ans;
return 0;
}

【简】题解 P4297 [NOI2006]网络收费的更多相关文章

  1. 洛谷 P4297 [NOI2006]网络收费

    P4297 [NOI2006]网络收费 题目背景 noi2006 day1t1 题目描述 网络已经成为当今世界不可或缺的一部分.每天都有数以亿计的人使用网络进行学习.科研.娱乐等活动.然而,不可忽视的 ...

  2. 5.21 省选模拟赛 luogu P4297 [NOI2006]网络收费 树形dp

    LINK:网络收费 还是自己没脑子. 早上思考的时候 发现树形dp不可做 然后放弃治疗了. 没有合理的转换问题的模型是我整个人最大的败笔. 暴力也值得一提 爆搜之后可以写成FFT的形式的计算贡献的方法 ...

  3. 【BZOJ1495】[NOI2006]网络收费 暴力+DP

    [BZOJ1495][NOI2006]网络收费 Description 网络已经成为当今世界不可或缺的一部分.每天都有数以亿计的人使用网络进行学习.科研.娱乐等活动.然而,不可忽视的一点就是网络本身有 ...

  4. BZOJ_1495_[NOI2006]网络收费_树形DP

    BZOJ_1495_[NOI2006]网络收费_树形DP Description 网络已经成为当今世界不可或缺的一部分.每天都有数以亿计的人使用网络进行学习.科研.娱乐等活动.然而, 不可忽视的一点就 ...

  5. 并不对劲的[noi2006]网络收费

    题目略长,就从大视野上复制了. 听上去好像费用流,然而…… ***************************表示略长的题目的分界线************************ 1495: [ ...

  6. 【bzoj1495】[NOI2006]网络收费 暴力+树形背包dp

    题目描述 给出一个有 $2^n$ 个叶子节点的完全二叉树.每个叶子节点可以选择黑白两种颜色. 对于每个非叶子节点左子树中的叶子节点 $i$ 和右子树中的叶子节点 $j$ :如果 $i$ 和 $j$ 的 ...

  7. BZOJ1495 [NOI2006]网络收费

    题意 传送门 MY市NS中学,大概是绵阳市南山中学. 分析 参照Maxwei_wzj的题解. 因为成对的贡献比较难做,我们尝试把贡献算到每一个叶子节点上.我们发现按照题目中的收费方式,它等价于对于每棵 ...

  8. BZOJ1495 [NOI2006]网络收费 【树形dp + 状压dp】

    题目链接 BZOJ1495 题解 观察表格,实际上就是分\(A\)多和\(B\)两种情况,分别对应每个点选\(A\)权值或者\(B\)权值,所以成对的权值可以分到每个点上 所以每个非叶节点实际对应一个 ...

  9. [NOI2006]网络收费

    题面在这里 description 一棵\(2^n\)个叶节点的满二叉树,每个节点代表一个用户,有一个预先的收费方案\(A\)或\(B\); 对于任两个用户 \(i,j(1≤i<j≤2^n)i, ...

随机推荐

  1. 菜鸡的Java笔记 第十七 static 关键字

    static 是java中定义的一个关键字,主要是描述全局的概念,所以利用static关键字可以定义属性,定义方法        但是在90%的情况下,我们的开发代码很少会去直接编写static*// ...

  2. liunx下安装mysql(8.0.27)

    一.软件下载: 1.通过官网下载: https://dev.mysql.com/downloads/repo/yum/ 本文使用的系统为centos7,基于RedHat7的版本 2.下载完成后文件 m ...

  3. 测试平台系列(83) 前置条件支持Redis语句

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上节我们打了个野,解决了一 ...

  4. P1759 通天之潜水(双写法+解析)

    算法解析 动态规划问题满足三大重要性质 最优子结构性质:如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理).最优子结构性质为动态规划算法解决问题提供了重 ...

  5. 【程序员翻身计划】Java高性能编程第一章-Java多线程概述

    目标 重点: 线程安全的概念 线程通信的方式与应用 reactor线程模型 线程数量的优化 jdk常用命令 Netty框架的作用 难点 java运行的原理 同步关键字的原理 AQS的抽象 JUC的源码 ...

  6. ES2020新特性链操作符 '?.'和'??'

    ES2020新特性,js中的可选链操作符?. 概述 回想一下,我们是如何访问可能含有空值(null或undefined)属性的嵌套对象,比如访问web api 返回结果的user详情,可以使用嵌套的三 ...

  7. Codeforces 710F - String Set Queries(AC 自动机)

    题面传送门 题意:强制在线的 AC 自动机. \(n,\sum|s|\leq 3\times 10^5\) 如果不是强制在线那此题就是道 sb 题,加了强制在线就不那么 sb 了. 这里介绍两种做法: ...

  8. Codeforces 1423N - BubbleSquare Tokens(归纳+构造)

    Codeforces 题目传送门 & 洛谷题目传送门 一道思维题. 题目没有说无解输出 \(-1\),这意味着对于任意 \(G\) 一定存在一个合法的排列方案.因此可以考虑采用归纳法.对于一个 ...

  9. Latex 文档格式化

    title: "Latex 文档格式化" author: 李龙翔 date: "Nov 22, 2019" subject: "Markdown&qu ...

  10. miRAN 分析以及mRNA分析

    一些参考资料 http://www.360doc.com/content/17/0528/22/19913717_658086490.shtml https://www.cnblogs.com/tri ...