04 2020 档案
摘要:~~WA11到死......~~ 题面 题意 给定 n 个数 m\[i],每个 m[i] 都在 [1,k] 的范围内 再给定 k 个数 c[i] 要求将所有的 m[i] 进行分组 c[i] 表示每组中 大于等于 i 的数不超过 c[i] 个 问最少能分几组,并输出分组方案 解题思路 自己的贪心思路错
阅读全文
摘要:~~补题~~ 题面 题意 数位板如题面所示,每个数位板由 7 个灯管组成 给定 n 个数位板此时的状态,1 为亮 0 为暗 要求 严格 再点亮 k 个灯管,使得数位板上能够呈现出数字,且这个数字最大 如果无法呈现出数字,输出 1,否则,输出操作后呈现的数字 答案允许存在前导 0 解题思路 当时只想着
阅读全文
摘要:题面 题意 给定一个长度为 n 的数列,n 为偶数,保证每个元素在 [ 1 , k ] 之间 每次操作可以把某个位置的数字变成 [ 1 , k ] 内的任意数字 要求让这个数列满足:对于所有的 i ∈ [ 1 , n/2 ],a[i] + a[n i+1] 是一个定值 问最少的操作次数 解题思路 差
阅读全文
摘要:题面 题意 给定三个数组 要求从每个数组中拿出一个数 问这三个数 两两之差的平方和的最小值 解题思路 虽然说是思路,实际上有些瞎搞吧 下面可能会看上去有点乱 对于这种题目,我只知道的结论只有一个: 如果已经固定了两个数 a b ,且保证第三个数 c 在这两个数之间 那么当 c 位于 a b 的正中间
阅读全文
摘要:题面 题意 给定 n 个节点 n 1 条边组成的树,以节点 1 为根 现需要选出 k 个节点作为工业城市,其余城市均为旅游城市 问 从所有工业城市出发 走到 根节点 所 经过的旅游城市 数量之和的最大值 解题思路 反向思考,假定整个图全都是工业城市,那我们就需要选出 n k 个旅游城市即可 既然以节
阅读全文
摘要:写在前面 - 本篇用到的输入和存图方法 输入方式: 第一行两个数 n 和 root ,表示树共有 n 个节点,其中以编号为 root 的作为根节点 接下来 n-1 行,每行两个整数 a b ,表示节点 a 与节点 b 相连 const int MAXN=1e4+50; int dfs_order[M
阅读全文
摘要:题面 题意/解题思路 直接延用 Easy 版本的想法即可 详解见上一篇博客 "Codeforces 1335E1 Three Blocks Palindrome (easy version)" 完整程序 (109ms/2000ms) (使用缓冲区读入可达 78ms) c++ include usin
阅读全文
摘要:题面 题意 给定一个长度为 n 的数列 定义要求的回文子数列满足下图条件 其中 x 与 y 可以为 0 即这个回文子数列可以是 数字完全相同 的一个子数列 也可以是 只包含两种数字 ,且其中一种 平均分布 在另一种数字的两侧 求出最长的回文子数列长度 解题思路 在输入时往vector里记录下每个数字
阅读全文
摘要:~~明明是一道简单题,却因为mx初始值没有设置成负无穷而直接写了个0花了一个小时,后面的也没时间写了,害~~ 题面 题意 给定一个长度为 n 的数组 在第 k 秒钟时,可以往数组的 任意元素 上加上 2^k 1^,随便选,也可以不选 问最少需要多少秒的时间,才能让这个数组变成 不递减 的数列 解题思
阅读全文
摘要:区间最值查询问题的一般解法 区间最值查询问题,即RMQ(Range Minimum/Maximum Query) 常见解法有朴素算法——***O(n)***预处理、O(n)查询,总体复杂度O(n+nq) 线段树——***O(nlogn)***预处理、O(logn)查询,总体复杂度O((n+q)log
阅读全文
摘要:两种思路其实只差在写法上 看不懂的就直接看代码吧qwq UPD: 注意题目给定的数据范围(Hack掉了很多) n最大3e5,a b最大1e12 考虑最坏情况,即a=1e12,b=1,n=3e5 最终答案为(1e12 1) 3e5+1略小于1e17 所以无穷大值INF最好取大于1e17的值,下面的代码
阅读全文
摘要:题意 n个学生坐一排,每个学生要么朝左要么朝右 每秒钟可以将 当前状态 的任意 几对 面对面的 相邻 学生往自己的反方向转动 要求 恰好在k秒钟之后 保证没有任何一对相邻学生面对面 问是否存在解决方案 解题思路 首先可以~~想到~~(猜到)的是,如果刚开始已经没有任何一对相邻学生面对面了 那就直接输
阅读全文
摘要:题意 给定一个长度为 n 的数组 ar (n 解题思路 假设我们找到了一个和为0的子数组 br 那么只要有其他子数组包含br,那么这些子数组都不能称作好数组 所以我们在处理某个元素ar\[i]时,只看 以ar\[i]为右边界 的子数组,r=i 从 i 位置开始往左寻找,直到将某个和为0的子数组包含进
阅读全文
摘要:倍增算法 倍增算法采用了二分缩小范围的思想 使得待求两节点持续跳跃2的次方级的距离来快速求出LCA 是常见的求树上节点LCA的在线算法 倍增算法是要让同深度的两个节点同时向根节点方向跳跃 直到第一次在同一个祖先节点遇到 那么这个祖先节点就是他们的最近公共祖先节点LCA 在跳跃的过程中,每次跳跃的步数
阅读全文
摘要:最近公共祖先问题 树上两点的最近公共祖先问题(LCA - Least Common Ancestors) 对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u和v的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先。 例如,如图,在以A为根的树上 节点
阅读全文