07 2024 档案

摘要:Abstract 传送门 也算是状压 dp 模板题?不过这个数据给的有点阴间了,空间不够用,需要搞一个奇妙的优化。 Idea 所谓状压,就是用数字表示当前状态,比如说 0110100 这个数字,我们可以把 01 分别看作是是否到达过第 i 个点的标记。那么我们可以用 dp[i][j] 表示第 i 个 阅读全文
posted @ 2024-07-31 23:24 carboxylBase 阅读(6) 评论(0) 推荐(0) 编辑
摘要:Abstract 传送门 给出一个序列,要求我们找出平均值大于 m 的子段的数量。这题和逆序对还有些关系呢。 Idea 很容易想到,我们要对原序列进行以下预处理:a[i] -= m ,这样一来,问题转变为找和值大于 0 的子段,那么我们再对原序列做一次前缀和,接下来,对于区间 [l,r] ,若 a[ 阅读全文
posted @ 2024-07-31 23:15 carboxylBase 阅读(11) 评论(0) 推荐(0) 编辑
摘要:Abstract 传送门 本题定义平衡串为 0 和 1 数量相等的字符串,要求我们找出给定 01 串中含有的最大平衡串。 Idea 如果把 1 视为 +1 ,0视为 -1,那么一个 01 串是平衡串当且仅当其和值为 0 ,那么问题就转变为寻找给定 01 串中和值为 0 的最长子段。 首先做一个前缀和 阅读全文
posted @ 2024-07-31 23:02 carboxylBase 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Abstract 本文主要介绍各种序列子段和问题。 P1 最大子段和 传送门 Introduction 首先来看一道经典例题,求一段序列的最大子段和 Idea 考虑动态规划,令 dp[i] 表示在取第 i 个数的情况下,前 i 个数所能得到的最大子段和,那么显然有 dp[i] = max( dp[i 阅读全文
posted @ 2024-07-31 22:41 carboxylBase 阅读(21) 评论(0) 推荐(0) 编辑
摘要:Abstract 传送门 这篇题解主要介绍如何使用BFS去实现拓扑排序。 Idea 见下方注释 Code #include <bits/stdc++.h> using namespace std; int n; // 记录点的数量 int in[105]; // 记录点的入度 vector<vect 阅读全文
posted @ 2024-07-10 18:24 carboxylBase 阅读(29) 评论(0) 推荐(0) 编辑
摘要:Abstract 传送门 这篇题解主要介绍了拓扑排序的唯一性问题和存在性问题。 Idea 要想解决这题需要考虑到一下两点: 拓扑排序的核心思路在于将所有入度为0的点一次加入序列,如果在某一个时刻图中存在多个入度为0的点,那么我们将无法判断它们的先后顺序,此时,拓扑序列就不唯一了。 假设有n个点参与拓 阅读全文
posted @ 2024-07-10 18:04 carboxylBase 阅读(29) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示