luogu P2194 HXY烧情侣
残忍的题面
我们来看这一道题,其实冗长的题目告诉我们一个核心——用tarjan
tarjan是用来干什么呢?是用来求强连通分量(代码中指sc)
求出来又有什么用呢?每当我们求出一个强连通分量时,就去计算当前强连通分量中各点最小值是多少以及其个数
然后分别开两个计数器,假设ans1是用来存个数相乘,ans2是用来累加最小值的。
临门一脚,千万别忘了取% 另外注意如果小伙伴这样和我一样写tarjan的话
for(int i=head[x];i!=-;i=e[i].next)
一定记住,在main函数里要
memset(head,-,sizeof(head));
(看本蒟蒻的代码,大神勿喷)
#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9+;
#define ll long long
#define inf 1e9
const int N = ;
const int M = ;
int head[M],v[M],dfn[M],low[M],q[M];
int be[M],sum[M],hh[M],num[M];
int ss,n,m,now,cnt,tot,sc;
ll ans1=,ans2;
bool f[N];
struct Edge{
int to,next;
}e[N];
void add(int x,int y)
{
e[++ss].to=y;
e[ss].next=head[x];
head[x]=ss;
}
void dfs(int x)//这里的dfs和下面tarjan分着写的,不管怎样都是tarjan模板
{
low[x]=dfn[x]=++cnt;
q[++tot]=x;
f[x]=;
for(int i=head[x];i!=-;i=e[i].next)
{
if(!dfn[e[i].to])
{
dfs(e[i].to);
low[x]=min(low[x],low[e[i].to]);
}
else
if(f[e[i].to])
low[x]=min(low[x],dfn[e[i].to]);
}
if(low[x]==dfn[x])
{
sc++;
be[x]=sc;
hh[sc]=inf;
do
{
now=q[tot--];
f[now]=;
be[now]=sc;
if(v[now]<hh[sc])
{
hh[sc]=v[now];
num[sc]=;
}
if(v[now]==hh[sc]) num[sc]++;
}
while(now!=x);
}
}
void tarjan()
{
for(int i=;i<=n;i++)
if(!dfn[i]) dfs(i);
}
int main()
{
memset(head,-,sizeof(head));
cin>>n;
for(int i=;i<=n;i++)
cin>>v[i];
cin>>m;
for(int i=;i<=m;i++)
{
int x,y;
cin>>x>>y;
add(x,y);
}
tarjan();
for(int i=;i<=sc;i++)//最后的处理,ans1别忘初值为1
{
ans1*=num[i];
ans2+=hh[i];
ans1%=mod;
}
cout<<ans2<<" "<<ans1;
return ;
}
luogu P2194 HXY烧情侣的更多相关文章
- 【luogu P2194 HXY烧情侣】 题解
题目链接:https://www.luogu.org/problemnew/show/P2194 第一问:缩点并且统计其强连通分量里的最小耗费.把所有强连通分量的最小耗费加起来. 第二问:统计在每个强 ...
- 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码
洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...
- 洛谷P2194 HXY烧情侣
题目描述 众所周知,\(HXY\)已经加入了\(FFF\)团.现在她要开始喜\((sang)\)闻\((xin)\)乐\((bing)\)见\((kuang)\)地烧情侣了.这里有\(n\)座电影院, ...
- P2194 HXY烧情侣【Tarjan】
前言 当时和\(GYZ\)大佬一起做这个题,他表示这个题对他很不友好(手动滑稽) 题目描述 众所周知,\(HXY\) 已经加入了 \(FFF\) 团.现在她要开始喜(sang)闻(xin)乐(bing ...
- HXY烧情侣(洛谷 2194)
题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...
- HXY烧情侣
题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...
- 洛谷P2194 【HXY烧情侣】
首先请允许我吐槽一下这个题面 这个题面透露出血腥与暴力,电影院里还藏汽油 所以情侣们,要是想看电影就在家里看吧 毕竟出来容易被烧 在家里看虽然观影效果不如在电影院里 但是, 起码咱生命安全啥的有保障啊 ...
- 【luogu P2195 HXY造公园】 题解
题目链接:https://www.luogu.org/problemnew/show/P2195 fir.吐槽题目(省略1w字 sec.考虑对一个森林的维护,每棵树用并查集维护. 操作1:输出当前查询 ...
- 洛谷P2194HXY烧情侣
传送门啦 这个题可以说是tarjan强连通分量的裸题,但需要维护每个强连通分量的最小值,所以做法就很明确了. 我们先明确几个数组的意思: 1.首先是tarjan缩点中的几个数组: dfn[i]:i点的 ...
随机推荐
- winform注册功能
注册按钮事件: private void btnRegister_Click(object sender, EventArgs e) { string username = txtUserName.T ...
- 什么是5G,看了这篇文章你就彻底懂了
人类已经经历了六次信息技术革命为: 第一次:语言的使用 让信息可以分享 第二次:文字的创造 让信息可以记录 第三次:印刷术的发明 让信息可以传得更远 第四次:无线电的发明 让信息可以远距离实时传输 第 ...
- oracle学习笔记(六) JDBC使用
JDBC使用 1. 导包 直接使用IDEA导入依赖包即可 新建一个lib,把jar包放在这里 2. 加载驱动 Class.forName("oracle.jdbc.driver.Oracle ...
- WEB前端需要了解的XML相关基础知识
什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...
- asp.net mvc 5发布部署遇到403.14
asp.net mvc 5发布部署遇到403.14? HTTP错误 403.14 服务器配置为不列出此目录内容 除了设置.net运行的权限 isap和cgi启动状态外.可能是因为你手贱. 将这个钩去掉 ...
- Android com.daimajia.slider.library.SliderLayout 去掉底部半透明标题背景
com.daimajia.slider.library.SliderLayout 是挺好用的轮播图控件,但是底部灰色背景有时候用不到,所以得去掉. sliderLayout.setCustomAnim ...
- 【Linux】【MySQL】CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行)
1.前言 框框博客在线报时:2018-11-07 19:31:06 当前MySQL最新版本:8.0.13 (听说比5.7快2倍) 官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MyS ...
- 线上centos6出现软死锁 kernel:BUG: soft lockup
线上centos6出现软死锁 kernel:BUG: soft lockup 今天线上一台centos6机器用xshell一直连接不上,然后在xshell上显示 Message from syslog ...
- Jar 初步
前言 jar 是 java 文件中一种文件格式,用于将 .java 文件编译的字节码文件打包成 jar. 给 Java 应用打包 1. 新建一个 java 源文件 package cn.szxy; p ...
- Java集合框架体系JCF
Java 集合框架体系作为Java 中十分重要的一环, 在我们的日常开发中扮演者十分重要的角色, 那么什么是Java集合框架体系呢? 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一 ...