题解 SP16185 Mining your own business 原题传送门 题意 给你一个无向图,求至少安装多少个太平井,才能使不管那个点封闭,其他点都可以与有太平井的点联通. 题解 其他题解里都说要用"点双连通分量",其实不用. 我们先用tarjan求出所有割点,然后我们假设所有的割点都坍塌掉了,整张图就被我们分成了许多联通块,我们可以用暴搜找出所有联通块.每个联通块与割点有如下关系(s表示一个联通块的点的数量): 这个联通块与0个割点直接连接:说明这个联通块与其他联通块不相…
「题解报告」 P3167 [CQOI2014]通配符匹配 思路 *和?显然无法直接匹配,但是可以发现「通配符个数不超过 \(10\) 」,那么我们可以考虑分段匹配. 我们首先把原字符串分成多个以一个通配符开头的字符串,如将 happy*birthdey?xingchen 分成: happy *birthday ?xingchen 然后设原串有 \(m\) 个通配符, \(op_i\) 表示分出来的第 \(i\) 个串前的通配符(\(0\) 没有,\(1\) 是?,\(2\) 是*),\(len_…
题解 P4577 [FJOI2018]领导集团问题 题解区好像没有线段树上又套了二分的做法,于是就有了这片题解. 题目传送门 怀着必 WA 的决心交了两发,一不小心就过了. 题意 求一个树上最长不下降子序列. 思路 首先考虑裸的 dp:设 \(f_{u,j}\) 表示以 \(u\) 为根的子树里选的数的最大值不小于 \(j\) 能选多少个. \[f_{u,j}= \begin{cases} \sum_\limits{v\ is\ u's\ son}f_{v,j} &j>w_u\\ \max\…
P2154 虔诚的墓主人 题解 原题传送门 题意 在 \(n\times m\) 一个方格上给你 \(w\) 个点,求方格里每个点正上下左右各选 \(k\) 个点的方案数. \(1 \le N, M \le 1,000,000,000,0 \le x_i \le N,0 \le y_i \le M,1 \le W \le 100,000,1 \le k \le 10\). 思路 首先看到 \(N,M\) 这么大,肯定要先离散化一下. 然后考虑怎么求方案数. 我们先对离散化后的点排个序,然后考虑两…
P3503 Blocks 题解 原题传送门 思路 首先我们可以发现,若 \(a_l\) ~ \(a_r\) 的平均值大于等于 \(k\) ,则这个区间一定可以转化为都大于等于 \(k\) 的.我们就把这个问题化简成了"求最长的平均值大于等于 \(k\) 的子序列". 再去化简,可以发现,如果我们把序列中的每一项都减去 \(k\) ,再求前缀和 \(s\) ,若 \(s_i-s_j\ge 0\) ,则区间 \((j,i)\) 一定满足条件. 那么我们考虑如何求这种区间. 不难发现,若 \…
P3354 题解 题目传送门 一道很恶心的树形dp 但是我喜欢 题目大意: 一片海旁边有一条树状的河,入海口有一个大伐木场,每条河的分叉处都有村庄.建了伐木场的村庄可以直接处理木料,否则要往下游的伐木场运,运费为每吨每千米 \(1\) 分钱.现在要在一些村庄建 \(k\) 个伐木场,求建完之后最小的运输费用. 设计状态: \[f(u,z,k,l): \begin{cases} u:以第i个点为根的子树 \\ z:离点i最近的伐木场的位置(祖先) \\ k:该子树被分配了k个伐木场 \\ l:0或…
大佬们的题解都太深奥了,直接把转移方程放出来让其他大佬们感性理解,蒟蒻们很难理解,所以我就写了一篇让像我一样的蒟蒻能看懂的题解 原题传送门 动态规划三部曲:确定状态,转移方程,初始状态和答案. --神仙 @akicc 第一步 确定状态 \(f_{i,j,k}(k\in\{0,1,2\})\)表示第 \(i\) 个数选为 \(j\) 且和前一个数是小于/等于/大于(\(k=0\) 是大于,\(k=1\) 是等于,\(k=2\) 是小于)的关系时的方案数. 第二步 转移方程 把三种关系分开讨论: \…
原题传送门 神奇的5分算法:直接输出样例. 20分算法 直接把每个点是否有牛的状态DFS一遍同时判断是否合法,时间复杂度约为\(O(2^{n^2})\)(因为有判断合法的剪枝所以会比这个低).而在前四个测试点中\(N\le4\),用枚举算法在最坏情况下需要运行\(65536\)次,时间非常富裕,但是在之后的测试点中就会超时了. 50分算法 每四个方格内都有\(C^2_4=6\)种方法放置牛: 1 2 3 4 5 6 CC C. C. .C .C .. .. C. .C C. .C CC DFS每…
「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 或和. 分析: 或和与是一个东西,只要把所有数都异或上\((1<<31)-1\)然后再从总答案中减掉就能互相转化,考虑求与. 枚举每一位,转化成算有多少个全\(1\)子矩形,单调栈经典问题.总时间复杂度\(\mathrm{O}(n^2\log n)\). 代码: #include <cst…
[题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现,这道理可以用打马后炮别的方式来理解. 先放松一点条件,假如位运算只有一种,定位某一颗生成树,那么可以知道 \[ w(T)=\oplus_{w\in W} w \] 写成生成函数的形式,对于每条边就是 \[ h((i,j))=[\exist e=(i,j,w)]x^w \] 现在重边可以看做一条边了…
目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞定,最后无奈 \(90pts\) . 然而 \(T2\) 想到很多很奇怪的做法,结果正解在 \(28min\) 之内做出... 结果 \(T3\) 是本人最不擅长的伪期望,直接跳过,啥都没得. 来水一发 \(T1\) 的题解... 题目描述 点这里 考场思路 其实并没有什么十分特别的思路,就是一通乱…
文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最难看懂的题目之一了- 首先把题目重新叙述一遍. 题目大致在说,你有一个 P×Q×RP\times Q\times RP×Q×R 的蛋糕,每个点有一个不客观度 v[i][j][k]v[i][j][k]v[i][j][k] ,现在你要把这个蛋糕切开. 切蛋糕的规则是什么呢? 首先我们解释一下: 对于每一…
「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts60pts60pts 的数据范围有点思路,然后就开始码. 大概思路是 DPDPDP , 定义状态 dp[i][j]:dp[i][j]:dp[i][j]: 在第 iii 行的划分点是 jjj ,即把第 iii 行分成 [1,j][1,j][1,j] 与 [j+1,M][j+1,M][j+1,M] .…
「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵,随便搞搞就成了,卡常 Code: #include <cstdio> #include <cstring> namespace io { const int SIZE=(1<<21)+1; char ibuf[SIZE],*iS,*iT,obuf[SIZE],*oS=ob…
「AHOI / HNOI2018」转盘 可能是我语文水平不太行... 首先可以猜到一些事实,这个策略一定可以被一个式子表示出来,不然带修修改个锤子. 然后我们发现,可以枚举起点,然后直接往前走,如果要等就等到它出现. 因为如果不等,一定要走超过一圈,这样一定不如从它后面那个点当起点. 既然要等,不如我们就在起点等了,显然这样的等价的,于是我们可以搞出这个式子了. \[ \min_{i=1}^n(\max_{j=i}^{i+n-1}S_j-j+i)+n-1 \] 这里我们把\(S\)倍长了 稍微放…
「CTS2019 | CTSC2019」氪金手游 降 智 好 题 ... 考场上签到失败了,没想容斥就只打了20分暴力... 考虑一个事情,你抽中一个度为0的点,相当于把这个点删掉了(当然你也只能抽中度为0的点) 删掉就是字面意思,就是剩下的树变成子问题 考虑为什么,在抽中这个\(i\)号点后,抽中其他点的概率为 \[ \frac{W-w_i}{W}\sum_{i=0}^{\infty}(\frac{w_i}{W})^i=1 \] 说明这个点已经白给了 然后考虑这个树如果是一颗外向树,就是每个点…
「CTS2019 | CTSC2019」随机立方体 据说这是签到题,但是我计数学的实在有点差,这里认真说一说. 我们先考虑一些事实 如果我们在位置\((x_0,y_0,z_0)\)钦定了一个极大数\(p\),那么我们需要把\(x=x_0\),\(y=y_0\)与\(z=z_0\)的三个平面的交中填上比\(p\)小的数字,这样,剩下的正方体就成了一个长宽高分别为\((n-1)(m-1)(l-1)\)的子问题了. 考虑到我们使用的是数字的相对大小关系,而不是数字的值,也就是说,任意的\(k\)个数字…
传送门 「JOI2019 Final」勇者比太郎 看懂题就很简单了,后缀和随便维护一下就好了,别用树状数组强加一个\(\log\)就行. 「JOI2019 Final」画展 显然可以先把所有的画框按大小排序. 然后把所有的画以美观值为第一关键字从小到大排序,大小为第二关键字也是从小到大排. 然后注意一下,贪心的时候要从后往前枚举,也就是先匹配大的画框,因为大的画框也一定能装下小的画,这个肯定不会更差. 「JOI2019 Final」有趣的家庭菜园 这题过于毒瘤,我不会啊... 「JOI2019…
0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making the Grade 路面修整 4 分析题面 4.1 简要描述 给出数列 \(A\), 求非严格单调不上升或单调不下降, 且\(S=\sum^N_{i=1}|A_i-B_i|\) 最小的序列\(B\),输出\(S\) 4.2 模型转换 输入\(N\), 然后输入\(N\)个数,求最小的改动这些数使之成非严…
写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT 后来做了 HDU 4035 终于会了.... 感谢 雕哥的帮助 !!! 题意 #2542. 「PKUWC 2018」随机游走 题解 原本的模型好像我不会那个暴力dp .... 就是直接统计点集中最后经过的点的期望 , 也就是点集中到所有点步数最大值的期望 . (也许可以列方程高斯消元 ? 似乎没分)…
题面 LOJ #2802. 「CCC 2018」平衡树 题面有点难看...请认真阅读理解题意. 转化后就是,给你一个数 \(N\) ,每次选择一个 \(k \in [2, N]\) 将 \(N\) 变成 \(\displaystyle \lfloor \frac{N}{k} \rfloor\) ,到 \(1\) 停止. 求一共有多少不同的操作序列,也就是操作次数不一样或者某次操作的 \(k\) 不相同. 题解 首先考虑 dp ,令 \(f_i\) 为以 \(i\) 为开头的不同操作序列数. 显然…
题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_i\) , \(B\) 是已死猎人的 \(w_i\) 的总和 , \(P_i\) 是 \(i\) 当前要被杀死的概率 ... (抄博客咯) 不难有 \(\displaystyle P_i = \frac{w_i}{A-B} \tag{1}\) 如果 不考虑猎人死没死 , 都能被当做目标 qwq (鞭…
题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 , 考虑了并且在独立集中 , 还没考虑 . 转移就很显然了 qwq 然后要优化嘛 , 把其中两个状态合起来 , 也就是分成考虑了和没考虑了的两种 . 其中考虑了的那种 , 只会存在两种状态 , 要么是在独立集内 , 要么就是与独立集联通 , 没有考虑的 绝对不和独立集联通 就行了 . 然后我们枚举…
Update on 1.5 学了 zhou888 的写法,真是又短又快. 并且空间是 \(O(n)\) 的,速度十分优秀. 题意 LOJ #2538. 「PKUWC 2018」Slay the Spire 题解 首先我们考虑拿到一副牌如何打是最优的,不难发现是将强化牌从大到小能打就打,最后再从大到小打攻击牌 . 为什么呢 ? 证明(简单说明) : 如果不是这样 , 那么我们就是有强化牌没有用 , 且攻击牌超过两张 . 我们考虑把最小的那张攻击牌拿出来 , 然后放入一张强化牌 . \(\becau…
题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> #include<algorithm> inline int read() { int x = 0,f = 1; char c = getchar(); while(c < '0' || c > '9')c = getchar(); while(c <= '9' &&…
「WC 2019」数树 一道涨姿势的EGF好题,官方题解我并没有完全看懂,尝试用指数型生成函数和组合意义的角度推了一波.考场上只得了 44 分也暴露了我在数数的一些基本套路上的不足,后面的 \(\exp\) 是真的神仙,做不出来当然很正常,而且我当时也不怎么会多项式. Task0 考虑公共边组成 \(k\) 个联通块,答案就是 \(y^k\) ,并查集维护一下即可,复杂度 \(\mathcal O(n\log n)\) . code namespace task0{ map<pair<int,…
题目描述 原题来自:CODECHEF September Challenge 2015 REBXOR 1​​≤r​1​​<l​2​​≤r​2​​≤N,x⨁yx\bigoplus yx⨁y 表示 xxx 和 yyy 的按位异或. 输入格式 输出格式 输出一行包含给定表达式可能的最大值. 样例 数据范围与提示 5​​,0≤A​i​​≤10​9​​. 题解 首先记录异或前缀和$s[i]=a[1]⊕a[2]⊕a[3] ...⊕a[i]$. 设$l[i]$为以$i$结尾的区间中,异或值的最大值. 因为异或…
啦啦啦 来写一篇题解 洛谷链接: P4930 「FJ2014集训」采药人的路径 统计路径?嗯往点分治上想. 把0和1转化为-1和1,求和完dis为0的路径就是阴阳平衡的路径了. 如果题目没有限制要有中间休息站那就是比较裸的点分治淀粉质题了. 用两个数组 f[dis]和g[dis]. f[dis]:此时DFS的这棵子树里到根距离为dis的路径条数. g[dis]:此时DFS的这棵子树外到根距离为dis的路径条数. 然后里外配对一下统计答案就可以啦~ 如果有休息站也没复杂到哪里去. f[dis][0…
#10056. 「一本通 2.3 练习 5」The XOR-longest Path 题目描述 原题来自:POJ 3764 给定一棵 nnn 个点的带权树,求树上最长的异或和路径. 输入格式 第一行一个整数 nnn,接下来 n−1n-1n−1 行每行三个整数 u,v,wu,v,wu,v,w,表示 u,vu,vu,v 之间有一条长度为 www 的边. 输出格式 输出一行一个整数,表示答案. 样例 样例输入 4 1 2 3 2 3 4 2 4 6 样例输出 7 样例解释 最长的异或和路径是 1→2→…
[LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因此,我们可以把射线的方向规约成两类,分成向上与向下的两种. 不难发现,改变射线的方向后,原有的限制条件并未被改变. 要判断一条线是否规约为"垂直向下",只需判断它的关于P的极角是否在S和T关于P的极角之间. 将所有射线按端点的横坐标排序,依次计算每个端点到S的最短路径上,距离它最近的点nx…