摘要:
10.14 正睿做题笔记 连续两场掉分,心情非常不爽。 T1 水题,直接拿 bitset 优化转移就可以过掉这道题。 代码: #include<bits/stdc++.h> #define dd double #define ld long double #define ll long long # 阅读全文
摘要:
斯坦纳树问题大概是这样一个问题:给定平面上 \(n\) 个点,然后求把这些点连起来的最短路径是多长,点有点权。 如果放在 OI 上,那么就可以变成这样一个问题,给定一张联通的无向图,给定 \(k\) 个关键点,问把这 \(k\) 个关键点联通的边权和最小是多少,边有边权。 解决方法 我们设计一个状压 阅读全文
摘要:
T1 大模拟,直接 \(9!\) 枚举然后 \(8\) 倍常数建边,然后在这张图上直接跑 bfs,我们可以首先打表出来可能的最终状态,然后一经过最终态的时候。就停止即可。 代码: #include<bits/stdc++.h> #define dd double #define ld long do 阅读全文
摘要:
左偏树 左偏树是一种可并堆,具有堆的性质,且可以快速合并。 dist 定义 对于一棵二叉树,我们定义外节点为左儿子或右儿子为空的节点,定义一个外节点的 \(dist\) 为 \(1\),一个不是外节点的 \(dist\) 为其到子树中最近的外节点的距离加一。空节点的 \(dist\) 为 \(0\) 阅读全文
摘要:
T1 这个题是自己想出来的。 不难发现,\(a+b\) 在变化过程中是不会变化的。知道这个性质我们就可以拿到 \(60\) 分。这是因为如果 \(a\) 变成 \(c\),那么 \(b\) 一定变成了 \(d\)。所以我们只用关注 \(a\) 即可。设 \(a+b=sum\),不难发现 \(a\) 阅读全文
摘要:
T1 非常水,处理处前驱后继即可。 代码: #include<bits/stdc++.h> #define dd double #define ld long double #define ll long long #define uint unsigned int #define ull unsi 阅读全文
摘要:
一道非常好的区间 dp。 一开始我理解错了题意,认为只是把原序列分成几个小段,但是发现不是,在发现两边的区间可以合并的时候,我意识到这是一道区间 dp。 1 状态设计 于是我开始考虑状态设计,先按照区间 dp 模板:设 \(f_{l,r}\) 表示 \(l\) 到 \(r\) 这个区间的最优解。然后 阅读全文
摘要:
T1 诈骗题,这个题看着挺吓人,实际上没有这么吓人。我们只需要对这个矩阵进行分割即可,分割成不相等的 \(3\times 3\) 的小格子,加起来即可。代码: #include<bits/stdc++.h> #define dd double #define ld long double #defi 阅读全文
摘要:
T1 水题,直接贪心的去做就可以。 代码: #include<bits/stdc++.h> #define dd double #define ld long double #define ll long long #define uint unsigned int #define ull unsi 阅读全文
摘要:
T1 大水题,先判是否有解,再排序即可。代码: #include<bits/stdc++.h> #define dd double #define ld long double #define ll long long #define uint unsigned int #define ull un 阅读全文