残忍的题面

我们来看这一道题,其实冗长的题目告诉我们一个核心——用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烧情侣的更多相关文章

  1. 【luogu P2194 HXY烧情侣】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2194 第一问:缩点并且统计其强连通分量里的最小耗费.把所有强连通分量的最小耗费加起来. 第二问:统计在每个强 ...

  2. 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码

    洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...

  3. 洛谷P2194 HXY烧情侣

    题目描述 众所周知,\(HXY\)已经加入了\(FFF\)团.现在她要开始喜\((sang)\)闻\((xin)\)乐\((bing)\)见\((kuang)\)地烧情侣了.这里有\(n\)座电影院, ...

  4. P2194 HXY烧情侣【Tarjan】

    前言 当时和\(GYZ\)大佬一起做这个题,他表示这个题对他很不友好(手动滑稽) 题目描述 众所周知,\(HXY\) 已经加入了 \(FFF\) 团.现在她要开始喜(sang)闻(xin)乐(bing ...

  5. HXY烧情侣(洛谷 2194)

    题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...

  6. HXY烧情侣

    题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...

  7. 洛谷P2194 【HXY烧情侣】

    首先请允许我吐槽一下这个题面 这个题面透露出血腥与暴力,电影院里还藏汽油 所以情侣们,要是想看电影就在家里看吧 毕竟出来容易被烧 在家里看虽然观影效果不如在电影院里 但是, 起码咱生命安全啥的有保障啊 ...

  8. 【luogu P2195 HXY造公园】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2195 fir.吐槽题目(省略1w字 sec.考虑对一个森林的维护,每棵树用并查集维护. 操作1:输出当前查询 ...

  9. 洛谷P2194HXY烧情侣

    传送门啦 这个题可以说是tarjan强连通分量的裸题,但需要维护每个强连通分量的最小值,所以做法就很明确了. 我们先明确几个数组的意思: 1.首先是tarjan缩点中的几个数组: dfn[i]:i点的 ...

随机推荐

  1. rabbitmq高级消息队列

    rabbitmq使用 什么是消息队列 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以很复杂,可以包含嵌入对象. 消息队列是一种应用间的通信方式,消息发送后 ...

  2. webpack4.x笔记-配置基本的前端开发环境(一)

    webpack的基本使用 webpack 本质上是一个打包工具,它会根据代码的内容解析模块依赖,帮助我们把多个模块的代码打包.借用 webpack 官网的图片: 虽然webpack4.x的版本可以零配 ...

  3. 小程序使用之WXS

    文章链接:https://mp.weixin.qq.com/s/F1zzS7mvMpFaplq4KINzQg 之前做过一段时间的小程序开发,自己也写过两个自己的小程序,了解些前端的知识,相对而言还是比 ...

  4. C#隐式转换与显示转换

    System.Objec时C#中所有类型的基类,也就是万类之源. 一.值类型 值类型都继承自System.ValueType(派生自System.Objec),继承自System.ValueType的 ...

  5. 微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异

    微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异 前言:由于开发人员要靠工具吃饭,可能和开发工具.语言.环境呆的时间比和老婆孩子亲人在一起的时间还多,所以每个人或多 ...

  6. JS的正则表达式及回文

    function palindrome(str) { str = str.replace(/\s/g,"").replace(/[^a-zA-Z0-9]/g,"" ...

  7. SqlServer如何给表添加新的字段以及字段注释

    语法: USE 数据库名ALTER TABLE 表名 ADD 字段名  类型  默认值  是否为空;EXEC sp_addextendedproperty N'MS_Description', N'注 ...

  8. leetcode题解-122买卖股票的最佳时期

    题目 leetcode题解-122.买卖股票的最佳时机:https://www.yanbinghu.com/2019/03/14/30893.html 题目详情 给定一个数组,它的第 i 个元素是一支 ...

  9. Git clone远程目录443:Timed out 问题(go get)

    现象: 在cmd中用go get -u github.com/kataras/iris   ,提示:443:Timed out 于是在 git bash 中   git clone https://g ...

  10. MacOS 的预览 Preview 打开pdf 容易卡死 解决方案

    MacOs 10.13.6 打开pdf之后容易卡死. 移动一下窗口之后就卡死了. 有时候等一会还能缓过来,有时候就缓不过来了. 只要执行下这个命令就可以了. sudo rm -rf ~/Library ...