08 2021 档案

摘要:#一、题目 CF263D 题目大意:给定一个 n 个点,m 条边的无向图,保证图中每个节点的度数大于等于 k,求图中一条长度大于 k 的简单的环,输出长度和路径包含的点。 #二、思路 因为是要找环,所以可以用dfs来做,图是连通图,随便从哪个点开始dfs都行,每次dfs的时候,将当前点到起始点的距离 阅读全文
posted @ 2021-08-21 19:40 行舟C 阅读(97) 评论(0) 推荐(0)
摘要:#一、题目 NC22600 #二、思路 这题最主要的是看有没有发现函数的性质,这个函数推两步就会发现 \(f(x) = \frac{1}{1 - x} \tag{1$'$}\) \(f(f(x)) = \frac{x}{x - 1} \tag{2$'$}\) \(f(f(f(x))) = x \ta 阅读全文
posted @ 2021-08-11 16:56 行舟C 阅读(37) 评论(0) 推荐(0)
摘要:#一、题目 NC22594 #二、思路 这题的题意很明显,就是在走到的点如果是有看守的点,那么从这个点走到下个点的时候k就要+1,求经过的看守点不超过k次的最短路径 这题一看到就能想到要用分层图来写,因为有个类似天数的限制,然后看了题解后发现也能用最短路dp来做,但是最短路dp我还没学明白,等以后有 阅读全文
posted @ 2021-08-09 21:18 行舟C 阅读(59) 评论(0) 推荐(0)
摘要:#一、题目 NC53074 #二、思路 题目大意就是一棵最小生成树可能有多种不同的组成方式,我们要去掉哪些边才能使整个图只有一种最小生成树,并对去掉的这些边求和 首先一棵树如果有多种不同的组成方式,在kruskal的方法下,只有可能是在选边的时候出现了多条相同边权的边连接着两个已经连接上的子树 所以 阅读全文
posted @ 2021-08-09 19:21 行舟C 阅读(84) 评论(0) 推荐(0)
摘要:#一、题目 NC20568 #二、思路 这题好像kruskal和prim都能写 大概题意是从1号点出发,求能经过的最多点的最小生成树 因为不一定所有的点都能达到,所以先做一遍bfs把从1号点开始能达到的点标记上 然后对所有的边进行排序,按高度为第一关键字降序,边权第二关键字升序,这样就能保证在点最大 阅读全文
posted @ 2021-08-09 16:23 行舟C 阅读(49) 评论(0) 推荐(0)
摘要:#一、题目 HNOI2006 #二、思路 这题主要考察的是对kruskal的应用 大概题意就是要连接至少k条一级公路,因为一级公路的花费一定比二级公路多,所以我们可以先连接k条一级公路,然后剩下的全连二级公路。 具体连法就是先对所有路按一级公路花费来排序,这样能保证连接到的一级公路花费最大的一定是最 阅读全文
posted @ 2021-08-09 14:56 行舟C 阅读(53) 评论(0) 推荐(0)
摘要:#一、题目 NC14700 #二、思路 这题因为有天数的限制,所以需要用到分层图来做,以天数来作为层数,每层都连上前一天的这个城市和下个城市的路径,然后直接背一下dijkstra的板子,最后在每层里的n号城市找到最小值即可 #三、代码 #include<bits/stdc++.h> using na 阅读全文
posted @ 2021-08-07 16:46 行舟C 阅读(47) 评论(0) 推荐(0)
摘要:#一、题目 NC14550 #二、思路 这题固定了三个点,起点、中转点、终点,很容易想到用dijkstra来写,但是直接一遍dijkstra并不能马上找到两条最长的路径,所以我们可以通过枚举每个点作为中转点时的情况,与这个点距离最远的两个点就是起点和终点,每次和当前的最长路径取最大值即可 时间复杂度 阅读全文
posted @ 2021-08-07 16:33 行舟C 阅读(39) 评论(0) 推荐(0)
摘要:#一、题目 NC14694 #二、思路 直接用题目的条件来判断的话,只能想到用暴力,但是暴力必然超时,所以可以从题目的条件式子入手,将**(a'1+b1)%k = (a'2+b2)%k改写成(a'1 + b1 - a'2 - b2) % k = 0** 因为右边为0是个定值,这样的话就可以用kmp算 阅读全文
posted @ 2021-08-07 16:21 行舟C 阅读(65) 评论(0) 推荐(0)
摘要:#一、前言 这题我写的真的一言难尽,debug了一天才调出来,还是太菜了。从最开始的题意问题,没理解透题意,漏了一个左上顶点到左下顶点、右上顶点到右下顶点之间都要为X的条件,再到后来折磨了我一天的问题,就是按我的思路来想,在这种情况下 我原先的思路输出的是1,因为只判断了外面一圈,里面就没判断了,后 阅读全文
posted @ 2021-08-03 10:58 行舟C 阅读(55) 评论(0) 推荐(0)
摘要:#题目 NC17193 #思路 先思考暴力做法,每组依次判断能否和桶里的数组成一个新的数,能则为1; 最后遍历一边桶数组,计算ans T:1e6 * 100 * 100 K:1e6, 100, 100; dp做法: dp[100][1e6] 1.dp[i][j]表示从前i层里选到j的情况是否存在 2 阅读全文
posted @ 2021-08-02 10:11 行舟C 阅读(52) 评论(0) 推荐(0)