摘要: 洛谷题面传送门 ###题目分析: 题面给出每一步可以走2^k步,k为任意正整数。这很明显是倍增。 而简单的最短路无法解决这个问题,因此考虑图上倍增dp。 设f[i][j][q](bool)表示是否存在一条从i到j长度为2^q的路径。 g[i][j]存储从i到j的最小步数和 考虑初始化, 对于每一个输 阅读全文
posted @ 2021-09-08 08:14 Mint-hexagram 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 使用算法:kruskal构造最大生成树(森林)+倍增LCA 前置知识: kruskal模板 倍增求LCA 洛谷传送门 题意概述 一张n个点m条边的无向图,每条边边权为w,给出q个查询,查询x,y之间有无路径联通,若无路径,则输出-1,若有路径,则输出两点之间所有路径中,路径上边权最小值的最大值。 算 阅读全文
posted @ 2021-09-07 17:36 Mint-hexagram 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 用到的各个数组的意义 anc[i][j]表示从点i向根节点走(2^j)步到达的点的编号 dep[i]表示点i的深度 dis[i]表示点i到根节点之间的距离(i到根节点的简单路径上边的权值之和) ###算法分析: (1)题目给出了一颗无根树,因此我们建双向边,并任意选一个点作为根节点(我选择1) (2 阅读全文
posted @ 2021-09-07 08:50 Mint-hexagram 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 算法基础:倍增+dp ##算法流程 (1)合并(预处理):把每一个大的区间分成两部分,求其最大值 (2)查询,求log(len),由一个从区间首端开始和一个由区间尾端开始的长度均为2^log(len)的两个区间中的最大值相互比较,求得最大值。 tips:f[i][j]代表以i为起点,长度为2^j的区 阅读全文
posted @ 2021-09-06 10:10 Mint-hexagram 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 之前一直不想写的手写堆。 是大根堆模板,小根堆直接换一下转移的符号就行。 pile[maxn]是存储堆的数组,len是堆中元素的数量。 写法非常简单。 Code void put(int k) { pile[++len]=k; int pla=len; while(pla>1) { int fa=p 阅读全文
posted @ 2021-09-05 22:55 Mint-hexagram 阅读(36) 评论(0) 推荐(0) 编辑
摘要: score=60+0+30+0=90 我是真没想到第二题会挂60分,最后一道剪枝把正解剪掉了,挂了20。 别人剪枝暴力过60,我剪枝直接剪正解。 只能说数据还是出得挺好的,没想到剪枝+打表都会挂。 T1 前60分直接O(n^2)暴力 #include<bits/stdc++.h> using nam 阅读全文
posted @ 2021-09-05 15:15 Mint-hexagram 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 一、定义: ####独立集:在一个图中,找到一个集合包含的所有点相互之间都不存在连边 ####最大独立集:在所有独立集中包含元素个数最多的独立集 #二、处理问题的第一步:问题转化: 需要用最大团来求最大点独立集,因此先引入最大团的概念 最大团问题 、 tips:最大团和强连通分量有区别,最大团U要求 阅读全文
posted @ 2021-09-04 19:44 Mint-hexagram 阅读(2060) 评论(0) 推荐(0) 编辑
摘要: part1:比赛过程&结果回顾 一、比赛过程: 先读题,觉得第一题基本可做,也许能切,先放着不管。第二题不是很难,估计有一些奇怪的性质,至少能写个暴力,先过。第三题,在k维上求最大点权独立集,emmm估计是树形dp或者贪心,仔细一看,题面过于复杂,好多隐藏条件根本看不出来,没想出来怎么在多个图之间建 阅读全文
posted @ 2021-09-04 18:52 Mint-hexagram 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 基础的差分约束 #拓展 #Code #include<bits/stdc++.h> using namespace std; const int maxn=5e3+5; int n,m,a,b,c,head[maxn],dis[maxn],ecnt=-1,cnt[maxn]; bool jud=1; 阅读全文
posted @ 2021-09-04 15:41 Mint-hexagram 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 第一次写缩点是用vector存边,因此现在用链前存边再写一遍 传送门:P3387 【模板】缩点 题意分析 (1)很容易发现,由于每一个点可以被经过多次,那么同一个强连通分量中的每一个点都可以互相到达,因此可以看作一个点。 (2)缩点后,整张图一定变成了一个DAG 证明:反证即可,假设不是DAG,则有 阅读全文
posted @ 2021-09-04 14:11 Mint-hexagram 阅读(41) 评论(0) 推荐(0) 编辑