CF1428B题解
打比赛的时候sb了,用了一个似乎原本可以不用的东西来找环。。。
首先,根据题意,我们可以连成一张图,而蛇能不能回到自己的家, 只需要在一个环上就行了。
问题是怎么找环,我用了 Tarjan。。。
具体做法是每个强连通的大小如果不为 \(1\),就把这个强连通的大小计入答案。
还有就是记得清空。
code:
#include<cstdio>
const int M=3e5+5;
struct Edge{
int to;Edge*nx;
}e[M<<1],*h[M],*cnt=e;
int n,ans,dfc,top,is[M],stk[M],low[M],dfn[M];
inline void Add(const int&u,const int&v){
*cnt=(Edge){v,h[u]};h[u]=cnt++;
}
inline int min(const int&a,const int&b){
return a>b?b:a;
}
void Tarjan(int u){
is[stk[++top]=u]=true;
low[u]=dfn[u]=++dfc;
for(Edge*E=h[u];E;E=E->nx){
int v=E->to;
if(!dfn[v]){
Tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(is[v])low[u]=min(low[u],dfn[v]);
}
if(low[u]==dfn[u]){
int v,siz=0;
do is[v=stk[top--]]=0,++siz; while(v!=u);
if(siz>1)ans+=siz;
}
}
signed main(){
int T,i;char s;
scanf("%d",&T);
while(T--){
scanf("%d",&n);getchar();
for(i=1;i<=n;++i){
h[i]=NULL;
low[i]=dfn[i]=0;
}
top=dfc=ans=0;
for(i=1;i<=n;++i){
s=getchar();
if(s=='<')Add(i%n+1,i);
else if(s=='>')Add(i,i%n+1);
else Add(i,i%n+1),Add(i%n+1,i);
}
getchar();
for(i=1;i<=n;++i)if(!dfn[i])Tarjan(i);
printf("%d\n",ans);
}
}
CF1428B题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- NSMutableString基本概念
1.NSMutableString 基本概念 NSMutableString 类 继承NSString类,那么NSString 供的方法在NSMutableString中基本都可以使用,NSMutab ...
- 解决sublime代码不提示的问题
如果想让sublime在你输入标签的过程中给你提示,需要按要求开启以下功能. 1.开启代码自动提示功能
- go基础——切片slice
package main import "fmt" /* 切片: 不定长的数组,是引用类型的数据,指向一个底层数组. */ func main() { //切片的创建和访问 var ...
- 理解ASP.NET Core - 基于JwtBearer的身份认证(Authentication)
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 在开始之前,如果你还不了解基于Cookie的身份认证,那么建议你先阅读<基于Cookie ...
- VMware中Ubuntu18配置静态IP地址
1. VMware:编辑 -> 虚拟网络编辑器 -> 更改设置 2. 取消选中:使用本地DHCP服务将IP地址分配给虚拟机,并记住子网ip 3. 点击NAT设置,记住网关地址 正常情况下V ...
- 3.HTTP协议详解
### Web核心+HTTP协议 准备工作:XAMPP+PhpWindd+Aglieone HTTP协议简介 HTTP请求 最常用请求 GET请求获取URL所标识的资源 POST请求在URL所标识的资 ...
- swoole错误“Uncaught Error: Class 'swoole_server' not found”的解决办法
如果你在执行swoole对应文件时,报下面的错误, PHP Fatal error: Uncaught Error: Class 'swoole_server' not found in /mnt/w ...
- Solution -「集训队作业 2013」「洛谷 P4841」城市规划
\(\mathcal{Description}\) link. 求 \(n\) 个结点的简单无向连通图个数,对 \(1004535809~(479\times2^{21}+1)\) 取模. ...
- Spring Boot AOP 扫盲,实现接口访问的统一日志记录
AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层 ...
- [LeetCode]1342. 将数字变成 0 的操作次数
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数. 如果当前数字是偶数,你需要把它除以 2 :否则,减去 1 . 示例 1: 输入:num = 14 输出:6 解释: 步骤 1) 14 ...