基环树森林,然而我比较菜,直接tarjan找环。 发现缩点之后变成了DAG,每一个点往下走一定会走到一个环,缩点之后搜一遍看看会走到哪个环以及那个环的编号是多少,答案就是环的$siz$$ + $要走的路程。 比较垃圾的我忘记了判重边WA了好多发…… 时间复杂度$O(n)$。 Code: #inclu ...
分类:
其他好文 时间:
2018-09-06 02:31:26
阅读次数:
168
" 10030. 「一本通 1.4 练习 2」Keyboarding" 【题目描述】 给定一个 $r$ 行 $c$ 列的在电视上的“虚拟键盘”,通过「上,下,左,右,选择」共 $5$ 个控制键,你可以移动电视屏幕上的光标来打印文本。一开始,光标在键盘的左上角,每次按方向键,光标总是跳到下一个在该方向 ...
分类:
其他好文 时间:
2018-09-05 13:58:54
阅读次数:
206
题目链接 https://cn.vjudge.net/problem/UVA 10603 分析 经典的倒水问题,直接BFS. 对于喜闻乐见的状态判重,一开始想来个哈希函数把一个三元组映射成一个数,后面发现数据很小直接三维数组,后面又发现总水量是固定值,直接二维$bool$数组就好了 然后每次取出状态 ...
分类:
其他好文 时间:
2018-08-27 23:23:36
阅读次数:
275
注意到每次转移的代价都为一,于是爆搜即可。 这个题的难点在于状态的判重(大概)。 $1000 1000$ 的数据规模的话map有点勉强,更何况出题人专门出了卡map的数据(第11个点),所以map是无法通过此题的。 我们从状态入手。首先仔细读题,确定出如下状态: 考虑到每个状态只有4维,分别是 横坐 ...
分类:
其他好文 时间:
2018-08-22 00:12:47
阅读次数:
206
A - Ananagrams 题意:输入一定量的单词构成词典(区分大小写),从词典中找出符合条件的单词,条件:单词转换成小写字母排序后与词典其他经此操作的单词不同(描述有点乱)。 Thinking: 这个题我最开始的感觉是构造hash函数来判重,然后并没有构造(查到)可以操作的函数,再然后就不会做了 ...
分类:
其他好文 时间:
2018-08-18 00:45:01
阅读次数:
174
终于学到了欧拉函数,咳出血。 有一个前置题目: "P1170 兔八哥和猎人" 。 上面这道题目问你平面上的两个点是否能够无阻碍地相互看见。 答案是横坐标差绝对值与纵坐标差绝对值,这两个数 互质 ! 所以这道题也差不多,能看见的也只有互质的。 但是$N \leq 40000$,每个点算出gcd再判重好 ...
分类:
其他好文 时间:
2018-08-15 14:49:45
阅读次数:
120
bfs的难点在于怎么去表示一个问题的状态【也就是如何去判重】 记得用priority_queue的时候如果往里面放node,自己重载小于号的形式是在struct里写: 【记得要写const】 ...
分类:
其他好文 时间:
2018-07-27 01:13:14
阅读次数:
178
我们知道,BFS是往广处去搜索,我们把这想象成一个以起点为圆心的一个圆,每向前走一步,就是圆的半径增大一个单位,而圆的每个单位面积上是一种状态,当圆增大到目标点那么大时,找到了答案,搜索结束。那么显然的,当半径较大时,每走一步就会有十分大量的状态需要来储存( S=πr2 )。通常的,我们用“判重”的 ...
分类:
其他好文 时间:
2018-07-15 00:13:45
阅读次数:
141
本题有写法好几个写法,但主要思路是BFS: No。1 采用双向宽搜,分别从起始态和结束态进行宽搜,暴力判重。如果只进行单向会超时。 No。2 采用hash进行判重,宽搜采用单向就可以AC。 No。3 运用康拓展开进行判重,即使采用单向宽搜时间效率也很高。 ...
分类:
其他好文 时间:
2018-07-14 22:18:49
阅读次数:
291
poj2248 真是个新套路。还有套路剪枝...大到小和判重 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<bi ...
分类:
其他好文 时间:
2018-07-05 21:39:17
阅读次数:
145