牛客
文章平均质量分 82
更新牛客补题题解
Eter`nal
蒟蒻菜鸟的进阶之路。
展开
-
牛客挑战赛54 C
小䓤的一个数字 思维大意:给定一个长度为 n (n<=3000)的01字符串s,和整数序列 a , 两种操作:操作1:每次将字符串中一个字符0变1,1变0.花费为aia_iai操作2:整体向右平移1位,最左边补字符0, 花费为 b求将全0的字符串变成 s 的最小花费思路:如果不考虑操作2,显然是很简单的,直接算就行了。有了操作2,假设用了 k次操作2,那么对于某一个位置 i ,我们可以把 [i-k,i] 的任意一个位置变成 1,通过不超过k次操作2变成最终的s,也就是区间最小值问题 。.原创 2021-11-20 16:15:31 · 338 阅读 · 0 评论 -
牛客练习赛91 C D
魔法学院(hard version) 并查集大意:给定一个字符串,有 m 个魔法,每个魔法可以将区间[li,ri][l_i,r_i][li,ri]的一个字符修改成cic_ici,每个魔法可以使用无限次。对于每个字符,它的价值就是对应的ASCII码,求最终字符串价值的最大值。思路:我又又又又又…读错题了。看成了每个魔法把整个区间[li,ri][l_i,r_i][li,ri] 一下子全部修改成cic_ici,然后想了个从小到大贪心,线段树维护的写法把B过了…然后就过不了 C,吐了。正解:..原创 2021-11-13 22:45:44 · 778 阅读 · 0 评论 -
牛客练习赛90 C、D
盾与战锤 思维大意:有一个护盾,每 k 秒刷新一次,能吸收 S 的伤害,给定一个长度为 n 的序列,对于序列的每个数造成伤害需要1秒,当护盾刷新时,先刷新护盾,然后造成伤害,并且护盾不会继承上次未打破的,对于 1<=k<=n 的每个 k ,确定一个子序列,使得伤害最大,输出最大伤害值。思路:对于任意一个 k ,显然只有当破开盾才会造成伤害,假设破开 x 次盾,盾吸收的伤害就是x*s 是固定的,此时造成伤害最大就是最优的,所以直接从大到小排序,选最大的就行了。代码如下:#include.原创 2021-10-30 10:10:31 · 222 阅读 · 2 评论 -
2020年湖南省大学生计算机程序设计竞赛
String Commutativity kmp 求最小循环节大意:给定 n 字符串s1,s2......sns_1,s_2......s_ns1,s2......sn 问多少对 i,j 满足 i<j并且 si+sj=sj+sis_i+s_j=s_j+s_isi+sj=sj+si。n<=1e5,所有字符串的总长度不超过 5e6。思路:首先得从 si+sj=sj+sis_i+s_j=s_j+s_isi+sj=sj+si 中分析出si和sjs_i和s_jsi和s..原创 2021-10-27 14:37:48 · 345 阅读 · 0 评论 -
牛客挑战赛 53 C题
奇奇怪怪的魔法阵 状压dp大意:有 n 个点,编号0-n-1, n<=26。m条边。即某个点集中任意点之间不存在边,则称这个点集为“独立集”,求出虽有点集的子集中“独立集”的个数。空集也算“优秀点集”思路:看到 n 最大只有 26。又是计数类问题,比较裸的状态压缩dp。我们用二进制位 为 1表示选这个点,0表示不选。用 mskimsk_imski 表示所有和 i 有边的点在状态转移过程中,对于状态 x 中的任意一点 i,显然可以将 x 的所有独立集分成两部分含 i 和不含 i,对于不含 .原创 2021-10-19 19:44:32 · 85 阅读 · 0 评论 -
2020年浙大城市学院新生程序设计竞赛K题GPA Involution
2020年浙大城市学院新生程序设计竞赛K题补题题解(参考了大佬的代码)https://ac.nowcoder.com/acm/contest/9934/K来源:牛客网菜鸟打卡第一天:第一次写题解,写的不太好,有不对的地方还请大佬们指正。题目的大概意思就是相当于找一道分割线,求分割前面a序列的最大值,分割线值后b序列的最大值,找到最大值的和最小的情况。大致思路:用结构体将a,b序列相对应的数“绑定”,a,b序列的值是对应的,排序后对结果没有影响。对a从小到大排序后,有序遍历每种可能,分割线从a开原创 2020-12-26 21:00:49 · 317 阅读 · 2 评论 -
湖南大学第十六届程序设计竞赛
https://ac.nowcoder.com/acm/contest/18196/A大意:给定直角平面坐标系上三个坐标(整数点),判断是直角三角形还是钝角三角形还是锐角三角形,或者构不成三角形。思路:判断构不成三角形时没想好,导致没做出。实际上在给出三个点,只要三点不共线,就一定能构成三角形。所以判断能不能构成三角形只需要判断是否共线就行了。和给出三条边判断能不能构成三角形是不一样的。对于判断是否共线可以通过向量法判断。x1 * y2 - x2 * y1。判断构成什么三角形,有简单的方法类比于判断.原创 2021-07-16 09:06:05 · 121 阅读 · 0 评论 -
2021.牛客暑假多校 第十场 补题
Browser Games 字符串哈希/字典树压缩大意:给定 n 字符串,每个字符串长度不超过100。对于每个字符串可以通过他的某个前缀去查询到它的信息。并确保任意一个字符串都不是另一个字符串的前缀。定义 ans[i]为 查询到前 i 个字符串的信息,并且确保查不到后面字符串的信息的最少前缀字符串的个数。最终依次输出ans[i]。(此题空间限制非常严格,只能O(n)O(n)O(n))思路1:字符串哈希。对于直接查询 n 个字符串我们很好统计数量,直接让每个前缀都是对应字符串的第一个字符,然后去重就..原创 2021-09-20 22:21:17 · 137 阅读 · 0 评论 -
小白月赛38 G 题
又一构造子序列 构造题大意:构造出一个长度不超过 1e5 的字符串,字符串恰好有 n 个 “yyc” 子序列。如果不能构造出这样的字符串输出-1。否则任意输出一个合法的字符串。n<=1e9构造能力还是不太行,想了很久都没想出什么比较好的构造方法。yy + (z个 c) + (x个y) + cc这样构造出的yyc 的数量为 z+(x+2)∗(x+1)/2∗2z+(x+2)*(x+1)/2*2z+(x+2)∗(x+1)/2∗2 即 x2+3x+2+zx^2+3x+2+zx2+3x+2+z原创 2021-09-19 22:12:28 · 234 阅读 · 0 评论 -
2021.牛客暑假多校 第九场 补题
E题 Eyjafjalla 树上倍增、主席树大意:给定一棵n个节点的树,每个节点有一个温度,父节点的温度比子节点高,越靠近根节点的温度越高,q次询问,每次给定一个病毒将要出现的初始节点以及病毒存活的温度区间[l,r]。当病毒在该节点能够存活,会向相邻的可以存活的节点传播。每次询问输出病毒传播的节点个数。n,q<=1e5思路:题目中有个很重要的条件就是父节点的温度都是比子节点高的,我们可以向上找,找到最上面的在区间范围内的温度记为节点 u,那么所有病毒能传播的节点都是在以 u 为根的子树中的,.原创 2021-09-15 15:58:27 · 98 阅读 · 0 评论 -
北京信息科技大学第13届程序设计大赛题解
ranko的手表 思维大意:给定时间的格式如下,xx:xx 但是有的数字并没有给出,给定两个时间 t1,t2。求t1<t2前提下可能的时间差的最大以及最小值。思路:看了别人的代码,也有很多 dfs 过的,比赛的时候dfs没写好,T了,然后一直在想怎么去模拟,结果到最后也没想出什么好办法。对于 dfs 的时候大可放心去赋值,我们只需要最后去判断是否合法就好了,这样代码会很多。另外有个更好的办法,一天24*60 也就1440分钟,我们大可放心 O(n2)O(n^2)O(n2) 的时间复杂度..原创 2021-09-12 15:35:29 · 232 阅读 · 0 评论 -
2021.牛客暑假多校 第八场 补题
A题 Ares, Toilet Ares 阅读理解题、签到大意:题目有点难懂,有个数字 a代表已经写对了,对于一道题有k 次获得代码的机会,每次获得的代码长度为 x,错误的概率为 p (分数形式)。当代码长度为 L 才能写对这道题,题目保证 k 次 的 x 的和为 L。求写对的题目数的期望值,结果对质数取模思路:因为题目已经确保 x 的和为 L , 所以直接计算概率算出的就是写对这道题的期望值。最后加上 a。代码如下:#include <bits/stdc++.h>using n.原创 2021-09-08 22:18:38 · 150 阅读 · 0 评论 -
2021.牛客暑假多校 第七场 补题
B 题 https://ac.nowcoder.com/acm/contest/11258/B 线段树洛谷上有原题,先来看看洛谷上那道题: https://www.luogu.com.cn/problem/P4198 题意有点小问题大意:有 n 栋楼,看做放在直角坐标系中,第 i 栋楼的横坐标为 i,m 次操作,每次可以将修改楼的纵坐标。现有个人在 (0,0)除,某栋楼能被看到的条件是,该楼最高点和(0,0)的连线不会和在他前面所有的楼的最高点和(0,0) 的连线相交或重合。没每次修改过后,这个.原创 2021-09-02 21:20:44 · 145 阅读 · 0 评论 -
2021.牛客暑假多校 第一场 补题
A题:https://ac.nowcoder.com/acm/contest/11166/A 博弈大意:有 T 组测试样例,(T<=1e4)。给出两堆石子的数目,每堆最多5e3个石子,每次可以从其中一堆取 k(k>=1) 个,顺便从另一堆带走 k * s(s>=0)。不能操作的判输。思路:(1)暴力 SG,用记忆化搜索写SG函数提前打表,把表中的数据存下来。这样打表会很费时,没几个小时数据跑不完。也可能是我写的SG函数不好。(2)结论+递推/打表: 记两堆石子A,B。通过暴力S.原创 2021-07-25 19:55:30 · 164 阅读 · 0 评论 -
2021.牛客暑假多校 第二场 补题
B题 https://ac.nowcoder.com/acm/contest/11253/B 数学,组合数学大意: 有一个行数为2 ,列数没有限制的 棋盘,第一行摆了 x 个炮,第二行摆了 y 个炮。一个炮吃掉另一个炮中间当且仅当只有一个炮。设fkf_kfk为 k 个炮吃炮事件的方案数,分别计算在两种情况下,第一种是两行可以交替发生事件;第二种是必须第一行发生完才能发生第二行,求方案数的异或和。2<=x,y <=5e6。M=1e9+7.思路:两种情况分开来算,先看第一种情况。 先假.原创 2021-07-31 09:33:30 · 179 阅读 · 0 评论 -
2021.牛客暑假多校 第三场 补题
B 题 https://ac.nowcoder.com/acm/contest/11254/B 最小生成树大意:给定一个n * m 的白色棋盘,现要将白色棋盘染成黑色,每个格子对应一个染色的价值,如果一个 “田字格” 已经有三个格子被染成了黑色,那么可以免费将第四个格子也染成黑色。问将棋盘全部染成黑色的最小花费是多少。思路:比赛时一直在想贪心,说到底还是对此类题目不够敏感。对于很多问题,我们不妨从图的角度去思考问题,有时或许会达到意想不到的效果。我们把n行 m列看成一个个点的话,那么我们将第 x .原创 2021-08-07 11:19:47 · 227 阅读 · 0 评论 -
2021.牛客暑假多校 第四场 补题
B题 https://ac.nowcoder.com/acm/contest/11255/B 期望DP大意:现有一个随机数生成器,每次生成1~100的数字,概率为 pip_ipi ,现在有以下阶段,(1)生成一个数 x。 (2) 若生成的数 x 不小于之前任意一个生成的数重复(1)否决进行(3)。(3)计算得分,未生成数的个数的平方并结束生成。思路:很容易看出是期望dp,比赛的时候题目理解错了,思考方式完全错了。官方解给的是用生成函数写,我们这里用期望dp。对于求平方的期望E(x2)E(x^2.原创 2021-08-10 14:28:57 · 140 阅读 · 3 评论 -
2021.牛客暑假多校 第五场 补题
B题 https://ac.nowcoder.com/acm/contest/11256/B 思维、期望大意:现有 n 个盒子,里面装有黑球或白球概率均为12\frac{1}{2}21 且相互独立,现在要确定盒子中黑球的数量,显然需要把所有盒子都打开。现多了一个选择,可以在开始的时候花费代价c,然后每次开盒前都可以知道剩下盒子里黑球的个数。求最小花费的期望值。思路:题目又双叒叕读假了。对于此题,显然就两种开盒方案,一是直接开完,二是先花费代价c,再开盒。求两种花费期望的最小值就行了。对于第一种很.原创 2021-08-17 15:47:34 · 149 阅读 · 0 评论 -
2021.牛客暑假多校 第六场 补题
C题 https://ac.nowcoder.com/acm/contest/11257/C 构造、结论大意:给定一个 n 个点的无向完全图,点的下标1~n,不存在重边和自环,现经过若干次操作,每次删除三条边,使得最终边的个数少于n,每次操作需要满足以下条件,对于 x,y,z 边 (x,y),(y,z),(z,x)都存在才能删除这三条边。输出操作次数和具体方案,不需要最小化操作次数。(3<=n<=2000)思路:有个结论 对于 所有 x+y+z=0(mod n) 三元组,删除对应的边,把.原创 2021-08-22 10:58:57 · 199 阅读 · 0 评论