题解p9669 jinan order

SZY 的旅行 题解

将图按照邻接矩阵存为一个矩阵,则有性质为:该矩阵的 \(k\) 次方反映了 在该图上恰好走 \(k\) 次的可达性。 有了这条性质可以按边权将所有边排序,在图上动态加入能新走的边,用矩阵快速幂处理出当前图恰好走这条边边权次的可达性矩阵。每新加入一条边,用 floyd 求出加入这条边影响后新的最短路。 ......
题解 SZY

P1084疫情控制 题解

P1084疫情控制 前言:这题思路不难,实现稍微有点难。总体来说,不算特别难的那种紫题,建议评蓝。 题目描述 给定一些点,用这些点来切断根节点到所有叶子节点的路径,可以移动这些点,不同的点可以同时移动,求时间最少。 思考过程 不同的点可以同时移动:看到这里,我们可以转化一下题目: 给定一些点,用这些 ......
题解 疫情 P1084 1084

[AGC033C] Removing Coins题解

思路 可以看出,每次对一个点 \(u\) 操作一次,就相当于删除以 \(u\) 为根的所有叶节点。 当然我们还是没有什么思路,我们可以想简单一点:在一条链上的情况。 如果 \(u\) 是链的端点:以 \(u\) 为根节点的叶节点只有一个,所以链的长度减一。 如果 \(u\) 不是链的端点:以 \(u ......
题解 Removing Coins 033C AGC

[ARC116C] Multiple Sequences题解

思路 我们可以很好的想到一种 \(O(nm)\) 的 dp: 状态:\(dp_{i,j}\) 为搜到第 \(i\) 个,最后一个数是 \(j\) 的方案数。 转移:\(dp_{i,j} = \displaystyle\sum_{k|j,k\not =j}dp_{i-1,k}\) 当然这是会超时的。 ......
题解 Sequences Multiple 116C ARC

P1612 [yLOI2018] 树上的链 题解

思路 看到条件 \(2\),我们得知:这个节点对应的最长链,一定在这个节点到根节点的简单路径上。 所以我们记录 \(1\) 到 \(i\) 之间的权值和,记为 \(sum_i\)。因为权值是正整数,所以满足单调性,可以二分。 如何二分路径上的点呢?我们维护一个与当前 dfs 同步的栈,记录从根节点到 ......
题解 P1612 1612 2018 yLOI

算法题解——多数元素

题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums = [3,2,3] 输出:3 示例 2: 输入:nums = [2,2,1,1,1,2 ......
题解 算法 元素

算法题解——轮转数组

题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7 ......
题解 数组 算法

[AGC009B] Tournament 题解

思路 考虑树形 \(\text{dp}\)。 我们将每个人与把自己淘汰的人连边。 得到一颗以一为根的树。 由于我们需要求出必须赢的场数最多的那位选手,至少要赢多少场。 考虑最多的限制。 可以使用树型动态规划。 每一次两个人比赛的代价为: \[dp_i=\max(dp_i,dp_j)+1 \]这样就达 ......
题解 Tournament 009B AGC 009

题解:CF118E

Tarjan 思路 先来看一下题目给出的无解的这个样例。 不难发现,导致无解的两条边就是 \(6 - 7\) 和 \(2 - 4\) 这两个桥。所以这个题就转换成了求桥,如果存在桥就是无解。 代码 #include<bits/stdc++.h> using namespace std; const ......
题解 118E 118 CF

[AGC037D] Sorting a Grid 题解

学长给我看了这道题,感觉很有趣啊!想了想想出来了。 考虑先把每个数还原到对应行上,然后用最后一次把它们斗出来。 那么我们就是要在第一次操作后,对于每种颜色使得它平铺在这个块上。 那么我们直接网络流或二分图匹配构造一下方案就做完力! ......
题解 Sorting 037D Grid AGC

Codeforces 512D. Fox And Travelling 题解

Fox And Travelling 题面翻译 给定一张 \(n\) 个点 \(m\) 条边的无向图。 一个点只有当与它直接相连的点中最多只有一个点未被选择过时才可被选择。 询问对于每个 \(k \in [0,n]\),有序选择 \(k\) 个点的方案数。 \(n \le 100\),\(m \le ......
题解 Codeforces Travelling 512 And

SP10606 题解

题目大意: 给你两个数 \(l,r\),定义 \(bal(x)\) 代表 \(x\) 是否满足出现过的每一数位,每个偶数出现奇数次,每个奇数出现偶数次。求 \[\sum \limits_{i=l}^{r} bal(i) \]思路: 看到记录每一数位出现几次,就是直接告诉你这是数位dp。至于如何记录每 ......
题解 10606 SP

洛谷P9290 [ROI 2018] Decryption 题解

include<bits/stdc++.h> pragma GCC optimize(1) pragma GCC optimize(2) pragma GCC optimize(3,"Ofast","inline") define reg register define int long long ......
题解 Decryption P9290 9290 2018

King's Tour 题解

King's Tour 题面大意 在 \(n\times m\) 的网格中构造一种从 \((1,1)\) 走到 \((a,b)\) 的方案,要求经过所有格子恰好一次,格子之间八联通。 思路分析 模拟赛题,赛时写了一个半小时过了( 思路不是很复杂,但是需要一些分类讨论。 引理:对于任意大小的矩形,一定 ......
题解 King Tour 39

【多校联考NOIP#3】比赛复盘 && 题解

A. 卡牌 这次比赛,一道签到题都没有。 本来以为是线段树上二分。就类似于花神的数论题那道,刚开始暴力修改(修改到线段树的每一个叶子节点),然后由于boss的attack在不断增加,到了 \(Att_i >= hp_j\) 的时候, \(j\) 这个牌顶多打一次,如果一个区间的 \(max\) 都小 ......
题解 amp NOIP

题解 P2188 小Z的 k 紧凑数

题目描述 小 Z 在草稿纸上列出了很多数,他觉得相邻两位数字差的绝对值不超过 \(k\) 的整数特别奇特,称其为 \(k\) 紧凑数。 现在小 Z 想知道 \([l,r]\) 内有多少个 \(k\) 紧凑数,希望你帮帮他。 具体思路 首先,要求数的个数,自然想到数位 dp。 然后可以用容斥原理拆询问 ......
题解 P2188 2188

CF1886C Decreasing String 题解

题面 \(S_n\) 由 \(S_{n-1}\) 去掉一个字母得到,\(S=S_1+S_2+...+S_n\) 给定 \(S_1\) 求 \(S\) 的第 \(N\) 位 solution 我们先考虑怎样去字母能保持字典序最小 显然,我们发现如果一个字母比前面那个字母小,那么我们就要删除前面那个字母 ......
题解 Decreasing String 1886C 1886

CF1886A Sum of Three 题解

Question 给定一个正整数 N ,我们需要找三个不同的整数x,y,z,使得 N = x+y+z,其中下x,y,z不能被三整除 solution 我们把N%3会有一些余数,我们针对余数来讨论,其中我们只关注xyz的余数 如果余数为0 那么也就可能是1+1+1,或者2+2+2,但是考虑到xyz不同 ......
题解 1886A Three 1886 Sum

CF1886B Fear of the Dark 题解

Question Monocarp 在一个二维平面上,他的初始点在 \(O=(0,0)\) ,他需要到 \(P(P_x,P_y)\) 不幸的是,他能走的范围在两个圆内,我们给出了两个圆的坐标 \(A=(A_x,A_y)\) ,\(B=(B_x,B_y)\) 两个圆的半径相同,我们需要找到最小的半径让 ......
题解 1886B 1886 Fear Dark

[NOI2014] 字符串(题解)

字符串(题解) 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法。 一句话题意:我们会处理kmp算法中的fail[]数组,来记录[1, i ]的真前后缀的最大 ......
题解 字符串 字符 2014 NOI

[APIO2019] 路灯 题解

LG5445 把询问 \(x,y\) 看作平面上的点 记当前时刻 \(t\),\(l\) 是与 \(i\) 连通的最左端,\(r\) 是与 \(i+1\) 连通的最右端,可以通过 set 维护断边找到 连边 \((i,i+1)\) 时 \(x\in[l,i],y\in[i+1,r]\) 连通了,考虑 ......
题解 路灯 APIO 2019

CF963B Destruction of a Tree 题解

CF963B Destruction of a Tree 题解 洛谷题目链接 这里提供一个较为朴素的 DP 想法。 题意简述 给定一棵树,节点个数不超过 \(2 \times 10^5\),每次可以删掉度数为偶数的点。问最后能不能删完;能删完给出删除方案。 思路分析 首先可以随便选一个点作为根。 其 ......
题解 Destruction 963B Tree 963

ABC214H Collecting 题解

前言 这是一道比较神仙的题目,其后半部分的建图是比较困难想到的,前半部分还是较为容易的。 题意 现在有一张\(N\)个点\(M\)条边的有向图,每个点有一个点权\(a_i\),现在要找出\(K\)条路径,使得这些路径的并集的点权和尽量大。现在求出点权和。 \(N, M \le 2\times 10^ ......
题解 Collecting 214H ABC 214

POD 题解

考虑每种颜色都只在一条链上出现这个限制。 考虑使用随机化 \(\text{hash}\),我们对每个点随机一个权值,使得每种颜色所有点异或值为 \(0\)。 这样一种颜色如果只在一条链上,那对两条链 \(\text{hash}\) 异或值的贡献就是 \(0\),否则就是两个随机值。 这样如果存在一个 ......
题解 POD

CF938F Erasing Substrings 题解

Erasing Substrings 一个神奇的想法是设 \(f_{i,j}\) 表示在位置 \([1,i]\) 中,我们删去了长度为 \(2^k(k\in j)\) 的一些串,所能得到的最小字典序。使用二分加哈希可以做到 \(O(n^2\log^2 n)\),无法承受。 发现对于状态 \(f_{i ......
题解 Substrings Erasing 938F 938

[ARC067F] Yakiniku Restaurants 题解

Yakiniku Restaurants 明显在最优方案中,行走方式一定是从一条线段的一端走到另一端,不回头。 于是设 \(f[i,j]\) 表示从 \(i\) 走到 \(j\) 的最优代价。明显,该代价对于不同的券相互独立。故我们依次考虑每一张券。 我们发现,假设有一张位置 \(k\) 的券,则所 ......
题解 Restaurants Yakiniku 067F ARC

[AGC013E] Placing Squares 题解

Placing Squares 关键是将问题从抽象的“正方形面积”转为具象的形式:一段长度为 \(d\) 的区间,有两个不同的小球要放进去,则总放置方案就是 \(d^2\) ,且不同的区间间方案是通过乘法原理结合的,刚好是题目中 \(\prod d^2\) 的形式。 于是我们可以设计 DP:设 \( ......
题解 Placing Squares 013E AGC

洛谷P3713 [BJOI2017] 机动训练 题解

机动训练 这题的瓶颈,在于把 \(a_i^2\) 看作 \(\sum\limits_{i=1}^{a_i}\sum\limits_{j=1}^{a_i}1\),然后我们就可以看成“两两相同的机动路径都能贡献 1”。于是我们设 \(f_{x1,y1,x2,y2}\) 表示两条起点为 \((x1,y1) ......
题解 机动 P3713 3713 2017

P1864 [NOI2009] 二叉查找树 题解

二叉查找树 首先该树的中序遍历是唯一可以确定的(直接按照数据值排序即可)。 然后,因为权值可以被修改成一切实数,故我们完全可以把权值离散化掉。 于是我们现在可以设置一个 DP 状态 \(f[l,r,lim]\) 表示: 区间 \([l,r]\) 中的所有东西构成了一棵子树,且树中最小权值不小于 \( ......
题解 P1864 1864 2009 NOI

[AGC030F] Permutation and Minimum 题解

Permutation and Minimum 看到 300 的数据范围,再加上计数题,很容易就往计数 DP 方向去想。 为方便,我们将 \(n\) 乘二。 因为是两个位置取 \(\min\),于是我们便想到从小往大把每个数填入序列。于是DP数组第一维的意义便出来了:当前已经填入了前 \(i\) 小 ......
题解 Permutation Minimum 030F AGC