07 2020 档案

摘要:题目大意: 求 \(\max\{a_i\&a_j\}\quad(i,j\in \{1\cdots n\})\)。 正文: 在位运算中,高位的数若选了得到的数肯定更大,那就将数列从大到小排序,比较相邻的两数就行了。 代码: int main() { scanf ("%d", &n); for (int 阅读全文
posted @ 2020-07-25 10:37 Jayun 阅读(94) 评论(0) 推荐(0)
摘要:题目大意: 一颗有 白、黑、灰三种颜色的树,但是合法的树的树中不含有黑色结点或者含有至多一个白色节点,现在要割掉几条树边,使得形成的若干树合法,并最小化割去树边权值的和。 正文: 树形DP。设 \(f_{x,j,k}\) 表示以 \(x\) 为根的合法子树拥有 \(j\) 个白色节点,\(k\) 个 阅读全文
posted @ 2020-07-22 22:45 Jayun 阅读(154) 评论(0) 推荐(0)
摘要:题目大意: 给出一个 $1$ 到 \(n\) 的排列,\(m\) 次操作让某区间升序排或降序排,问 \(q\) 位置最后是多少。 正文: 本题十分巧妙,二分一个 \(k\),排列里大于 \(k\) 的数为 1,否则为 0,线段树维护这个 01串,进行排序,再根据 \(q\) 的位置调整二分范围。 代 阅读全文
posted @ 2020-07-22 22:23 Jayun 阅读(115) 评论(0) 推荐(0)
摘要:题目大意: 求 \(n\) 个矩形的面积并。 正文: 本题计算面积并在扫描线中较为简单。抛开离散化,我们着重讲扫描线。 与上图为例,思考怎么计算它们的几何并。 暴力 用一个数组来存信息,覆盖了就标 1,否则标 0。暴力既好想又好写,但当坐标一大,时空都会超。 容斥 用总面积减去重合面积。但只局限于重 阅读全文
posted @ 2020-07-21 20:44 Jayun 阅读(153) 评论(0) 推荐(0)
摘要:题目大意: 给定一个有 \(n\) 个点的无向图,求出从 \(s\) 到 \(t\) 的最短路上的最大权值与最小权值的比。 正文: 并查集查询 \(s\) 与 \(t\) 是否连通,可以通过给邻接表按权值从大到小排序,枚举每次连通的最大最小权值比即可。 代码: int find_(int x) {i 阅读全文
posted @ 2020-07-21 09:50 Jayun 阅读(83) 评论(0) 推荐(0)
摘要:题目大意: 一个有向图,\(n\) 个节点 \(m\) 条边,求第一个点到各个点的最短路径与各个点到第一个点的最短路径之和。 正文: 单源最短路模板题,求 各个点到第一个点的最短路径 时反着存边即可。 代码: struct node { int z, to, next; }e[M], dge[M]; 阅读全文
posted @ 2020-07-20 21:44 Jayun 阅读(144) 评论(0) 推荐(0)
摘要:题目大意: 给 \(n\) 个点分组,使得最近的两组最远。 正文: 由 最近的两组最远 想到二分答案,分组 也可以联想到并查集。用二分答案,很明显二分的是“最近的两组”的距离。而我们可以通过枚举每个点的距离比较当前二分的最近两组距离,如果小于,说明两点皆为同一组内。最后可以通过枚举出的组数比较题目限 阅读全文
posted @ 2020-07-20 18:37 Jayun 阅读(120) 评论(0) 推荐(0)
摘要:题目大意: 求有多少种 $1$ 到 \(n\) 的排列 \(a\),满足序列恰好有 \(m\) 个位置 \(i\),使得 \(a_i=i\),答案对 $10^{9}+7$。 正文: 可以先列个表: 再从题目意思出发,若 \(m=0\),即没有一个数字在自己位置上,那就是错位排列。错位排列的递推式是 阅读全文
posted @ 2020-07-20 08:48 Jayun 阅读(193) 评论(0) 推荐(0)
摘要:题目大意: 求一个给定的圆 \((x^2+y^2=r^2)\),在圆周上有多少个点的坐标是整数。 正文: 声明: 此方法概括(转)自 3b1b 的视频。 如果我们直接照着题目给出的勾股定理枚举,最优解的时间复杂度似乎就只有 \(O(r)\),可 \(r\) 达到二十亿,这方法觉得行不通。 数学里比较 阅读全文
posted @ 2020-07-19 22:09 Jayun 阅读(155) 评论(0) 推荐(0)
摘要:题目大意: 给出一串数以及一个数字 \(C\),要求计算出所有 \(A−B=C\) 的数对的个数(不同位置的数字一样的数对算不同的数对)。 正文: hash表练手题。将每一个数存进hash表里,再枚举每一个存进hash表里的数减 \(C\) 在hash表里的数目即可。 代码: int n, c, h 阅读全文
posted @ 2020-07-19 16:24 Jayun 阅读(198) 评论(0) 推荐(0)
摘要:题目大意: 给出两个数 \(a,b\),求出 \([a,b]\) 中各位数字之和能整除原数的数的个数。 正文: 在区间内的计数内问题,考虑到使用 数位DP。 抓住题目大意中的关键词: 求出 \([a,b]\) 中各位数字之和能整除原数的数的个数。 一般数位DP的状态的隐藏在题目中,因此得出动态规划的 阅读全文
posted @ 2020-07-19 10:49 Jayun 阅读(127) 评论(0) 推荐(0)