图论
林黛玉倒拔垂杨柳
你我最后也平凡到自命不凡
展开
-
中国石油大学秋季组队训练赛 Equidistant (树上多源BFS)
题目链接:点此跳转题目大意:给定一颗n个结点的树和m个树上的节点,问是否存在一个节点到m个点的距离相等,一条边距离为1,存在的话输出YES和此节点,反之输出NO。解题思路:因为树上两点的距离为1,bfs每层只能走1,同时要到m个点的距离相等,我们可能想到的是:枚举每个点bfs看能不能更新成功,但是因为n的范围是2e5,所以会t,因此我们可以在m个点多源bfs,记录分别能到的点,然后判定即可。 (一开始一直想的是树上两点的距离,直接往lca上莽了,然后憋了一个多小时,看了题解才知道是BFS,当场脑溢血)原创 2020-10-11 09:46:45 · 1030 阅读 · 3 评论 -
POJ 2337 Catenyms(有向欧拉图:输出欧拉路径)
Catenyms题目大意:给出N个单词,现在要一组单词序列。该序列包含了所有N个单词,且该序列中的前一个单词的最后一个字母与后一个单词的第一个字母相同。如果存在多个这种首尾相连的序列,就输出字典序最小的那个即可。解题思路:题意很明确,就是让输出一个字符串的欧拉路径(欧拉路径(欧拉通路)每条边都通过且仅通过一次)欧拉回路图G是连通的,无孤立点。无向图奇点数为0;有向图每个点的入度必须等于出度。欧拉路径图G是连通的,无孤立点。无向图奇点数为0或2,并且这两个奇点其中一个为起点另外一个为终点。原创 2020-09-09 11:17:44 · 136 阅读 · 0 评论 -
2020牛客暑期多校训练营(第一场)I 1 or 2
1 or 2题目大意:给定n个节点和m条边以及每个节点的期望度数,问是否可以通过删去一些边使每个节点都满足期望度数,解题思路:一般图的最大匹配,难点于如何建图,每个条边拆成两个点x,y,x和y连边这条边连的两个点u,v,u拆成d[u]个点,分别和x连边,v拆成d[v]个点,分别和y连边然后如果是完全匹配,就输出yes然后跑模板就行了Code;#pragma GCC optimize(2)#pragma GCC optimize(3)#include <bits/stdc++.h原创 2020-08-15 12:56:03 · 162 阅读 · 0 评论 -
2020暑假牛客多校第九场 K The Flee Plan of Groundhog (树形结构/思维)
The Flee Plan of Groundhog 题目大意:有一个土拨鼠在节点1,一个橘子在节点n,在t时刻之前土拨鼠向着n走,橘子不动,从t时刻开始,橘子开始抓土拨鼠,土拨鼠开始跑,土拨鼠 1m/s 橘子 2m/s,问还有多长时间橘子才能抓到土拨鼠。解题思路:t 时刻之后,土拨鼠必然朝着n的反方向移动,土拨鼠走一步,橘子走两步,那么我们可以记录一下t时刻土拨鼠的位置,还有土拨鼠向反方向最多能跑多远。如果土拨鼠向后跑了一步就到头了,那么显然时间是橘子到改点的距离/2向上取整,但是如果土拨鼠可以向原创 2020-08-08 20:13:10 · 995 阅读 · 3 评论 -
PAT1018 公共自行车管理 (图论/最短路dijkstra变形/贪心/dfs)
公共自行车管理题目大意:每个结点中自行车存放的数量小于C/2向下取整的话就加到C/2,大于C/2向下取整的话就减到C/2给一个起点(0),给一个终点(S)然后有三个条件 首先要路径最短 在此基础上最初带去的自行车越少越好 在此在此基础上最终带回来的自行车越少越好解题思路:首先跑一下最短路dijkstra是没问题的,但是这个只能筛选出满足第一个条件的路径,所以要变形一下,记录一下从起点(0)到各个点的最短距离dist[i] ,然后如果dist[i]+g[i][s] (i到S(终点)的距离)原创 2020-08-07 00:07:50 · 154 阅读 · 0 评论 -
2020牛客暑期多校训练营(第八场)I题 Interesting Computer Game(离散化+图论dfs)
Interesting Computer Game题目大意:给出n对 a[i] , b[i] ,每次可以选择一个之前没有选择过的数,问最多能选几个。解题思路:因为每次只能从a[i] b[i]中选一个,可以把a[i]和b[i]用一条线连接起来,只能选择该线左端点或者右端点,然后把n对a[i] b[i]都链接起来,这样就形成了多个联通块。对于每个联通块进行单独判断,可以把它当成成类似树的数据结构,有n个节点,大于等于n-1条边,如果是n-1条边的话,显然只能选择n-1个点,如果大于n-1条边的话,那么原创 2020-08-04 11:30:03 · 134 阅读 · 0 评论 -
POJ 3764 The xor-longest Path (字典树求最大异或 + 链式前向星存图)
The xor-longest Path题目大意:给定一颗N个节点的树,树上的每一条边都有一个权值。从数中选择两个点x和y,把从x到y的路径上的所有边权xor(异或)起来,得到的结果最大是多少?解题思路:因为 a ^ b==(a ^ c) ^ (b ^ c), 即两个点到根的异或和异或一下就是这两个点之间的异或和, 这条性质,我们可以记录下当前节点到根节点的异或和,然后转成01串插入到trie树里面,最后按照贪心思想匹配的时候尽可能的匹配与当前位不同的即可。Code:#include<ios原创 2020-07-28 22:27:37 · 189 阅读 · 0 评论