P2194 HXY烧情侣(tarjan&组合数学)

显然就是对每个强连通分量 找到费用最小的点的个数。

∏ c n t w m i n i \prod{cnt_{w_{min_i}}} ∏cntwmini​​​ 就是答案。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e5+5,M=3e5+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){for(int i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[n]);
}
template <typename T>     //x=max(x,y)  x=min(x,y)
void cmx(T &x,T y){if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){if(x>y) x=y;
}
//tarjan O(n+m)
int n,m,h[N],cnt;
int dfn[N],low[N],id,vis[N];
int w[N];
//bool cut[N]; judge cut point
stack<int>s;
struct edge{int to,nt;
}e[M];
void add(int u,int v){e[++cnt]={v,h[u]},h[u]=cnt;
}
ll ans,res=1;
void dfs(int u){low[u]=dfn[u]=++id;vis[u]=1;s.push(u);//int son=0;for(int i=h[u];i;i=e[i].nt){int v=e[i].to;if(!dfn[v]){dfs(v);low[u]=min(low[u],low[v]);//if(low[v]>=dfn[u]) cut[u]=1;}else if(vis[v]) low[u]=min(low[u],dfn[v]);}if(dfn[u]==low[u]){    //shrink pointvis[u]=0;int mn = w[u];int js = 1;while(s.top()!=u){if(mn > w[s.top()]){mn = w[s.top()];js = 1;}else if(mn == w[s.top()]){js++;}vis[s.top()]=0;s.pop();}ans+=mn;res=res*js%mod;s.pop();}//if(u==rt&&son==1) cut[u]=0;
}
int main(){scanf("%d",&n);rep(i,1,n) scanf("%d",&w[i]);scanf("%d",&m);rep(i,1,m){int u,v;scanf("%d%d",&u,&v);add(u,v);}rep(i,1,n) if(!dfn[i]) dfs(i);printf("%lld %lld\n",ans,res);return 0;
}

P2194 HXY烧情侣(tarjan组合数学)相关推荐

  1. 2019.2-2019.3 TO-DO LIST

    DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...

  2. 2018年12月18日

    今日小结:今天主要复习的是tarjan,学习了割点等知识点,掌握缩点和割点了基本题型,总体来说还算不错,明天准备复习LCA和负环. 一. 今日完成的题目: 洛谷P1407,洛谷P2746,洛谷P338 ...

  3. 【题解】 P4921 【情侣?给我烧了!】(数学,组合数学)

    [题解] P4921 [情侣?给我烧了!] 这题加强版能有黑我把电脑吃了 写一篇题解来纪念一下我的首黑(?). 记得在首蓝和首紫的时候我也确实是写了一篇题解作为纪念. 其实我也不知道我咋 A 掉这玩意 ...

  4. 【洛谷 P4921】—情侣?给我烧了!(加强版)(容斥+组合数学)

    传送门 接着之前的思路继续推 瓶颈在于预处理f(n)f(n)f(n) 考虑化一下 f(n)=∑j=0n(−1)j1j!2j1(n−j)!2(2n−2j)!=1n!2∑j=0n(−1)jj!2j(nj) ...

  5. 【Luogu4921】情侣?给我烧了!(组合计数)

    [Luogu4921]情侣?给我烧了!(组合计数) 题面 洛谷 题解 很有意思的一道题目. 直接容斥?怎么样都要一个平方复杂度了. 既然是恰好\(k\)对,那么我们直接来做: 首先枚举\(k\)对人出 ...

  6. Luogu4921/4931 情侣?给我烧了! 组合、递推

    4921 4931 第一眼看着就像容斥,但是容斥不怎么好做-- 第二眼想到错排,结果错排公式糊上去错了-- 不难考虑到可以先选\(K\)对情侣坐在一起,剩下\(N-K\)对错排 选\(K\)对情侣坐在 ...

  7. P4921 [MtOI2018]情侣?给我烧了!

    题目: 给定nnn排座位,每排两个座位,现在有nnn对情侣,当一对情侣并排坐着的时候,认为他们是和睦的,问对于∀k∈[0,n]\forall k \in [0,n]∀k∈[0,n],问有kkk对情侣和 ...

  8. luogu P4921 [MtOI2018]情侣?给我烧了! 加强版

    https://www.luogu.com.cn/problem/P4921 设f(n,k)表示从n对情侣中恰好k对情侣和谐的情况设f(n, k)表示从n对情侣中恰好k对情侣和谐的情况设f(n,k)表 ...

  9. P4921 情侣?给我烧了!

    题目描述 有 n 对情侣来到电影院观看电影.在电影院,恰好留有 n 排座位,每排包含 2 个座位,共 2×n 个座位. 现在,每个人将会随机坐在某一个位置上,且恰好将这 \(2 × n\) 个座位坐满 ...

最新文章

  1. mplus 软件_Mplus 7.4 软件及代码
  2. KubeSphere 使用外置 Jenkins
  3. 04机器学习实战之朴素贝叶斯
  4. 【剑指offer】面试题57 - II:和为s的连续正数序列(Java)
  5. 我的docker随笔3:实现加速器,加快拉取镜像速度
  6. 频繁项目集java实现_关联分析(2):Apriori产生频繁项集
  7. jdbc 链接不了mysql_JDBC链接Mysql失败
  8. pycharm初始配置
  9. 相机标定:从世界坐标系到图像像素坐标系转换过程解析
  10. 利用手机距离感应器来切换是用扬声器听音乐还是听筒听音乐
  11. 解决百度云管家导入未完成下载任务
  12. cf 949A Zebras
  13. Maven的安装、配置及使用入门
  14. pytorch中的collate_fn 是什么作用
  15. 一文学会查看OSPFv3 LSDB
  16. 通过反编译分析骑砍2俘虏招募机制
  17. AJAX基础电子教程
  18. 数组求前n项和 和 求中间n项和 学习记录
  19. 2021年昆明师专附中高考成绩查询,云南省昆明市云南师范大学附属中学2020-2021学年高三高考适应性月考卷(一)语文试题...
  20. 磁盘管理——RAID 0

热门文章

  1. BioCreative比赛:Track2:PubMed文章中的NLM-CHEM全文化学识别(NER)、实体链接(EL)和标引(indexing)
  2. 因换系统 scp 无法使用了,已经解决
  3. R语言绘图 | geom_bar()使用示例
  4. 12.Mave面试题
  5. selenium 切换标签页解决 get 超时问题
  6. vue父子之间传值 子组件向父组件传值或父组件向子组件传值
  7. 23种设计模式(通俗易懂,白话翻译)
  8. 基于Vue+ElementUI的大数据分析前后端分离框架
  9. 看完这个就会Flowable了
  10. html语言代码序列中主要包含标记和信息,2011全国一级计算机选择题整理练习