摘要:
嘟嘟嘟 题面挺绕的,“翻译”一下: 1.牧区是一个点,牧场是所有直接相连的点构成的联通块。 2.两个牧区之间的距离是这两个距离之间的最短路,只有直接相连的两个牧区之间的距离是欧几里得距离。 3.牧场的直径:这个牧场中两个相隔最远的两个牧区之间的距离。 4.求添加一条边合并两个牧场之后,使这个新的牧场 阅读全文
摘要:
嘟嘟嘟 看n那么小,刚开始我就想暴力dijkstra,结果O(Qnlogn)光荣TLE,竟得了80分…… 正解是floyd。 考虑朴素的floyd,dis[i][j]表示 i 到 j 的最短路,然而最原始的是dis[k][i][j],以前k个点为中继点时 i 到 j 的最短路,于是有dis[k][i 阅读全文
摘要:
嘟嘟嘟 这道题的题面相当的迷,我看了半天都没懂。最后看了题解的解释才懂。 他是这么个意思:对于所有能活着走到终点的路径,输出每一条路径中过路费最多的城市的最小值。 那么自然想到二分过路费,然后用dijkstra或spfa判断是否存在一条路径,该路径上的每一个城市的过路费都小于当前二分值mid。用di 阅读全文
摘要:
嘟嘟嘟 又刷了一道水题…… 很显然只要判断这个图是否是二分图就行了,判断方法就是染色。如果对于边(u->v),两个点颜色相同,那么就说明图中存在奇环,不是二分图。 统计答案的时候输出两种颜色较小的就行了。 需要注意的是,图可能不连通,或者有些点不存在。 1 #include<cstdio> 2 #i 阅读全文
摘要:
嘟嘟嘟 题面很清楚,就是让求最小环。 有两种做法: F1:用带权并查集。将每一条边连接的两个点所在集合合并,如果已经在一个集合,说明形成了环,用dis[x] + dis[y] + 1更新ans。因为图中的边是有向的,所以并查集也必须又向,对于边(x->y),可以规定x所在集合向y和并,那么同时dis 阅读全文
摘要:
嘟嘟嘟 打表不难发现,序列的长度以及序列中1的个数都是斐波那契数列。因为第 i 秒1的个数由 i - 1的1和 i - 2的0变换而来,那么f[i] = f[i - 1] + f[i - 2]。序列的长度同理,第 i 秒的序列长度由 i - 1秒的长度加上 i - 1 秒的1变换而来,而i - 1秒 阅读全文
摘要:
嘟嘟嘟 应该算一道结论题吧。 首先很明显的一点,就是对于ai,j,我们只用求出ai,1就行了,剩下的就是斐波那契和矩阵快速幂的事。 至于如何求ai,1,用两种方法,但是哪一个我都不懂为啥,网上也没有解释。 F1:斐波那契最小拆分。对于 i,拆分 i - 1:每一次选择小于i - 1且最大的斐波那契数 阅读全文