题目:
https://atcoder.jp/contests/agc049/tasks/agc049_a

给你一个有向图,每次操作随机选一个点,删除该点并且删除所有该点能够到达的点。删除点的时候也要删除和点关联的边。求操作次数的期望。

思路:
首先缩点,因为同一个强连通分量里面的点是等价的,然后就是一个有向无环图删点操作。参考托米的游戏,每一个连通分量的贡献为
该 连 通 分 量 的 大 小 所 有 能 够 到 达 该 连 通 分 量 的 大 小 的 和 \quad \\ \frac{该连通分量的大小}{所有能够到达该连通分量的大小的和} 所有能够到达该连通分量的大小的和该连通分量的大小​
注意: 算分母的时候反向建图 d p dp dp,但 d p dp dp保存的不是直接的答案而是一个 s e t set set,存能够到达的点的集合。不然会算重复。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=10009;
struct node {set<int>q;
} d[N];
int n,ins[N],c[N],dfn[N],low[N],num,cnt=0;
double ans=0;
vector<int>w[N],w1[N],scc[N];
stack<int>st;
set<int>q;
void Tarjan(int x) {dfn[x]=low[x]=++num;st.push(x),ins[x]=1;for(int i=0; i<w[x].size(); i++) {int y=w[x][i];if(!dfn[y]) {Tarjan(y);low[x]=min(low[x],low[y]);} else if(ins[y])low[x]=min(low[x],dfn[y]);}if(dfn[x]==low[x]) {cnt++;int y;do {y=st.top();st.pop();ins[y]=0;c[y]=cnt;w1[cnt].push_back(y);} while(x!=y);}
}
void dfs(int x) {d[x].q.insert(x);//每个缩点能够到达的点的集合int si=scc[x].size();for(int i=0; i<si; i++) {int y=scc[x][i];if(d[y].q.empty())dfs(y);for(set<int>::iterator it=d[y].q.begin(); it!=d[y].q.end(); it++)d[x].q.insert(*it);}
}
int main() {scanf("%d",&n);for(int i=1; i<=n; i++) {char a[N];scanf("%s",a+1);for(int j=1; a[j]!='\0'; j++)if(a[j]=='1')w[i].push_back(j);}for(int i=1; i<=n; i++)if(!dfn[i])num=0,Tarjan(i);for(int i=1; i<=n; i++)for(int j=0; j<w[i].size(); j++) {int x=w[i][j];if(c[i]==c[x])continue;scc[c[x]].push_back(c[i]);}for(int i=1; i<=cnt; i++) {if(d[i].q.empty())dfs(i);}for(int i=1;i<=cnt;i++){int res=0;for(set<int>::iterator it=d[i].q.begin(); it!=d[i].q.end(); it++)res+=w1[(*it)].size();ans+=(double)w1[i].size()/res;}printf("%.13lf",ans);return 0;
}
/*
4
0110
1001
0001
0010
*/

Erasing Vertices相关推荐

  1. AGC049 A - Erasing Vertices(概率期望)

    题意: 解法: 假设有c[i]个点可以到达点i, 那么一次操作中,点i被删除的概率为1/c[i], 那么点i会被删除的期望次数为1/c[i], 对答案的贡献也是1/c[i], 因此最后ans=sum( ...

  2. AtCoder Grand Contest 049 A - Erasing Vertices

    https://atcoder.jp/contests/agc049/tasks/agc049_a 概率期望构造一生之敌 对于每个点的贡献,就是所有能到达他的点都不能在他之前选,他就能贡献1 那么每个 ...

  3. 如何做好项目管理工作?

    很多项目进度很难把控,经常延期,怎么办?如何跟进整个项目的开发进度.项目测试及项目完成发布? 项目管理三要素:质量.成本和时间 开门见山,项目管理的三要素,是质量.成本和时间. 三要素的意义在于,他们 ...

  4. AGC 049 总结+ABCD题解

    AGC 049 总结+ABCD题解 比赛链接 赛况: 202 Gary{\color{Yellow} \textrm{Gary} }Gary 1800(4)187:231800 (4)\\187:23 ...

  5. 弱监督语义分割--Object Region Mining with Adversarial Erasing

    Object Region Mining with Adversarial Erasing: A Simple Classification to Semantic Segmentation Appr ...

  6. CodeForces - 1551F Equidistant Vertices(暴力+dp)

    题目链接:点击查看 题目大意:给出一棵 nnn 个节点组成的树,问选出 kkk 个节点满足相互之间距离相等的方案数有多少 题目分析:n=100n=100n=100,感觉数据范围越小的题目越难发现 ta ...

  7. 【2019浙江省赛 - A】Vertices in the Pocket(权值线段树下二分,图,思维)

    题干: DreamGrid has just found an undirected simple graph with  vertices and no edges (that's to say, ...

  8. 【图像数据增强】Mixup、Cutout、Random Erasing、CutMix、Mosaic等详解

    对于模型而言一般包含四个部分:输入.输出.网络结构.训练相关.如果想要改善模型,就可以从这四个部分入手. ● 输入:数据 --> Data Augmentation ● 输出:Loss相关 ● ...

  9. self-supervised text erasing with controllable image synthesis

    Scene Text Erasing综述和自己的思考 - 知乎最近在看关于Scene Text Erasing的论文,先在这挖一个坑,论文细节以后慢慢整理. 1 介绍场景文字消除(Scene Text ...

最新文章

  1. Python 自动化运维 pycurl
  2. linux fifo 视频,Linux FIFO学习
  3. JQuery EasyUI datagrid 复杂表头处理
  4. 两个摄像头自动切换画面_利用OBS虚拟摄像头实现假装开会
  5. 获取请求的url java_Java获取此次请求URL以及服务器根路径的方法
  6. 【炼数成金 NOSQL引航 三】 Redis使用场景与案例分析
  7. 不出来信号 quartus_男人一旦动了真情,会向你发出这6个“信号”不爱的人装不出来...
  8. CF 1174 D. Ehab and the Expected XOR Problem 异或技巧
  9. python脚本操作excel
  10. 非华为电脑安装华为电脑管家步骤
  11. 阿里云大学云学院 “人工智能” 专业重磅预售
  12. windows主机测评
  13. 大三实习生面试BAT经验
  14. 安全L2-1.4-安全术语介绍
  15. 日常生活收缩毛孔几个小妙招 - 生活至上,美容至尚!
  16. zoho邮箱收费和免费区别_使用Zoho Reports和XML在云中探索分析
  17. 最新无限制188旅游系统V7.0升级补丁 全社通V2.0补丁 Tourex 5.0源码下载
  18. android 备份管理器,最佳Android备份提取器和备份解决方案
  19. 锐龙r5 6600u和r5 5600u区别 r56600u和r55600u对比
  20. matlab 版 数独小游戏 GUI界面设计

热门文章

  1. idea手动打包Docker部署linux
  2. 2013.11.19
  3. Uboot1之什么是uboot?
  4. numpy不同方向3D转2D切片
  5. sinking current和sourcing current 区别
  6. Android之两级联动点餐列表
  7. STM32通信串口RS232
  8. 交换机与路由器与猫的区别与合作(带简单实例)
  9. 传球游戏_vijos1485
  10. 体面 用计算机弹调子,怎么把计算器调成音符