随笔分类 - 题解
摘要:Abstract 第二次打 CodeForce 。 Update 2024.8.16 C 题被 hack 掉了(手动捂脸),代码已经更新。 2024.8.17 补了 F 题 。 A. Primary Task Idea 签到题。 意思就是说给一个字符串,要你判断一下前两位是不是 10 ,除去前两位后
阅读全文
摘要:Abstract 传送门 Idea 显然是一个差分约束系统。不妨用 dist[i] 表示前 i 个位置种的树的数目,那么,容易得出下列方程: dist[i] >= dist[i-1] dist[i] - dist[i-1] <= 1 (每个位置至多能种一颗树) 题目要求 b 到 e 之间至少种 t
阅读全文
摘要:Abstract 传送门 这题是线段树+离散化的典型例子。 Idea 题目要求我们求出在至多只改变一朵花种植时间的情况下,最多有多长的时间是有且只有一朵花开放的。种花可以视为给起始时间到中止时间的区间 +1 ,挖走一朵花,只用在原来的起始时间到中止时间的区间 -1,即可,自然的想到用线段树去维护这个
阅读全文
摘要:Abstract 传送门 很有意思的一道题,需要巧妙的利用异或的结合律。 Idea 不妨取 1 为根节点,然后从 1 出发遍历整棵树,将 1 到 n 节点的路径异或和记录为 dis[i] ,那么,显然有从 i 到 j 的路径的异或和为 dis[i] ^ dis[j]。 Code 爱来自 namesp
阅读全文
摘要:Abstract 第一次打 CF 的比赛~~~~ A. Legs Idea 签到题,没什么好说的。 Code #include <bits/stdc++.h> using namespace std; int main() { int t; scanf("%d", &t); while (t--)
阅读全文
摘要:Abstract 传送门 本题是状态压缩+记忆化BFS的典型例子。 Idea 要求从出发点到终点的最短步数, BFS 自然是首选的方法,那么,如何构造搜索的每一个节点呢?考虑到机关的数量比较小,最多 10 种,我们可以考虑用状态压缩去描述机关当前的状态,然后再记录当前的横纵坐标,以及行走的步数即可。
阅读全文
摘要:Abstract 传送门 也算是状压 dp 模板题?不过这个数据给的有点阴间了,空间不够用,需要搞一个奇妙的优化。 Idea 所谓状压,就是用数字表示当前状态,比如说 0110100 这个数字,我们可以把 01 分别看作是是否到达过第 i 个点的标记。那么我们可以用 dp[i][j] 表示第 i 个
阅读全文
摘要:Abstract 传送门 给出一个序列,要求我们找出平均值大于 m 的子段的数量。这题和逆序对还有些关系呢。 Idea 很容易想到,我们要对原序列进行以下预处理:a[i] -= m ,这样一来,问题转变为找和值大于 0 的子段,那么我们再对原序列做一次前缀和,接下来,对于区间 [l,r] ,若 a[
阅读全文
摘要:Abstract 传送门 本题定义平衡串为 0 和 1 数量相等的字符串,要求我们找出给定 01 串中含有的最大平衡串。 Idea 如果把 1 视为 +1 ,0视为 -1,那么一个 01 串是平衡串当且仅当其和值为 0 ,那么问题就转变为寻找给定 01 串中和值为 0 的最长子段。 首先做一个前缀和
阅读全文
摘要:Abstract 传送门 这篇题解主要介绍如何使用BFS去实现拓扑排序。 Idea 见下方注释 Code #include <bits/stdc++.h> using namespace std; int n; // 记录点的数量 int in[105]; // 记录点的入度 vector<vect
阅读全文
摘要:Abstract 传送门 这篇题解主要介绍了拓扑排序的唯一性问题和存在性问题。 Idea 要想解决这题需要考虑到一下两点: 拓扑排序的核心思路在于将所有入度为0的点一次加入序列,如果在某一个时刻图中存在多个入度为0的点,那么我们将无法判断它们的先后顺序,此时,拓扑序列就不唯一了。 假设有n个点参与拓
阅读全文