第一看还以为是水题

随便打了一个bfs只有40分……

然后开始颓废

#include<bits/stdc++.h>
#define N 100005
using namespace std;
int nxt[N];
bool vis[N];
void bfs(int x)
{
memset(vis, , sizeof(vis));
queue<int>q;
q.push(x);
vis[x] = true;
int cnt = ;
while (!q.empty())
{
int now = q.front();
if (vis[nxt[now]] == true)
{
printf("%d\n", cnt);
return;
}
else {
q.pop();
q.push(nxt[now]);
cnt++;
vis[nxt[now]] = true;
}
}
}
int main()
{
int n; scanf("%d", &n);
for (int i = ; i <= n; i++)
{
scanf("%d", &nxt[i]);
}
for(int i=;i<=n;i++)
bfs(i);
}

垃圾代码

然后在水社区的时候

看到一个当时和我一起打这道题的网友@Frozencode (貌似是位大佬)提到这道题

一开始没怎么想写博客的

但是现在还是写吧

思路

之前是bfs,想用记忆化很难实现(我这个蒟蒻没打出来,大佬见笑了)

一开始想储存到一个点的需要的步骤储存下来

但是bfs会一直更新,不能那么草率地使用啊

然后看tag是DP?我不会DP

于是颓废的我点开了题解

题解一个是玄学模拟。我不会模拟

然后大神们很多写的Tarjan。为了试图看懂大佬的代码,我甚至想去学tarjan。但是我不会tarjan。

无奈之下,我还是回归开始的搜索,但是打dfs。

结果过了……

代码

献丑了

VS的码风

#include<bits/stdc++.h>
#define N 100005
using namespace std;
int n,x,to[N],rd[N],w[N],dep[N],mk[N];
char vis[N], ins[N];
int dfs(int x);
int main()
{
scanf("%d", &n);
for (int i = ; i <= n; ++i)
scanf("%d",&to[i]),++rd[to[i]];
for (int i = ; i <= n; ++i)
if (!rd[i]) w[i] = , dfs(i);
for (int i = ; i <= n; ++i)
if (!vis[i]) dfs(i);
for (int i = ; i <= n; ++i)
printf("%d\n",w[i]);
return ;
}
int dfs(int x)
{
int t = to[x]; vis[x] = ins[x] = ;
if (!vis[t])
{
dep[t] = dep[x] + ;
w[x] = dfs(t);
w[x] += (mk[t] ? (mk[x] = (mk[x] != ? : ), ) : );
}
else
if (ins[t])
w[x] = dep[x] - dep[t] + , mk[x] = , mk[t] = (x == t ? : );
else
w[x] = w[t] + ;
ins[x] = ;
return w[x];
}

想睡觉了……因此不多解释了

现在23:11

思路也大多数是看题解的

我去找找……

找到了

这位大神的https://www.luogu.org/blog/backupnoob/solution-p2921

虽然压行可读性低,但是基本可以看懂

(说白了吧,我抄题解的……)

深深感觉到自己的弱小

[P2921][USACO08DEC]在农场万圣节Trick or Treat on the Farm (记忆化搜索/DP?,Tarjan?)的更多相关文章

  1. P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索dfs

    题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...

  2. LGOJ P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    今天我来给大家带来一片蒟蒻题解 ~~真香 LGOJ P2921  [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题目描述 每年,在威斯康星州,奶牛们都会穿上 ...

  3. P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(Tarjan+记忆化)

    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N< ...

  4. 洛谷——P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N< ...

  5. C++ 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题解

    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 分析: 这棵树上有且仅有一个环 两种情况: 1.讨论一个点在环上,如果在则答案与它指向点相同, 2 ...

  6. 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...

  7. P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    对于一个牛,它存在两种状态:1.处于联通分量 2.不处于联通分量.对于处于联通分量的牛,求出联通分量的大小:对于不处于联通分量的牛,求出其距离联通分量的路程+联通分量大小. 不同的联通分量,染上不同的 ...

  8. [洛谷P2921][USACO08DEC]在农场万圣节Trick or Treat on the Farm

    题目大意:给你一张有向图,每个点最多一条出边,问从每个开始,走多少步会到一个已经过的点 题解:$tarjan$缩点,然后建反图$DP$ 卡点:无 C++ Code: #include <cstd ...

  9. LUOGU P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    传送门 解题思路 记忆化搜索,如果搜到环,就将环的大小处理出来. 代码 #include<iostream> #include<cstdio> #include<cstr ...

随机推荐

  1. 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  2. MyBatis - 4.动态SQL

    动态 SQL是MyBatis强大特性之一.极大的简化我们拼装SQL的操作. 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似. MyBatis 采用功能强大的基于 OGNL ...

  3. mysql如何添加一个表的外键

    1:创建一个父表,主键作为子表的外键: create table province( pId int primary key auto_increment, pName varchar() ); 2: ...

  4. [转] babel 教程

    在前端开发领域,浏览器兼容性问题从来不曾消失.除了 CSS,我们还要面对 JavaScript 的兼容性问题. 不同的浏览器讲着不同的 JavaScript 语言,不同的浏览器版本同样讲着不同的 Ja ...

  5. uva 1232

    题意: 建筑物在多长的部分是最高的成为该建筑物的覆盖度.求所有建筑物的覆盖度之和. 链接: https://vjudge.net/contest/202699#problem/E 题解: 这道题还是挺 ...

  6. HTML LIST 输入框自动查询追加框,自动过滤 HTML5

    <!DOCTYPE HTML> <html> <body> <form action="/example/html5/demo_form.asp&q ...

  7. TypeScript学习笔记 (一)基础特性

    一. 字符串新特性 1. 多行字符串 var str = ``; 2. 字符串模板 var world = "world"; var str = `hello ${world}`; ...

  8. JavaScript 组数去重demo

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. NOI2018Day1T1 归程 并查集 kruskal kruskal重构树 倍增表 Dijkstra

    原文链接https://www.cnblogs.com/zhouzhendong/p/NOI2018Day1T1.html 题目传送门 - 洛谷P4768 题意 给定一个无向连通图,有 $n$ 个点 ...

  10. php防攻击

    客户端脚本植入 XSS跨站脚本攻击(跨站脚本攻击,输入(传入)自动执行恶意的HTML代码,如盗取用户Cookie.破坏页面结构.重定向到其它网站):过滤<,>&,"等特殊 ...