CF1137C Museums Tour(tarjan+DP)
由于d很小,所以可以把每个点拆成d个点,然后对于边(x,y),连边时连接((x,i),(y,i+1))及((x,d),(y,1))。然后可以对这样连的边跑一遍tarjan缩点。然后直接暴力DP即可。不过当时比赛时不知道为什么一直写挂然后掉分了,后来发现用vector特别占用内存,要改成邻接表写。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
struct edge{int v,nxt;}e1[N*],e2[N*];
int n,m,d,tot,top,scc,cnt,hd1[N*],hd2[N*],val[N*],bel[N*],dfn[N*],low[N*],has[N*],q[N*],f[N*];
char str[];
void add1(int x,int y){e1[++cnt]=(edge){y,hd1[x]},hd1[x]=cnt;}
void add2(int x,int y){e2[++cnt]=(edge){y,hd2[x]},hd2[x]=cnt;}
void tarjan(int u)
{
dfn[u]=low[u]=++tot;
q[++top]=u;
for(int i=hd1[u];i;i=e1[i].nxt)
if(!dfn[e1[i].v])tarjan(e1[i].v),low[u]=min(low[u],low[e1[i].v]);
else if(!bel[e1[i].v])low[u]=min(low[u],dfn[e1[i].v]);
if(low[u]==dfn[u])
{
scc++;
int now=;
while(now!=u)now=q[top--],bel[now]=scc;
}
}
int dfs(int u)
{
if(f[u]!=-)return f[u];
f[u]=;
for(int i=hd2[u];i;i=e2[i].nxt)f[u]=max(f[u],dfs(e2[i].v));
return f[u]+=val[u];
}
int main()
{
scanf("%d%d%d",&n,&m,&d);
for(int i=,x,y;i<=m;i++)
{
scanf("%d%d",&x,&y);
for(int j=;j<d;j++)add1(x+(j-)*n,y+j*n);
add1(x+(d-)*n,y);
}
for(int i=;i<=n*d;i++)if(!dfn[i])tarjan(i);
cnt=;
for(int i=;i<=n*d;i++)
for(int j=hd1[i];j;j=e1[j].nxt)
if(bel[i]!=bel[e1[j].v])add2(bel[i],bel[e1[j].v]);
for(int i=;i<=n;i++)
{
scanf("%s",str+);
for(int j=;j<=d;j++)
if(str[j]==''&&has[bel[i+(j-)*n]]!=i)
has[bel[i+(j-)*n]]=i,val[bel[i+(j-)*n]]++;
}
memset(f,-,sizeof f);
printf("%d",dfs(bel[]));
}
CF1137C Museums Tour(tarjan+DP)的更多相关文章
- CF1137C Museums Tour(Tarjan,强连通分量)
好题,神题. 题目链接:CF原网 洛谷 题目大意: 一个国家有 $n$ 个城市,$m$ 条有向道路组成.在这个国家一个星期有 $d$ 天,每个城市有一个博物馆. 有个旅行团在城市 $1$ 出发,当天是 ...
- SHOI2008仙人掌图(tarjan+dp)
Solution 好题啊没的说. 本题需要求出仙人掌的直径,但仙人掌是一个带有简单环的一张图无法直接用树形dp求解,但它有一个好东西就是没有类似环套环的东西,所以我们在处理时就方便了一些. 思路:ta ...
- USACO 6.5 Betsy's Tour (插头dp)
Betsy's TourDon Piele A square township has been divided up into N2 square plots (1 <= N <= 7) ...
- POJ 1739 Tony's Tour(插头DP)
Description A square township has been divided up into n*m(n rows and m columns) square plots (1< ...
- UVA 1347"Tour"(经典DP)
传送门 参考资料: [1]:紫书 题意: 欧几里得距离???? 题解: AC代码: #include<bits/stdc++.h> using namespace std; ; int n ...
- ACdreamOJ 1154 Lowbit Sum (数字dp)
ACdreamOJ 1154 Lowbit Sum (数位dp) ACM 题目地址:pid=1154" target="_blank" style="color ...
- 「SDOI2016」储能表(数位dp)
「SDOI2016」储能表(数位dp) 神仙数位 \(dp\) 系列 可能我做题做得少 \(QAQ\) \(f[i][0/1][0/1][0/1]\) 表示第 \(i\) 位 \(n\) 是否到达上界 ...
- 【HDU1693】Eat the Trees(插头dp)
[HDU1693]Eat the Trees(插头dp) 题面 HDU Vjudge 大概就是网格图上有些点不能走,现在要找到若干条不相交的哈密顿回路使得所有格子都恰好被走过一遍. 题解 这题的弱化版 ...
- 【BZOJ1814】Ural 1519 Formula 1 (插头dp)
[BZOJ1814]Ural 1519 Formula 1 (插头dp) 题面 BZOJ Vjudge 题解 戳这里 上面那个链接里面写的非常好啦. 然后说几个点吧. 首先是关于为什么只需要考虑三进制 ...
随机推荐
- 在swift调用OC的第三方库
https://www.jianshu.com/p/4799ac1d7dce 2017.06.02 23:55* 字数 275 阅读 1619评论 0喜欢 3 环境:xcode 8.3.2 系统: M ...
- ..\OBJ\CAN.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.
..\OBJ\CAN.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __ma ...
- 基于百度语音识别API的Python语音识别小程序
一.功能概述 实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能. 在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换. 工作示例: 二.软件环境 操作系统 ...
- python clickZan
import pyautogui,time,random pyautogui.PAUSE = 3 pyautogui.FAILSAFE = True width, height = pyautogui ...
- 9.1hadoop 内置计数器、自定义枚举计数器、Streaming计数器
1.1 计数器 计数器的作用是用来统计数量的,用于记录特定事件的次数,分为内置计数器.自定义java枚举计数器.自定义Stream计数器三大类.用于质量分析,或应用级统计.分析计数器的值比分析一堆日 ...
- 2020牛客寒假算法基础集训营4 H坐火车
题目描述 牛牛是一名喜欢旅游的同学,在来到渡渡鸟王国时,坐上了颜色多样的火车. 牛牛同学在车上,车上有 n 个车厢,每一个车厢有一种颜色. 他想知道对于每一个正整数 $ x \in [1,\ n] $ ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 数据类型
MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这 ...
- SQL基础教程(第2版)第2章 查询基础:2-2 算数运算符和比较运算符&2-3 逻辑运算符
● 包含NULL的运算,其结果也是NULL. ● 判断是否为NULL,需要使用IS NULL或者IS NOT NULL运算符. ■算术运算符 ■需要注意NULL ■比较运算符 这些比较运算符可以对字符 ...
- Git 报错:Updates were rejected because the tip of your current branch is behind
刚开始学习 git 命令,发现会出现很多的错误,所以就总结下出现的错误,以此来加深理解和掌握吧! 环境:在本地库操作了一系列的 add 和 commit 操作后,想把本地仓库推送到远端,但是发生以下错 ...
- Scanner方式输入小写字母转换成大写字母
import java.util.Scanner; /** * 小写字母转换成大写字母 * @author zzu119 * */ public class letterTransfe ...