摘要: CF1027D Mouse Hunt 题目大意: 有$n$个房间,保证每一个房间只会通向另一个房间$a[i]$ (可能会通向自己,可能有多个房间通向一个房间)。有一只老鼠会在相通的房间内乱窜。你可以以代价$c[i]$放置老鼠夹到任意房间内。求最小代价使得老鼠无论逃窜在哪都会被抓。 思路: 模拟样例即 阅读全文
posted @ 2020-11-10 22:14 Nepenthe8 阅读(192) 评论(0) 推荐(0) 编辑
摘要: Intelligent Warehouse 题目大意: 给一个$n \times m$的矩阵和一个$a \times b$的单位矩阵,然后在$n \times m$的矩阵中任取$a \times b$的子矩阵,使其每一位都减$1$,问最后能否使原始矩阵元素全变为$0$。 思路: 利用二维差分快速实现 阅读全文
posted @ 2020-11-10 17:18 Nepenthe8 阅读(72) 评论(0) 推荐(0) 编辑
摘要: CF1114C Trailing Loves (or L'oeufs?) 题目大意: 给定$n$,求$n!$在$b$进制下末尾$0$的个数。 思路: 我们以十进制来举例子。 进制数$10 = 2 \times 5$ 比如说一个十进制数$20$,末尾有一个$0$,将$20$质因数分解为$20 = 2^ 阅读全文
posted @ 2020-11-10 16:58 Nepenthe8 阅读(90) 评论(0) 推荐(0) 编辑
摘要: C++中有时可能会需要使用以结构体$struct$为键值的$map$ like this: struct Node { LL x, y; friend bool operator<(const Node& a, const Node& b) { if (a.x < b.x || (a.x == b. 阅读全文
posted @ 2020-11-10 15:42 Nepenthe8 阅读(227) 评论(0) 推荐(0) 编辑
摘要: P1251 餐巾计划问题 题目大意: 见题面 思路: 将一天拆点为晚上和白天。 跑最小费用最大流。 在此放两个模板。 Code: 79ms / 3.23MB / 3.03KB C++17 O2 #include <bits/stdc++.h> using namespace std; typedef 阅读全文
posted @ 2020-11-10 15:16 Nepenthe8 阅读(70) 评论(0) 推荐(0) 编辑
摘要: CF5C Longest Regular Bracket Sequence 题目大意: 给出一个括号序列,求出最长合法子串和它的数量。 合法的定义:这个序列中左右括号匹配 思路: 建立一个数组$Array$对应字符串的每一位。 每次遇到左括号把其压入栈中,每次遇到右括号将其和与其匹配的左括号在$Ar 阅读全文
posted @ 2020-11-10 14:49 Nepenthe8 阅读(117) 评论(0) 推荐(0) 编辑
摘要: CF4D Mysterious Present 题目大意: 求双元素$LIS$ 思路: 将数据以其中以一个元素为关键字进行排序,再求单元素$LIS$即可。 设$f[i]$为前$i$个元素中的$LIS$长度,易得$dp$方程为 \[ dp[i] = max(1, dp[j] + 1) (j = 0, 阅读全文
posted @ 2020-11-10 14:35 Nepenthe8 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 记录一下这个恶心的字符串模拟 #include <bits/stdc++.h> using namespace std; int main() { map<char, int> mp; string str; stack<char> s; cin >> str; bool isFirst = tru 阅读全文
posted @ 2020-10-19 19:16 Nepenthe8 阅读(88) 评论(0) 推荐(0) 编辑
摘要: CF14D Two Paths 题目大意: 给定一棵权值为$1$的树,从中两条最长的路径且两者没有公共节点,求最大的二路径乘积。 思路: 观察到$n$的范围很小,可以枚举每条要删的边,再在两个子树中求树的直径,相乘即为答案。 本题我采用两次$dfs$的方式求树的直径。 另外,记得打上删除标记。 时间 阅读全文
posted @ 2020-10-11 17:56 Nepenthe8 阅读(115) 评论(0) 推荐(0) 编辑
摘要: J. Jokewithpermutation 题目大意: 将字符串还原成全排列。 思路: 注意到数据范围排列总数$n$不超过$50$,考虑直接暴力$dfs$。 注意记录数字的$vis$数组需要开的大小,如果排列总数$n$恰为$50$,意味着将会有$9+2×41=91$位数字,有可能在选取的过程中超过 阅读全文
posted @ 2020-10-05 00:05 Nepenthe8 阅读(129) 评论(0) 推荐(0) 编辑