\(\mathcal{Description}\)

  Link.

  \(n\) 个公司,每个公司可能独立或者附属于另一个公司。初始时,每个公司附属于 \(a_i\)(\(a_i=-1\) 表示该公司独立)。不存在两级及以上的附属关系。每次事件随机选取两个独立的公司,使其中一个公司所拥有的附属公司全部独立,并且该公司成为另一个公司的附属。求使仅存在一个独立公司的期望操作次数。对 \(10^9+7\) 取模。

  \(n\le500\)。

\(\mathcal{Solution}\)

  奇怪的解题姿势增加了!

  记一个公司的势能函数 \(\phi(i)=2^{s_i}-1\),其中 \(s_i\) 为该公司拥有的结点个数。并记 \(\phi(S)\) 为局面 \(S\) 的势能函数,有:

\[\phi(S)=\sum_{i=1}^n\phi(i)
\]

  那么,结束局面 \(T\) 的势能函数 \(\phi(T)=2^{n-1}-1\)。

  考虑单次事件对势能的影响。对于局面 \(S\) 中一次作用在两个独立公司 \(u,v\) 上的事件,有:

\[\begin{align}
E(\Delta\phi)&=E(\phi(S'))-\phi(S)\\
&=\frac{1}2((2^{s_u}-1)+(2^{s_v}-1))-(2^{s_u-1}-1)-(2^{2_v-1}-1)\\
&=-1+2\\
&=1
\end{align}
\]

  一次事件在期望意义下会让局面的势能 \(+1\)!所以期望事件个数就是势能的期望变化次数。即:

\[\phi(T)-\phi(S)
\]

  其中 \(S\) 是初始局面,\(T\) 即上文结束局面。输出这个值就好啦!

  复杂度 \(\mathcal O(n)\)。

\(\mathcal{Code}\)

#include <cstdio>

const int MAXN = 500, MOD = 1e9 + 7;
int n, d[MAXN + 5]; inline int qkpow ( int a, int b, const int p = MOD ) {
int ret = 1;
for ( ; b; a = 1ll * a * a % p, b >>= 1 ) ret = 1ll * ret * ( b & 1 ? a : 1 ) % p;
return ret;
} int main () {
scanf ( "%d", &n );
int ans = ( MOD + qkpow ( 2, n - 1 ) - 1 ) % MOD;
for ( int i = 1, f; i <= n; ++ i ) {
scanf ( "%d", &f );
if ( ~ f ) d[i] = -1, ++ d[f];
}
for ( int i = 1; i <= n; ++ i ) {
if ( ~ d[i] ) {
ans = ( ans - qkpow ( 2, d[i] ) + 1 + MOD ) % MOD;
}
}
printf ( "%d\n", ans );
return 0;
}

Solution -「CF 1025G」Company Acquisitions的更多相关文章

  1. Solution -「CF 1342E」Placing Rooks

    \(\mathcal{Description}\)   Link.   在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...

  2. Solution -「CF 1622F」Quadratic Set

    \(\mathscr{Description}\)   Link.   求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...

  3. Solution -「CF 923F」Public Service

    \(\mathscr{Description}\)   Link.   给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...

  4. Solution -「CF 923E」Perpetual Subtraction

    \(\mathcal{Description}\)   Link.   有一个整数 \(x\in[0,n]\),初始时以 \(p_i\) 的概率取值 \(i\).进行 \(m\) 轮变换,每次均匀随机 ...

  5. Solution -「CF 1586F」Defender of Childhood Dreams

    \(\mathcal{Description}\)   Link.   定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarr ...

  6. Solution -「CF 1237E」Balanced Binary Search Trees

    \(\mathcal{Description}\)   Link.   定义棵点权为 \(1\sim n\) 的二叉搜索树 \(T\) 是 好树,当且仅当: 除去最深的所有叶子后,\(T\) 是满的: ...

  7. Solution -「CF 623E」Transforming Sequence

    题目 题意简述   link.   有一个 \(n\) 个元素的集合,你需要进行 \(m\) 次操作.每次操作选择集合的一个非空子集,要求该集合不是已选集合的并的子集.求操作的方案数,对 \(10^9 ...

  8. Solution -「CF 1023F」Mobile Phone Network

    \(\mathcal{Description}\)   Link.   有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...

  9. Solution -「CF 599E」Sandy and Nuts

    \(\mathcal{Description}\)   Link.   指定一棵大小为 \(n\),以 \(1\) 为根的有根树的 \(m\) 对邻接关系与 \(q\) 组 \(\text{LCA}\ ...

随机推荐

  1. spring boot --- 注解 @Bean 和@Component

    1.前言 @Bean是给方法注册bean @Component是给不好归类的类注册bean 2.可以达到一样的效果 (1)@Component 直接注册即可 完整源码 package com.exam ...

  2. PPT制作手机滑动效果

    原文链接: https://www.toutiao.com/i6495341287196066317/ 我们添加一个手机图片 选择"插入"选项卡,插入两条直线,如下图所示.插入直线 ...

  3. mysql-5.7.20-winx64安装图解教程

    原文链接:https://www.toutiao.com/i6494052843912167949/ 将安装包解压 解压目录 鼠标右键"我的电脑",弹出"快捷菜单&quo ...

  4. 运行flutter-填坑之旅

    运行flutter; 1.有一个问题,解决了好长时间 如果你安装了IntelliJ IDEA 2017.2.7 x64,运行flutter的时候报错,是因为IntelliJ IDEA 2017.2.7 ...

  5. Redis之持久化方式详解

    背景:Redis之所以能够在技术革新发展迅速的时代超越Memcache等其他Nosql数据库,最主要的一点是Redis提供数据持久化,能够根据持久化策略将缓存数据灵活的写到磁盘上,更好地满足了当下海量 ...

  6. fluem读取文件并写入到hadoop的hdfs

    接上一章,本章介绍使用 crontab 像指定文件定时写入,使用fluem 读取并写入到hadoop的hdfs 前提准备已安装好fluem ,和hadoop(推荐单机即可毕竟做实验) 一.进入终端执行 ...

  7. 收到西门子发来的UG告知函怎么办?Solidworks盗版被查如何防范?厂商是怎么样查到公司在用盗版,有什么方法可以核实真假?……

    收到西门子发来的UG告知函怎么办?Solidworks盗版被查如何防范?厂商是怎么样查到公司在用盗版,有什么方法可以核实真假?--很多企业信息化管理leader或者老板都希望能够通过一些取巧的办法来防 ...

  8. 字节一面:事务还没提交的时候,redolog 能不能被持久化到磁盘呢?

    又是被自己菜醒的一天,总结面经看到这题目听都没听过,打开百度就像吃饭一样自然 老规矩,背诵版在文末.点击阅读原文可以直达我收录整理的各大厂面试真题 首先,咱需要明白的是,啥是持久化? 听起来高大上,换 ...

  9. 动态多条件mysql模糊查询

    sql拼接函数 public static String Instructor_sql_whole_study(String[] val_ids,String[] val_values) { Stri ...

  10. Docker安装配置mysql

    Docker安装mysql踩坑日记 拉取镜像 sudo docker pull mysql:5.7 运行镜像 docker run -p 3306:3306 --name mysql -v /myda ...