08 2021 档案
摘要:比赛链接:Here ABC水题, D - Multiple of 2019 (DP + 分析) 题意: 给定数字串S,计算有多少个子串 ,满足 是 的倍数 思路: \(s[l, r] * 10^{n-r}=s[l, n]-s[r+1, n]
阅读全文
摘要:前排提醒,本文转载自 Sshwy's Notes 转载仅供学习使用。 可能大家都知道树上背包合并 对子树大小取min可以优化到 。但是对于树上依赖背包问题,背包合并的复杂度仍不能接受。考虑形式化的问题: 一棵 个结点有根树,每个结点 有
阅读全文
摘要:比赛链接:Here 1311A. Add Odd or Subtract Even 签到题, 时必须做做减法,如果差值为偶数的话只需要 次不然做一次减法后再做一次 即可 同理了 0次 int main() { ci
阅读全文
摘要:题目链接:Here 题意: 给出正整数 ,对于 求出 \(\left\lfloor\frac{A x}{B}\right\rfloor-A \times\left\lfloor\frac
阅读全文
摘要:这个算法的正式名字是:“Twelvefold way”,共用12种情况。 本文转载自:自为风月马前卒的博文:浅谈"n个球"和"m个盒子"之间的关系 一、球异,盒同 不空 该情况为经典的第二类斯特灵数 设 表示答案 \(f[n][m] = f[n - 1][m - 1] + m
阅读全文
摘要:比赛链接:Here AB水题 C - Peaks 题意: 给出 个观察台的高度,以及 条边,定义“好观察台”:比所有直接相连的观测台都高 思路: 因为道路是双向的,互相判断一下即可 a &= bool 这个写法学习了 int main() { cin.tie(nullptr)
阅读全文
摘要:比赛链接:Here 1301A. Three Strings 题意: 给三个相同长的字符串 ,对于每个位置 ,你必须做一次操作:交换 和 ,或者交换 和 。问你交换完之后 和 能否一样。
阅读全文
摘要:题单快速导航:Here 先是计算几何入门题推荐 : 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很 巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠。 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模 板。如果代码一片混乱,那么会严重影响做题正确率
阅读全文
摘要:【前言】 在补Codeforce的DP时遇到一个比较新颖的题,然后在知乎上刚好 hycc 桑也写了这道题的相关题解,这里是作为学习并引用博客的部分内容 这道题追根溯源发现2016年这个算法已经在APIO2016烟花表演与Codeforces 713C引入,自那之后似乎便销声匿迹了。相关题型数量也较少
阅读全文
摘要:比赛链接:https://atcoder.jp/contests/abc167/tasks AB水题, C - Skill Up 题意: 初始时 个算法的能力均为 , 次中每次可以花费 元提升 个算法的能力(提升程度可能不等),问 \(m\
阅读全文
摘要:题目链接:Here 候补链接:Here 题意: 能否将一些括号串编排为合法串,如果能,输出编排顺序。 思路: 首先将每个串内匹配的左右括号抵消,最终得到 个右括号 + 个左括号的串。 这些串可分为四类: 只有左括号 左右括号都有,且 左括号个数 y ≥ 右括号个数 x 左右括
阅读全文
摘要:比赛链接:Here AB水题, C - One More aab aba baa 题意: 给出字符串 和整数 ,请输出字典序第 大的原字符串 的排序 思路: 先说简单写法: 利用 C++ 内置函数 next_permutation 直接排序即可(代码一
阅读全文
摘要:比赛链接:Here AcWing 3811. 排列 签到题, 先输出 然后输出 即可 AcWing 3812. 机器人走迷宫 不会什么特别高级的方法 qaq,只能全排列 + bfs(懒得写太长了,注释写代码里 qaq) #include <bits/stdc
阅读全文
摘要:比赛链接:Here A题挺水的就不写了 1304B - Longest Palindrome 题意: 输入 个长度为 的字符串,问这些字符串能组成的最长回文串有多长。 思路: 贪心的思想,我们只需要用当前字符串以及寻找该字符串的反向串是否存在,如果存在的话,就把该字符串与它的
阅读全文
摘要:比赛链接:Here 1315A. Dead Pixel 签到题, 比较四个值 max(max(x, a - 1 - x) * b, a * max(y, b - 1 - y)) 1315B. Homecoming 花费 元 花费 元
阅读全文
摘要:蒟蒻大佬时隔三个月更新了!!拍手拍手 而且是更新了几篇关于DP的文章(RioTian狂喜) 现在赶紧复习一波树形DP.... 树形DP基础:Here,CF上部分树形DP练习题:Here 在学习树形DP之前,我们先要搞清楚一个问题,什么是树?根据图论课上学到的知识我们知道,连通的无
阅读全文
摘要:比赛链接:Here 1560A. Dislike of Threes Description 找出第 大的不可被 整除以及非 结尾的整数 直接枚举出前 1000 个符合条件的数,然后输出 int main() { cin.tie(nullptr)->sync_with_std
阅读全文
摘要:题目链接:Here 题意:把 个数变成 个相同的数,每次可以把 个数里最大的 或最小的 ,问最小改变次数 思路: 我们可以枚举,把 个数变成 个 (这个相同的数一定是数组里的数,因为如果不是,那
阅读全文
摘要:题目链接:Here AcWing 3805. 环形数组 签到题,循环减少出现次数,如果是 cnt[x] = 1 的话加入新的数组中 const int N = 1e3 + 10; int cnt[N]; int main() { cin.tie(nullptr)->sync_with_stdio(f
阅读全文
摘要:题目链接:Here ABC水题, D. Not Divisible 看了题解才想到,可以用 Sieve of Eratosthenes,因为 最大才 但有注意的点 1 1 5 2 2 2 3 3 5 2 2 2 4 4 5 1 1 1 1 2 重复出现的数字 简单的
阅读全文
摘要:很好的一场,F1经典离散化DP
阅读全文
摘要:比赛链接:Here 1559A. Mocha and Math 题意: 给定一个区间,选择区间内的值执行 & 操作使得区间最大值最小化 观察样例发现:令 x = (1 << 30) - 1 后 答案 证明: 我们假设答案是 x。 在它的二
阅读全文
摘要:题目链接:Here ABC水题, D - Sum of Maximum Weights 上图中最大权 对答案的贡献是这条边两边的连通块的 size 的乘积再乘以 9 受到上面的启发,我们可以把每条边按边权大小从小到大排序。对于每条边(边权记为 ),先求出当前边连接的两个 gro
阅读全文
摘要:AcWing 3734. 求和 其实这道题并不难,只是思维性很强! 因为 的各个数位不包含除了 和 以外的其他数字。 仔细观察数据会发现因为 中符合条件的其实不会很多, 所以可以选择 DFS 打表把所有符合条件的枚举
阅读全文
摘要:本次 5 道题均来自Codeforce 关于树形DP的算法讲解:Here 791D. Bear and Tree Jumps 如果小熊每次能跳跃的距离为1,那么问题变为求树上任意两点之间距离之和。 对于每一条边sum1和sum2分别表示边的左右点数,ans=各边的sum1*sum2之和即为答案。 而
阅读全文
摘要:A - AAA POJ - 3321 给你一颗树,支持两种操作 1.修改某一节点的权值 2.查询子树的权值(子树中节点的个数) 很显然可以用树状数组/线段树维护 B - BBB CodeForces - 978A 存一下出现次数即可 int a[100], st[1100]; int main()
阅读全文
摘要:自从多校后心憔悴啊,发现DP还是太水了,有一场的区间DP竟然不会做,咳,果然是赤裸裸的水军。 花了几天时间写了几道区间DP的题目,大部分都是水题,然后和以前的合并起来就是KB区间DP这个8 + 1道题的专辑,大家可以试着AK。 区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示
阅读全文
摘要:题目链接:Here 题意: 给定 个点的坐标,先问这些点能否组成一个凸包,如是凸包,问用不相交的线来切这个凸包使得凸包只由三角形组成,根据 算切线的费用,问最少的切割费用。 解题思路:参考于
阅读全文
摘要:这一场好神奇!能AK了 AB水题, C - One Quadrillion and One Dalmatians 把一个数字转化为字母,规则为 对应 , 27 对应 aa ..... 循环至 N = 0即可,转26进制 int main() { cin.ti
阅读全文
摘要:前置知识:分块。 朴素的打表,指的是在比赛时把所有可能的输入对应的答案都计算出来并保存下来,然后在代码里开个数组把答案放里面,直接输出即可。 注意这个技巧只适用于输入的值域不大(如,输入只有一个数,而且范围很小)的问题,否则可能会导致代码过长、MLE、打表需要的时间过长等问题。 Sample Des
阅读全文
摘要:最大最小问题:优先考虑二分答案 dp 最短路 涉及到取与不取考虑背包 多组数据时一定记得每次初始化/清空数组和队列等 而且初始化时不乱用 memset 因为很慢。 一定要考虑答案是否具有单调性(有很多计数题可能符合条件的数也是具有单调性的) 记住:scanf效率远大于cin.因此尽量使用scanf(
阅读全文
摘要:A - Xor Sum 似乎是很明显的字典树问题(不会啊,最后搬了一个板子修修改改以后才过了 AcWing 相似题目:143. 最大异或对 最后得吐槽一下 memset 为什么能这么慢啊 Kora! 改手动初始化之后从 TLE 降到 500ms const int MAXN = 100005; in
阅读全文
摘要:最近学习和写了一个 mint 的板子 ,其中用到了 noexcept 关键字,对这个关键字不太熟悉,便学习一下刘毅学长的文章。 C++98 中的异常规范(Exception Specification) throw 关键字除了可以用在函数体中抛出异常,还可以用在函数头和函数体之间,指明当前函数能够抛
阅读全文
摘要:自动对 int 取模 // modint template<int MOD> struct Fp { ll val; constexpr Fp(ll v = 0) noexcept : val(v % MOD) { if (val < 0) val += MOD; } constexpr int g
阅读全文
摘要:题目传送门:Here Description 提供由小写字符构成的长度N的字符串S。 请将S分割成几个连续的字符串,并判断这些字符串是否能够全部变成“dream”、“dreamer”、“erase”、“eraser”。 在这里试试DP。 DP[i] $\lefta
阅读全文
摘要:前言本文转载自 OI wiki,感谢社区的转载支持和其他方面的支持 简介 其实,分块是一种思想,而不是一种数据结构。 在 XCPC 的各个比赛中,各种难度的分块思想都有出现。 分块的基本思想是,通过对原数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。
阅读全文
摘要:Description 美食家 Apple 先生是一家美食杂志的主编。他会用一个正整数来评价每一道菜。 美食家在第一天品尝第 道菜,第二天品尝了 道菜。他制作了一张 的表格,记录了他对菜肴的评价。如果第一套中的第 道菜比第二套中的第 道菜好,那
阅读全文
摘要:AB水题, C - Tsundoku 题目描述 有两摞书,一摞有 本,从上至下每本需阅读 分钟,一摞有 本,从上至下每本需阅读 分钟,问最多能在 分钟内读多少本书。 挺明显的前缀和处理,枚举从第一摞书中读多少本,余下的时间用二分查找能在第二摞书中读多少
阅读全文
摘要:比赛链接:Here 很可惜,如果再强一点,就可以拿牌子了。 5道即可金牌尾 or 银首 F. Kobolds and Catacombs (思维) 真不难,只是理解错了题意 如果原数组 和 排序后的数组 在某个位置前缀和相同和可以划分为一组 const int N = 1e6
阅读全文
摘要:这题直接贪心显然不可行. 考虑树形dp,用 表示到 人后,以 为根的所有人安装完的最短时间. 对于一个节点 , 假设拜访子节点的顺序为 ,那么得到转移方程. \[ f_u = max(f_v + \sum\li
阅读全文
摘要:前置芝士:Here 本文是基于 OI wiki 上的文章加以修改完成,感谢社区的转载支持和其他方面的支持 树形 DP,即在树上进行的 DP。由于树固有的递归性质,树形 DP 一般都是递归进行的。 基础 以下面这道题为例,介绍一下树形 DP 的一般过程。 例题 洛谷 P1352 没有上司的舞会 题目描
阅读全文
摘要:比赛链接:Here A - 119 × 2^23 + 1 注意到 ,所以我们可以直接枚举 ~ int main() { cin.tie(nullptr)->sync_with_stdio(false); ll n; cin >> n;
阅读全文
摘要:写在前面 深感自己 DP 很弱的 村人B 刷了点 DP 题,题集地址戳这里。 后记:刷完后感觉自己又行了 A - Frog 1 题意 给定 个石头,第 i 个石头的高度为 。现在要求小青蛙从 1 号石头跳到 n 号石头,每次小青蛙可以选择从 i 号石头跳到 i+1 或 i+
阅读全文
摘要:题目来源:AtCoder EDU DP题集 题目链接:Here 单独拎出来是因为这道题是一个很好的板子,值得记录 题意 给定一个 n 个节点的有向图的邻接矩阵,求该有向图中长度为 k 的路径长。 解法 算法涉及:倍增 Floyd 答案为该邻接矩阵的 次幂的行列式。 学过离散数学的后面图论
阅读全文
摘要:比赛链接:Here A - Max Add 观察一下发现每次输出与两点有关,前缀和和当前位置最大值 int main() { cin.tie(nullptr)->sync_with_stdio(false); int n; cin >> n; ll s = 0, t = 0, mx = INT_MI
阅读全文
摘要:比赛链接:Here 1549A. Gregor and Cryptography 不难,观察一下就容易得知要想使得 令 即可。 1549B. Gregor and the Pawn Game 一开始想叉了,直接贪心就
阅读全文
摘要:起因,这两天多校概率题挺多的,又不太会做。 刚好学长发了一些概率问题知识就有这个就去了解了一下 有一个很反直觉的问题,叫作百囚徒挑战。 很多时候,我们都会靠直觉去评价一件事情,但很多时候,我们的直觉是错的,哪怕感觉有多么准确,而最著名的反直觉问题,就是百囚徒挑战。 问题描述 监狱决定给关押的100名
阅读全文