题面 好难表述啊~ 在n*m的矩阵上,有一些大兵(为0),一些空地(一个正整数),障碍物(-1),现在摧毁一些空地,使所有大兵不能走出矩阵去(代价为表示空地的整数),求最小代价 思路: 网络流最小割 "阻止","最小",看到这样的字眼,肯定就要想到最小割啊 在互相能到达的点之间建边,容量为INF,因为--它不能炸-- 然后把每个点拆成入点和出点,每个兵所在的出点和源点S直接相连,在最外面的点的出点和汇点T直接相连 最后套模板,OK了 最重要的还是建边,能够理解题目的…
题面 一个二叉树,边数为n\((2<n\le 100)\),每条边有一个权值,求剪枝后剩下p\((1<p<n)\)条边,使p条边的权值和最大 还看不懂?-- 2 5 input:5 2 output:21 \ / 1 3 1 3 4 1 4 10 \ / 2 3 20 1 3 5 20 能理解了吧! 思路: 树形打屁DP 很基础的一道树形DP 对于每个点,用f[k][i]记录在以k为根的子树中,取i条枝的最大值 注意: 1.要注意叶子节点的判断 2.有可能只取一侧的子树 Code: #i…
题面 这是一道诡异的黄题 居然让你求一串吧啦吧啦的东西中 字母(大小写)最长的回文串的长度,还要输出完整的串 吐血 思路: 保持淡定,我们啥都不会,就会Manacher,那就用Manacher大法! 1.把字符串处理成只有字母(去皮) 2.把字符串中插入#号(掺假) 3.Manacher跑一跑最长回文串长度(市场检查) 4.求出最长长度后再重新代入原来的字符串(打回原形!妖孽!) 然后,就完了~ 就是去皮的时候,顺便记录一下字符的位置,这样重新代入时就比较方便 并且由于字符串有很多行,读入时就要…
题面 求环中的长度为k(k为奇数)且回文中心不同的回文串个数 思路: 刚学manacher算法,就送上一道模板题,此题注重对manacher算法的理解 Manacher,但是不用插入其他符号,因为k是奇数,中心一定在字符上 不知道Manacher? 洛谷日报上有讲,但是比较难懂,建议上B站更深入了解下\(\to\) 可以先把代码抄下来,然后一边看讲解一边理解代码含义,这样更能理解 反正我第一遍已经看蒙了 补充和纠正: 关于前几篇题解,一些小细节纠正一下 文末的代码更加简洁易懂 1.这是一个环,要…
题面 主要大衣大意: 给定一个字符串,求至少加入多少个字符才能使字符串变成回文字符串 下面就是我一本正经的胡说八道题解 思路: 很显然,这应该是一道典型的最长公共子序列的题目 因此,主要思想就是DP 方程式也挺好推的 于是我们就来讲一下为什么这题能用最长公共子序列(LCS)求解 证明: 求的是什么? 想要使这个字符串加入最少的字符变成一个回文串,那么肯定就是要是字符串中不能回文的部分回文 说起来比较难理解,比如:Ab3bd最少添的字符就是A对应的一个A,最后d对应的一个d 我们可以发现,最少要添…
「CTS2019 | CTSC2019」氪金手游 降 智 好 题 ... 考场上签到失败了,没想容斥就只打了20分暴力... 考虑一个事情,你抽中一个度为0的点,相当于把这个点删掉了(当然你也只能抽中度为0的点) 删掉就是字面意思,就是剩下的树变成子问题 考虑为什么,在抽中这个\(i\)号点后,抽中其他点的概率为 \[ \frac{W-w_i}{W}\sum_{i=0}^{\infty}(\frac{w_i}{W})^i=1 \] 说明这个点已经白给了 然后考虑这个树如果是一颗外向树,就是每个点…
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉凉 提供的翻译 题目描述 Colonel has \(n\) badges. He wants to give one badge to every of his \(n\) soldiers. Each badge has a coolness factor, which shows how mu…
P3866 [TJOI2009]战争游戏 题目背景 小R正在玩一个战争游戏.游戏地图是一个M行N列的矩阵,每个格子可能是障碍物,也可能是空地,在游戏开始时有若干支敌军分散在不同的空地格子中.每支敌军都可以从当前所在的格子移动到四个相邻的格子之一,但是不能移动到包含障碍物的格子.如果敌军移动出了地图的边界,那么战争就失败了. 题目描述 现在你的任务是,在敌军开始移动前,通过飞机轰炸使得某些原本是空地的格子变得不可通行,这样就有可能阻止敌军移出地图边界(出于某种特殊的考虑,你不能直接轰炸敌军所在的格…
$ \color{#0066ff}{ 题目描述 }$ 小R正在玩一个战争游戏.游戏地图是一个M行N列的矩阵,每个格子可能是障碍物,也可能是空地,在游戏开始时有若干支敌军分散在不同的空地格子中.每支敌军都可以从当前所在的格子移动到四个相邻的格子之一,但是不能移动到包含障碍物的格子.如果敌军移动出了地图的边界,那么战争就失败了. 现在你的任务是,在敌军开始移动前,通过飞机轰炸使得某些原本是空地的格子变得不可通行,这样就有可能阻止敌军移出地图边界(出于某种特殊的考虑,你不能直接轰炸敌军所在的格子).由…
题目背景 小R正在玩一个战争游戏.游戏地图是一个M行N列的矩阵,每个格子可能是障碍物,也可能是空地,在游戏开始时有若干支敌军分散在不同的空地格子中.每支敌军都可以从当前所在的格子移动到四个相邻的格子之一,但是不能移动到包含障碍物的格子.如果敌军移动出了地图的边界,那么战争就失败了. 题目描述 现在你的任务是,在敌军开始移动前,通过飞机轰炸使得某些原本是空地的格子变得不可通行,这样就有可能阻止敌军移出地图边界(出于某种特殊的考虑,你不能直接轰炸敌军所在的格子).由于地形不同的原因,把每个空地格子轰…