07 2021 档案
摘要:比赛链接:Here 1001 - Away from College 1002 - Boxes 思路:只要使用一次hints,以后的每一步都可以知道剩下多少个黑球。所以最少花费是全部盒子开一遍或者先用一次hints后面再碰运气,注意到,每开一个盒子都有一定概率直接结束(后面全都是白球或全都是黑球)
阅读全文
摘要:比赛链接:Here 1001 - Course 1002 - Sample Game 1003 - LCS 构造, 首先排除不可能的情况 两个 LCS 的值减去最小的 LCS 值如果比 还大,那么肯定构造不出来啊(不够长 剩下就是对于公共的 min(a,b,c) 赋 a ,对应的三种情况
阅读全文
摘要:算法讲解:Here AcWing 282. 石子合并 (模板) 题目链接:Here const int N = 310; int a[N], s[N]; int dp[N][N]; void solve() { int n; cin >> n; for (int i = 1; i <= n; ++i
阅读全文
摘要:基本的知识点引用自 OI wiki,感谢社区的帮助 什么是区间 DP? 区间类动态规划是线性动态规划的扩展,它在分阶段地划分问题时,与阶段中元素出现的顺序和由前一阶段的哪些元素合并而来有很大的关系。令状态 表示将下标位置 到 的所有元素合并能获得的价值的
阅读全文
摘要:来源:Educational Codeforces Round 111 (Rated for Div. 2) 不难但很好的思维题 设 为 两点之间的曼哈顿距离 给定三个点,如果 则三个点是 坏三元组。 在
阅读全文
摘要:来源:2020 年百度之星·程序设计大赛 - 初赛一 一个圈,从内到外一共被分成了 个环,中间是空的。 我们把从外到内第 层环平分成 份,其中 是偶数,我们把这 份黑白染色,第奇数个染成黑色,第偶数个染成白色。 现在我们旋
阅读全文
摘要:来源:2020 年百度之星·程序设计大赛 - 初赛一 一道贪心 + 细节模拟题 题意很简单,这里不详细写了 观察题目, 只有 500 ,可以 枚举每个位置作为起点,对于每个位置而言,可以 去枚举周围曼哈顿距离为 的点,
阅读全文
摘要:来源:2020 年百度之星·程序设计大赛 - 初赛一 错误想法带来错的代码, 为什么一个简单DP题能被我想成复杂的贪心啊?? 初始有 两个正整数,每次可以从中选一个大于 1 的数减 1,最后两个都会减到 1,我们想知道在过程中两个数互质的次数最多是多少。 直接预处理找出 \(1000
阅读全文
摘要:一、取走游戏 首先,我们介绍一下组合游戏。组合游戏是一种两个人参与的游戏,参与者拥有完整的(有关游戏的)信息,没有任何意外产生的操作(即保证无意外性),并且游戏拥有一个输赢的结果。这样的游戏是由一系列的位置,包括一个起始位置,和哪个参与者进行下一步所组成、决定的。游戏在参与者的选择中从一步移向下
阅读全文
摘要:比赛链接:Here 1391A. Suborrays 简单构造题, 把 放最前面,接着补 ~ 即可 1391B. Fix You → 统计相应个数的 R 和 D 即可 char a[110][110]; int ma
阅读全文
摘要:单调队列,就是单调的队列,通常用来解决滑动窗口的最值问题,可以应用到 DP 的优化上。一个单调队列中的元素总是单调递增(或递减)的。 例:有一个队列,每次从队尾加入一个元素,或从队首删除一个元素,并在任何时刻求整个队列的最大值。 一个很直接的想法是使用优先队列 priority_queue 即堆,堆
阅读全文
摘要:比赛链接:Here A - LR Constraints 赛时做这个好迷啊,英文题面解释不清楚,还是看了日语原文才搞懂 个卡牌上有两个 字符 + 数字 组合,L 的右边所有元素 + 1,R 的左边元素 + 1 最后求出现过数字的乘积,同时对 取余 注意点:开
阅读全文
摘要:比赛链接:Here AcWing 3726. 调整数组 签到题 void solve() { int n; cin >> n; int x = 0, y = 1, c; for (int i = 0; i < n; ++i) { cin >> c, x |= c, y &= c; } cout <<
阅读全文
摘要:比赛链接:Here A、B题跳过 C - chokudai 题意: 给出一个字符串,问有多少个字串能构成 chokudai 这道题算是一个简单DP,只要计算某个位置对构成 chokudai 的贡献值即可 \(f
阅读全文
摘要:比赛链接:Here 1001 - Guess and lies 1002 - Black and white (Kruskal & 并查集) 为了实现最少花费,需满足:在我们涂完若干个点后,其他的点对总花费不再有贡献(涂黑这些点时不花钱了) 我们会发现 :最少,我们需要涂黑 n + m - 1 个点
阅读全文
摘要:每日一题三期题单链接:Click Here 每道题的题解会由博主做完以后总结然后发布的 题号 解析 来源 知识点 1 NC200195 牛客小白月赛20 2 NC106586 3 NC25044 USACO 4 NC20177 [JSOI2009] 5 NC24623 USACO 6 NC20021
阅读全文
摘要:比赛链接:Here 1551A. Polycarp and Coins (签到) 题意: 我们有任意个面额为 和 的硬币去支付 元账单, 现在请问怎么去分配数额使得 并且要最小化 贪心, 很容易
阅读全文
摘要:本文学习自 Sengxian 学长的博客 之前也在CF上写了一些概率DP的题并做过总结 建议阅读完本文再去接着阅读这篇文章:Here 期望经典问题入门题集 前言 单纯只用到概率的题并不是很多,从现有的 OI/ACM 比赛中来看,大多数题目需要概率与期望结合起来(期望就是用概率定义的),所以本文主要讲
阅读全文
摘要:描述 某一天 WJMZBMR 在打 osu~~~ 但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则: 有 次点击要做,成功了就是 o,失败了就是 x,分数是按 comb 计算的,连续 个 comb 就有 分,com
阅读全文
摘要:比赛链接:Here 本场题目重现于 2021湘潭全国邀请赛 A - A+B Problem (签到) 根据题意处理即可 int main() { cin.tie(nullptr)->sync_with_stdio(false); int _; for (cin >> _; _--;) { int a
阅读全文
摘要:比赛链接:Here 本场 3道签到题可还行,2333 A - Arithmetic Progression B - Cannon C - Draw Grids (签到) 题意很简单就不翻译了 手写下 的各个情况,然后拓展到 就清晰了解法, 只要 \(n
阅读全文
摘要:比赛链接:Here 1001 - Mod, Or and Everything 签到, 打表发现与 2的次方相关联 int main() { cin.tie(nullptr)->sync_with_stdio(false); int _; for (cin >> _; _--;) { ll n; c
阅读全文
摘要:悬线法 什么是悬线法? 悬线法是用来解决最大子矩形问题的有力武器,它的思想很简单,代码也很好写。 悬线法的适用范围是单调栈的子集。具体来说,悬线法可以应用于满足以下条件的题目: 需要在扫描序列时维护单调的信息; 可以使用单调栈解决; 不需要在单调栈上二分。 看起来悬线法可以被替代,用处不大,但是悬线
阅读全文
摘要:比赛链接:Here A - Alice and Bob (Game,打表) emmm,博弈签到题 题意: Alice(先手) 和 Bob 面前有两堆石头,石头数量为 和 。 每次操作可从一堆石头中取出 块石头,在另一堆石头中取出 块。 哪
阅读全文
摘要:比赛链接:Here A - Arithmetic Sequence (good) 注意细节 int main() { cin.tie(nullptr)->sync_with_stdio(false); ll a, b, c; cin >> a >> b >> c; ll x = 2 * b - a
阅读全文
摘要:比赛链接:Here A - Cabbages 略 B - Bouzu Mekuri 略 C - Colorful Candies 用map维护连续一段区间的不同元素即可。 int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, k;
阅读全文
摘要:比赛链接:Here 1530A. Binary Decimal 现在规定一种只由0和1组成的数字,我们称这种数字为二进制数字,例如10,1010111,给定一个数n,求该数字最少由多少个二进制数字组成. 水题, 每取一个二进制数字,可以使得原数字n上各位都减小1或者0,为了使次数尽可能地小,那么当原
阅读全文
摘要:比赛链接:Here 1546A - AquaMoon and Two Arrays 选定两个数组元素执行以下操作: 一个 +1 另一个 -1, 前提是两个数都要结果非负 请问在执行若干次后使得数组 等于 数组 先统计两
阅读全文
摘要:比赛链接:Here 1547A. Shortest Path with Obstacle 3个点 ,前提 点为不可经过点,问 最短路径长度 A题没什么难度,注意同列和同行在两者之间的情况即可 【AC Code】 int main() { cin.
阅读全文
摘要:本篇解题记录题源来自 AcWing 的每日一题 · 暑假 补题链接:Here Week 1 星期四 AcWing 3761. 唯一最小数 利用 map 存出现过数的下标和次数即可 vector<int>a; int n; int main() { cin.tie(nullptr)->sync_wit
阅读全文
摘要:最近正在利用 Python 制作一个小游戏,但对于 Pygame 不熟悉,故在学习的过程记录相关知识点 Pygame 中文文档下载:Here Pygame 2.0 (中文) 在线:Here 感谢 龙桑 提供 Pygame第1-1课:入门 什么是Pygame? Pygame是一个“游戏开发库” - 一
阅读全文
摘要:BitMap概述 本文介绍 BitMap 算法的应用背景,算法思想和相关实现细节。 概括而言,BitMap 主要用来解决海量数据中元素查询,去重、以及排序等问题。这里对海量数据场景的强调,似乎暗示了这个算法对空间的利用相当的精巧和经济,事实确实如此。 BitMap算法 本来数据序列的排序是一个平凡的
阅读全文
摘要:比赛链接:Here 1539A. Contest Start 让我们找出哪些参与者会干扰参与者i。这些是数字在 和 之间的参与者。所以第一个最大值 参与者将获得 不满意,下一个参与者将比上一个参与者少获得 \(1
阅读全文
摘要:比赛链接:Here 1541A. Pretty Permutations 给定 序列,让每一个数字都不处于原来的位置,但总的移动距离要最小 为偶数的情况 为奇数的情况 \(1,2,3,4,5 \
阅读全文
摘要:想要得到一个不大于N的数所有素数,可以先找到不超过根号N的所有素数,设2 = p1 < p2 < ......<pk ≤√N,然后在2,3,4......N里面进行下面的操作: 留下p1 = 2,把p1的倍数全部划掉, 再留下p2 ,把p2 的倍数全部划掉, 继续这一过程,直到留下 ,
阅读全文
摘要:比赛链接:Here AcWing 3694. A还是B 签到题 void solve() { int n; string s; cin >> n >> s; int t = count(s.begin(), s.end(), 'A'); if (t * 2 == n)cout << "T"; els
阅读全文
摘要:比赛链接:Here AcWing 3660. 最短时间 比较四个方向和 的距离 void solve() { ll n, m, r, c; cin >> n >> m >> r >> c; cout << max(max(r + c - 2, r + m - 1 - c), ma
阅读全文
摘要:比赛链接:Here A - Rolling Dice 水题 一个六面的骰子,请问摇动 次最后的点数和能否为 如果 输出 YES C++ void solve() { int a, b; cin >> a >> b; if (a * 1 <=
阅读全文
摘要:比赛链接:Here AcWing 3626. 三元一次方程 暴力即可 void solve() { int n; cin >> n; for (int i = 0; i <= n / 3; ++i) for (int j = 0; j <= n / 5; ++j) for (int k = 0; k
阅读全文
摘要:比赛链接:Here AcWing 3577. 选择数字 排序,然后选取两个数组的最大值 void solve() { int n; cin >> n; vector<int>a(n); for (int &x : a)cin >> x; int m; cin >> m; vector<int>b(m
阅读全文
摘要:简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。 Python 中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说: 标识符是由字符(AZ 和 az)、下划线和数字组成,但第一个字符不能是数字。 标识符不能和 P
阅读全文
摘要:A - 凯少与素数 签到 & 思维题, 要使每一对数字 的最大公约数都等于 1,简单来说区间相邻的两个数一定 并且 为奇数保证区间每一个数都能用于构成整数对 【AC Code】 #include <bits/stdc++.
阅读全文