摘要: 题目大意: 给定一个字符串,进行几个操作:将字符串中的 \(a\) 至 \(b\) 的字符复制到其 \(c\) 的位置。求出最终字符串长度为 \(k\) 的前缀。 正文: 思路: 可以定义 \(k\) 个指针指向字符串的前 \(k\) 位。但是直接暴力肯定时超,所以我们可以通过移动指针位置来确定最终 阅读全文
posted @ 2020-08-09 20:44 Jayun 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有 \(n\) 个竹签,只能拿走没被压着的竹签,问最多能拿走多少个竹签。 正文: 由题目大意可以看出此题是拓扑排序的板子题。 代码: int main() { scanf ("%d%d", &n, &m); for (int i = 1; i <= m; i++) { int u, v; 阅读全文
posted @ 2020-08-09 19:39 Jayun 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 我们会给定一个 \(N\times M\) 的矩阵,你需要从这个矩阵中找出一个 \(P\times P\) 的子矩阵,使得这个子矩阵的每一列和每一行都是回文序列。 正文: 这题数据水,暴力可过:三个方确定矩阵,两个方判断是否回文。 代码: for (int len = min(n, m) 阅读全文
posted @ 2020-08-09 19:29 Jayun 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 求 \(\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 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一颗有 白、黑、灰三种颜色的树,但是合法的树的树中不含有黑色结点或者含有至多一个白色节点,现在要割掉几条树边,使得形成的若干树合法,并最小化割去树边权值的和。 正文: 树形DP。设 \(f_{x,j,k}\) 表示以 \(x\) 为根的合法子树拥有 \(j\) 个白色节点,\(k\) 个 阅读全文
posted @ 2020-07-22 22:45 Jayun 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给出一个 $1$ 到 \(n\) 的排列,\(m\) 次操作让某区间升序排或降序排,问 \(q\) 位置最后是多少。 正文: 本题十分巧妙,二分一个 \(k\),排列里大于 \(k\) 的数为 1,否则为 0,线段树维护这个 01串,进行排序,再根据 \(q\) 的位置调整二分范围。 代 阅读全文
posted @ 2020-07-22 22:23 Jayun 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 求 \(n\) 个矩形的面积并。 正文: 本题计算面积并在扫描线中较为简单。抛开离散化,我们着重讲扫描线。 与上图为例,思考怎么计算它们的几何并。 暴力 用一个数组来存信息,覆盖了就标 1,否则标 0。暴力既好想又好写,但当坐标一大,时空都会超。 容斥 用总面积减去重合面积。但只局限于重 阅读全文
posted @ 2020-07-21 20:44 Jayun 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定一个有 \(n\) 个点的无向图,求出从 \(s\) 到 \(t\) 的最短路上的最大权值与最小权值的比。 正文: 并查集查询 \(s\) 与 \(t\) 是否连通,可以通过给邻接表按权值从大到小排序,枚举每次连通的最大最小权值比即可。 代码: int find_(int x) {i 阅读全文
posted @ 2020-07-21 09:50 Jayun 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个有向图,\(n\) 个节点 \(m\) 条边,求第一个点到各个点的最短路径与各个点到第一个点的最短路径之和。 正文: 单源最短路模板题,求 各个点到第一个点的最短路径 时反着存边即可。 代码: struct node { int z, to, next; }e[M], dge[M]; 阅读全文
posted @ 2020-07-20 21:44 Jayun 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给 \(n\) 个点分组,使得最近的两组最远。 正文: 由 最近的两组最远 想到二分答案,分组 也可以联想到并查集。用二分答案,很明显二分的是“最近的两组”的距离。而我们可以通过枚举每个点的距离比较当前二分的最近两组距离,如果小于,说明两点皆为同一组内。最后可以通过枚举出的组数比较题目限 阅读全文
posted @ 2020-07-20 18:37 Jayun 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 求有多少种 $1$ 到 \(n\) 的排列 \(a\),满足序列恰好有 \(m\) 个位置 \(i\),使得 \(a_i=i\),答案对 $10^{9}+7$。 正文: 可以先列个表: 再从题目意思出发,若 \(m=0\),即没有一个数字在自己位置上,那就是错位排列。错位排列的递推式是 阅读全文
posted @ 2020-07-20 08:48 Jayun 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 求一个给定的圆 \((x^2+y^2=r^2)\),在圆周上有多少个点的坐标是整数。 正文: 声明: 此方法概括(转)自 3b1b 的视频。 如果我们直接照着题目给出的勾股定理枚举,最优解的时间复杂度似乎就只有 \(O(r)\),可 \(r\) 达到二十亿,这方法觉得行不通。 数学里比较 阅读全文
posted @ 2020-07-19 22:09 Jayun 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给出一串数以及一个数字 \(C\),要求计算出所有 \(A−B=C\) 的数对的个数(不同位置的数字一样的数对算不同的数对)。 正文: hash表练手题。将每一个数存进hash表里,再枚举每一个存进hash表里的数减 \(C\) 在hash表里的数目即可。 代码: int n, c, h 阅读全文
posted @ 2020-07-19 16:24 Jayun 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给出两个数 \(a,b\),求出 \([a,b]\) 中各位数字之和能整除原数的数的个数。 正文: 在区间内的计数内问题,考虑到使用 数位DP。 抓住题目大意中的关键词: 求出 \([a,b]\) 中各位数字之和能整除原数的数的个数。 一般数位DP的状态的隐藏在题目中,因此得出动态规划的 阅读全文
posted @ 2020-07-19 10:49 Jayun 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给出一个长度为 \(N\) 的数列,\(M\) 次操作,每次操作两个数 \(a\) 和 \(b\),且在数列中的闭区间 \([a,b]\) 中的每个数都要加一且对其模十,在此之前要求出每个数的和。 正文: 因为 \(N \leq250000\) 所以要考虑 \(O(n\log n)\) 阅读全文
posted @ 2020-04-26 22:23 Jayun 阅读(130) 评论(1) 推荐(0) 编辑
摘要: 题目大意: 给定一颗 \(N\) 个节点组成的树,\(\texttt{3}\) 种颜色,其中 \(K\) 个节点已染色,要求任意两相邻节点颜色不同,求合法染色方案数。 正文: 考虑用树形DP,设 \(f_{x,i}\) 表示节点 \(x\) 为根的子树且它涂了颜色 \(i\) 的的染色方案。那么动态 阅读全文
posted @ 2020-04-26 20:36 Jayun 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 设 \(\text{sum}(i)\) 表示 \(i\) 的二进制表示中 \(\texttt{1}\) 的个数,求 \(\prod_{i=1}^{N}\text{sum}(i)\)。 正文: 本题正解是数位DP,但是组合数 \(C_{n}^{m}\) 正好可以表示 \(n\) 位的二进制 阅读全文
posted @ 2020-04-19 23:42 Jayun 阅读(110) 评论(1) 推荐(0) 编辑
摘要: 题目大意: 在一个长度为 $n$ 的序列中求出长度为 $(k+1)$ 的最大子段。 正文: 本题唯一的需要注意的一点是当 $k=n$ 时要输出所有数的和,像我的考场代码: 要是 $n\leq k$ 就锅了。 正确代码: 阅读全文
posted @ 2020-04-19 22:52 Jayun 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 题目大意: \(N\) 个城市,由 \(M\) 条单向道路连接,每次去城市 \(i\) 都能赚 \(m_i\) 元,但是每去一个城市都会花费一天,旅行 \(T\) 天就要花费 \(C\cdot T^{2}\) 元,求最多能赚到多少钱。 正文: 考虑用动态规划解决本题,设 \(f_{i,j}\) 表示 阅读全文
posted @ 2020-04-12 23:19 Jayun 阅读(156) 评论(0) 推荐(0) 编辑
摘要: Cereal 的一种解法。 阅读全文
posted @ 2020-04-12 23:17 Jayun 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有 $n$ 头牛和 $m$ 个区间,要求每头牛都在区间内且每相邻的牛之间的间隔都不小于 $d$,求 $d$ 的最大可能值。 正文: 说到最大化最小值,一般情况下会想到用二分来解决这些问题。二分最关键的是 函数,在 函数中,我们可以通过枚举牛牛的位置来判断当前二分到的 $d$ 是否符合题目 阅读全文
posted @ 2020-04-12 22:54 Jayun 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有 $n\cdot n$ 头牛,有的牛朝左边,有的牛朝右边,可以将某一行或某一列的奶牛全部往后转(即朝左的向右,朝右的向左),现在让所有奶牛中除了一头之外都朝向相同的方向,请找出这样的一头奶牛。 正文: 举例: 直接这么推会比较难,那就把思路倒过来,假设捣乱的那头牛的位置在 $[1,1] 阅读全文
posted @ 2020-04-05 23:51 Jayun 阅读(180) 评论(1) 推荐(0) 编辑
摘要: 闲话: $ Upd 4.04 $ 让我们 哀悼抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞 致敬在这次斗争中默默付出的平凡英雄们 纪念那些被 404 的声音 题目大意: 有 $n$ 个点在一个棋盘上,一个点可以和多个点连一条边,其中有 $m$ 条边,连成的点可以作一个小组,现在用一个长方形把任意一个小组框 阅读全文
posted @ 2020-04-04 05:09 Jayun 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有一个长度为 $n$ 的只包含 ' ' 或 '+' 的字符串,刚开始全是 '+',还有 $m$ 次操作,每次操作有一个时间 $c$、两个只包含 ' '、'+'、'0' 的 字符串$A$ 和 字符串$B$,如果字符串和 字符串$A$ 相等(字符串$A$ 中 '0' 的位置不算),那字符串就 阅读全文
posted @ 2020-03-29 23:58 Jayun 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有 $n$ 个数,$m$ 个操作,每个操作都给定一个区间、两个步骤,查询区间和与区间加一(即 $0\leq i\leq 8$ 时 $i\leftarrow i+1$,否则 $i\leftarrow 0$)。 正文: 因为是区间操作所以考虑线段树。可以开两个线段树,一个存区间和,另一个存区 阅读全文
posted @ 2020-03-29 23:23 Jayun 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有 $n$ 个方块,一开始在第一个方块,第一次只能跳到第二个方块上,接下来可以往前或往后跳。如果往前跳那跳跃距离必须比上一次要大 $1$,如果往后跳那跳跃距离必须跟上一次一样。每跳到一个方块都要花费 $a_i$ 代价,求从一跳到 $n$ 的最小代价是多少。 正文: 明显可以使用动态规划解 阅读全文
posted @ 2020-03-22 01:19 Jayun 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有几个平台,各有各的高度,每个平台两端各有一个柱子,柱子一直向下延长,直到碰到其他平台或地板。问所有柱子总共多长。 正文: $n^2$ 暴力匹配平台 $i$ 的某端有没有被平台 $j$ 的两端围住(即:$j_l\leq i_l= x1[j] && x1[i] x1[j] && x2[i] 阅读全文
posted @ 2020-03-19 19:47 Jayun 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 介绍题目“Magical GCD”的一种解法(非最优) 阅读全文
posted @ 2020-03-15 03:50 Jayun 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 本文介绍了题目“[APIO2010]特别行动队” 的两种解法。 阅读全文
posted @ 2020-03-15 03:21 Jayun 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一座山,山脚下有个锯木厂,山上有 $n$ 棵树,把一棵树砍掉的费用是它的重量乘离锯木厂的距离,如果再在山上设置两个锯木厂,求把所有树砍掉的最小费用。 正文: 考虑直接用动态规划。设 $f_i$ 表示第二个锯木厂设置在 $i$ 处的最小费用,$F_{i,j}$ 表示从 $(i+1)$ 到 阅读全文
posted @ 2020-03-08 22:22 Jayun 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 在一个 $n \times n$ 的棋盘上,有 $n$ 个障碍物,它们两两不同行不同列,如果再放 $n$ 个棋子在棋盘上,条件也是两两不同行不同列且不能放在障碍物上,求一共有多少种方案。 正文: 首先来举个例子: 因为它们两两不同列,也就是说每列都有一个,那么干脆直接用一个数列 $a$ 阅读全文
posted @ 2020-03-08 19:26 Jayun 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 判断一个序列是否是另外一个序列删除若干个数字之后得到的。 正文: 我们可以定义两个指针,分别指向长序列和短序列。 拿样例来举例: 如果指针指的数相同,两个指针都往右跳: 如果不同,则指向长序列的指针往右跳: 以此类推。 超时,得分 $\texttt{30}$ 分。 考虑将长序列每一个出现 阅读全文
posted @ 2020-02-26 18:04 Jayun 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个 $n \times m$ 的地方,每个格子都有方向,问最少要多少个装置从任意一点出发都会碰到装置。 正文: 如果格子连在一起成为一条路的话,其实只用求路的条数就行,考虑用并查集。 代码: 阅读全文
posted @ 2020-02-25 23:52 Jayun 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定一个数 $n$,对于每个 $n$,都有能整除它的数 $x$,我们最后要输出的结果是每个 $x$ 的“难挖指数”的和。 正文: 举一个例子,当 $x=5$ 时, 有和它互质的数 $y \in \{1,2,3,4\}$。 此时我引出一条定理,当 $x$ 与 $y$ 互质时,$x$ 和 $ 阅读全文
posted @ 2020-02-02 20:42 Jayun 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "可能更好的阅读" 题目大意: 有$n$个仓库,要把所有仓库的存库数统一,问一共要搬多少物品。 正文: 首先这是费用流。 要统一存库数,统一的存款数就是所有存库数的平均值,那就是说,如果存库数小于平均值就要进货,如果存库数大于平均值就要出货。 那我们就把每个仓库作两份(假设对于第$i$个仓库,两份分 阅读全文
posted @ 2020-01-23 19:28 Jayun 阅读(155) 评论(2) 推荐(0) 编辑
摘要: 本题是【网络流24题】最水的一道,此文是它的题解 阅读全文
posted @ 2020-01-17 22:28 Jayun 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有$n$个人,一些人有床,一些人没床,有床的人有可能不在,在的人可以借认识的人的床(和自己的),问可不可以在的人都能借到床。 正文: 考虑分类,人是一类,床是一类,人和自己借的到的床连线,拿题目样例举例如图: 可以发现这是二分图,而且我们的结果也和二分图匹配有关。 我们通过这个图求出二分 阅读全文
posted @ 2020-01-17 20:04 Jayun 阅读(130) 评论(0) 推荐(0) 编辑
摘要: "可能更好的阅读" 题目大意: 快速求: $$\large{\sum_{d\in prime}\sum_{x=1}^{n}\sum_{y=1}^{n}[\gcd(x,y)==d]}$$ 正文: 方法一: 通过预处理筛法筛出素数再暴力枚举$x$和$y$。 预期得分20分。 方法二: 在方法一的基础考虑 阅读全文
posted @ 2020-01-16 09:10 Jayun 阅读(160) 评论(0) 推荐(1) 编辑
摘要: 引出: 求出一个二分图的最大匹配。 二分图匹配怎么求? 可以用匈牙利算法:遍历每个点,查找增广路,若找到增广路,则修改匹配集合和匹配数;否则终止算法,返回最大匹配数。这样时间复杂度是 \(\mathcal{O}(nm)\) 的。代码实现: int con[N * N]; bool vis[N * N 阅读全文
posted @ 2019-12-27 22:28 Jayun 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 声明: 本题解借鉴了@Heartlessly(luogu UID=32139)的内容 题目大意: 每只牛对于每个牛棚有一个差评值,现在分配牛棚,使得所有牛的最大差评值与最小差评值的差最小,求这个值。 正文: 因为题目中有提到过每个牛棚的限度,也就是说我们可以用网络瘤来求解。 样例图: 牛棚编号要加上 阅读全文
posted @ 2019-12-27 21:53 Jayun 阅读(188) 评论(0) 推荐(0) 编辑