牛客竞赛
文章平均质量分 72
小酒窝.
研一菜鸡一只,欢迎来交流讨论,一起进步!
展开
-
牛客多校11 - Jellyfish and its dream(差分,思维)
所以 1 的个数要大于等于 2 的个数,然后减去 2 的个数之后保证是 3 的倍数(但是不明白为什么不用考虑后者也是对的?所以要先消去所有的 2,再把剩余的 2/3 个 1 都变成 2,然后用其余的 1/3 个 1 和其配对,都变成 0。不考虑取模的话,相当于 (2, 1) -> (0, 0);,也就是如果后面位置 (%n) 比当前位置大1 (%3),那么当前位置就可以+1。而两个 1 可以构成一个 2,两个 2 和一个 1 可以变成两个 0。简记为:(0, 1) -> (1, 1);原创 2022-09-12 12:18:41 · 190 阅读 · 0 评论 -
牛客小白月赛51 - 计算题(字符串哈希,二分)
从中间位置向外二分最大能满足的长度,找到第一个不满足的位置跳过,然后判断剩下的左右两串是否是回文的。(或者从外向内二分最大能满足的串,找到第一个不满足的位置跳过,然后判断中间的串是否回文)修改一个元素之后,字符串的长度不变,所以对于 n 个删掉后缀后的字符串,只需要看这个字符串修改一个元素后能变成多少种,种类累加。你有一个长度为 n 的字符串,你可以选择删除一段后缀(可以为空),然后修改剩余串中的一个字符,使其变成回文串。如何判断一个串是否是仅有一个位置不匹配的回文串?如何判断一个串是否是回文串?原创 2022-09-07 20:55:33 · 263 阅读 · 0 评论 -
22牛客多校6 - Z-Game on grid(博弈,反推)
从后往前推只需要从最后一行到第一行,对于每一行从后往前即可,这样遍历到一个点时,其右边位置和下面位置都已经遍历确定过了。现在 Alice 想知道,自己是否在无论 Bob 如何操作的情况下都能 win?在 (1, 1) 位置上有一个棋子,Alice 和 Bob 轮流移动这个棋子,每次移动只能向右或者向下走一个单位。首先需要发现,如果一个格子的坐标之和为偶数的话,那么这个位置轮到 Alice 操作;否则 Bob 操作。从最右下角往前推,把所有的必胜点都推出来,如果发现起点是必胜点,那么就一定能得到想要的状态;原创 2022-09-06 17:29:20 · 248 阅读 · 0 评论 -
22牛客多校5 - Don‘t Starve(DP,依靠边更新端点)
如果修改下题目,让走过路径中的点权逐渐减小,那么可以用拓扑序+dp,大点权节点向小点权节点连边,每次删掉入度为0一个大节点更新小节点状态。如果起点确定的话,需要将其余所有节点状态初始化为负无穷,表示从这个节点出发是非法的。这样所有节点状态中的最大值便是最多能走的节点数。同样,把除了起点之外的所有节点初始状态赋值为负无穷,表示该点作为起点非法。然后,只能由起点向其他点连边,其他点不能连向起点(否则一直来回更新)。然后回到此题,要求的是边权递减,那么就不能这样做了。表示,从起点出发到达 i 点时走的最多步数。原创 2022-09-05 23:14:10 · 201 阅读 · 0 评论 -
22牛客多校4 - Task Computing(相邻贪心,推式子倒序DP)
是乘以 10000 之后的,一开始先没有除以 10000,觉得乘以 10000 对排序没有影响,想着最后转移的时候再除,减少精度误差,其实这样是对排序有影响的,排序是按照 wi + wj*pi 的,还加上一个值,等式两边不能同时约去 10000,会出现错误!不一定,f[i-1, j-1] 得出的答案是最大的,但是得到这种状态时 pi 的乘积却可能是很小的,那么转移过来的答案和乘积有关系,所以从上个位置的最值转移不一定是最优的。表示,从 i 位置到 n 位置中选出 j 个位置,答案的最大值。原创 2022-09-02 16:42:00 · 240 阅读 · 0 评论 -
牛客多校3 - Journey(建图,最短路)
把每一条路径看作一个点,然后两条路径之间连边,新边权根据两条路径的位置赋值,重新建图。给定一个 n 个点的图,每个点都是一个十字路口,和相邻的四个十字路口之间连边。从一条路径经过十字路口直走,左转或者掉头,花费 1;每个十字路口最多产生 8 个新点,所以最终点数不超过。,最多产生 12 条新边,所以最终点数不超过。,逆时针依次为相邻的四个十字路口编号。...原创 2022-09-01 15:47:01 · 240 阅读 · 0 评论 -
牛客多校2 - Ancestor(LCA,前后缀)
那么这道题中,只删掉了一个数,那么其余数为这个数左边的数和右边的数,把左边所有数算出的 LCA 和右边所有数算出的 LCA 取 LCA 就是这剩下所有数的 LCA。即,若干个数求 LCA,求和,求gcd,求异或等等都和运算顺序没有关系,并且如果已经算出若干个数的答案,现在加进来一个数,那么用算出的结果直接和该数运算即可。这题考察了 LCA 的一个性质,与 求和,求gcd,求异或 …都有的性质 —— 无序性,可结合性。(精确这个 k 是为了减少往上跳的步数,也可以不精确,直接跳 30 步,复杂度高一些)...原创 2022-08-31 11:06:06 · 240 阅读 · 0 评论 -
牛客多校2 - Link with Level Editor I(DP优化)
这样转移看似没有问题,但是注意到题目中限制在每个世界中最多只能经过边一次,而第二种转移方式可能在更新过。在每个世界中,玩家要么选择待在当前节点不动,要么经过和该节点相连的一条边到达另一个节点(仅一次)。问,从这 n 个世界中,最少选出多少个连续的世界能够使得玩家胜利?当前世界只能由上个世界的节点到达,那么这个世界就用上个世界来转移。如果在最后一个世界,玩家所在 m 号节点,则胜利。然后,传送到下一个世界,玩家所在节点编号不变。给定 n 个世界,每个世界里有 m 个节点,玩家初始在第一世界的 1 号节点。..原创 2022-08-30 09:50:55 · 176 阅读 · 0 评论 -
牛客多校2 - Link with Bracket Sequence I(括号序列,三维DP)
而现在除了要满足短序列为长序列的子序列之外,还要满足长序列时合法括号序列,所以需要多加一维,用于判断最终是否合法。,第三维枚举长序列中左括号比右括号多的个数。位匹配 并且 左括号比右括号多。状态转移,遍历长序列每个位置。,第二维枚举短序列的每一位。第一维枚举长序列的每一位。,遍历短序列每个位置。那么最终的方案数就为。......原创 2022-08-28 21:58:32 · 301 阅读 · 0 评论 -
牛客多校2 - Link with Game Glitch(spfa求正环,套汇,二分答案)
然后发现,当 w 越大的时候越容易出现正环,存在一个临界值 x,当 w 大于 x 时存在正环,当 w 小于 x 时不存在。给定几种货币的兑换汇率: a x b 表示 1 单位 a 货币可以兑换 x 单位 b 货币。如果一个点乘以边权之后比另一端点权值大,那就走过去更新,判断是否存在正环。现在存在一种兑换策略能得到无穷多某个物品,所以将兑换策略修改为:将。当 w 确定的时候便可以跑一遍 spfa 判断是否存在正环。将每一种货币看作一个点,两点之间连边,边权为汇率。给定 n 种物品,一共 m 种转换方案。...原创 2022-08-28 16:43:00 · 276 阅读 · 0 评论 -
22牛客多校二 - Link with Monotonic Subsequence(构造)
找到数列 [1, 2, …, n] 的一种排列,使得。分别指 最长上升子序列 和 最长下降子序列的长度。打表发现,可以将所有数分成。原创 2022-08-23 11:51:30 · 297 阅读 · 0 评论 -
牛客多校十 - Shannon Switching Game (倒推,bfs)
反过来,从终点往前推,从终点出发,终点肯定是必胜点。如果一个点能由两个至少两个必胜点到达的话,由双向边,那么这个点往后走就能至少到达两个必胜点,无论切掉哪个边都能到达必胜点,胜利不可阻挡,当前点就是必胜点。把所有必胜点放到队列里去更新相邻点,如果一个点被走到两次,说明其就是必胜点,放到队列。也就是说,如果有一个点相连了至少两个必胜点的话,那么这个点也是必胜点,如果能够走到这个点,那么第一个人就必胜。如果正着从起点考虑,并不知道是否该点有两条路径能够到达终点,不能确定当前点相连的是否是必胜点。原创 2022-08-20 17:40:59 · 344 阅读 · 0 评论 -
牛客多校九 - Here is an Easy Problem of Zero-chan (树形DP,推公式,贡献)
对于图中点 c 来说,所有点都被分成了三块区域,第一块区域的 lca 为 a,第二块区域的 lca 为 b,第三块区域的 lca 为 c,那么 c 点最后的答案为:第一块区域点的数量 * a的属性 + 第二块区域点数 * b的属性 + 第三块区域点数 * c的属性。对于树中的一个节点来说,其与所有点的 lca 无非只有两种情况:要么那个点在当前节点的子树中,lca 为当前节点;当回溯之后,再加上子树中所有节点对当前节点的贡献,即节点数 * 当前节点的 2 或 5 的个数。给定一棵根节点为 1 的树,定义。.原创 2022-08-17 19:58:24 · 281 阅读 · 0 评论 -
长沙学院2022暑假训练赛(一)
题意给定长度为 n 的序列 a[],每次可以选择一段连续区间。一共 m 个询问,第 i 个询问表示在前 kik_iki 个位置中,能够得到区间最大值的区间个数一共有多少?1≤n,m≤106, −109≤ai≤109, 1≤ki≤n1≤n,m≤10^6,\ −10^9≤a_i≤10^9,\ 1≤k_i≤n1≤n,m≤106, −109≤ai≤109, 1≤ki≤n思路经典模型,最大子段和。设前缀和为 。以第 个位置作为右端点的区间最大值为 ,其中 为 位置前缀和的最小值。那么从前往后走原创 2022-08-05 17:36:33 · 247 阅读 · 0 评论 -
22牛客多校 - NIO‘s Sword (思维,取模,推公式),Jobs1 (二维前缀min,去劣),Particle Arts (思维,方差)
一共有n个怪兽,有一把初始能量为0的宝剑。每次可以在某一时刻将宝剑的能量升级如果原来能量为a,升级之后能量变为a∗10+x,x为0−9中任选的一个数。如果想要击败第i(2≤i≤n)只怪兽,需要保证第i−1只怪兽已经被击败。在击败第i只怪兽时,宝剑的能量a需满足A≡i(modn).问,击败所有怪兽最少需要升级多少次?1≤n≤106a∗10+x,x属于[0,9];a∗1。...............原创 2022-08-01 01:57:14 · 195 阅读 · 0 评论 -
旅行 (拆点分层)、求1-n中每个数的所有质因数
给定n个点m个边的无向图,每个边有花费wi。起点为1,终点为n。对于从起点到终点的一条路径来说,走到第偶数个点要花费x。问,从起点到终点的最少花费为多少?(1≤n,x≤105,n−1≤m≤2×105)分析题目知道,对于一条路径来说,其花费不仅依赖于边权之和,还要依赖于路径长度。路径越长,偶数点越多,就要多花费若杠个x。所以不能简单的跑最短路。(false),.tie(0)longlongO(n。...原创 2022-07-24 22:24:41 · 293 阅读 · 0 评论 -
价值序列——计数
价值序列题意:给出长度为 nnn 的整数数组 a1,a2,…,ana_{1}, a_{2}, \ldots, a_{n}a1,a2,…,an ,定义序列的价值为 ∑i=1n−1∣ai−ai+1∣\sum_{i=1}^{n-1}\left|a_{i}-a_{i+1}\right|∑i=1n−1∣ai−ai+1∣ 。当数组长度为 1 时,价值认为是 0 。求有多少不同的 1≤i1<i2<…<ik≤n(1≤k≤n)1 \leq i_{1}<i_{2}<\ldot原创 2022-04-01 23:17:22 · 285 阅读 · 0 评论 -
筑巢——树形dp
筑巢题意:给定一棵树,每个节点有权值 aia_iai,每条边有权值 www。选取一个非空连通块,使其权值之和最大。−109≤ai,w≤109−10^9 ≤a_i, w ≤10^9−109≤ai,w≤109分析:将任意一点看作根节点。从根节点往下递归,回溯的时候从下往上更新。定义f[x]: 在以 x 为根的子树中,非空连通块的最大权值。对于一个节点 x,遍历其所有子节点 tx,如果子节点所在子树非空连通块最大权值 f[tx] 加上 连边w 大于0,f[x] += f[tx] + w。原创 2022-03-19 16:06:00 · 298 阅读 · 0 评论 -
2022牛客寒假集训营4——I(dp), A(双指针)
I 爆炸的符卡洋洋洒洒(dp)题意:一共 n 张符卡,每张符卡有消耗 ai,威力 bi。问,保证消耗之和为 k 的倍数的情况下,最大威力为多少? 1 ≤ n, k ≤ 1000思路:dpf[i, j]表示:前i个位置,ai之和%k 为 j 时,最大 bi 和。对于每个位置,看当前位置选上之后对答案有没有更新。 for(int i=1;i<=n;i++) for(int j=0;j<k;j++) f[i, (j+ai)%k] = max(f[i-1, (j+ai)%k],原创 2022-03-04 21:19:28 · 184 阅读 · 0 评论 -
牛牛做数论(转化,质数)
Linking题目:定义 H(x)=ϕ(x)xH(x) = \frac{ϕ(x)}{x}H(x)=xϕ(x),ϕ(x)ϕ(x)ϕ(x) 表示欧拉函数。思路:有公式:φ(x)=x∗∏(1−1pi)φ(x) = x*∏(1 − \frac{1}{p_i})φ(x)=x∗∏(1−pi1),那么 H(x)=∏(1−1pi)H(x) = ∏(1 − \frac{1}{p_i})H(x)=∏(1−pi1)。于是题目转化为:求 [2, n] 中的一个数x,满足其 ∏(1-1/pi) 是所有数中的原创 2022-01-28 23:08:19 · 750 阅读 · 0 评论 -
2022牛客寒假算法基础集训营2——F、H、I
目录:F、小沙的算数(二进制,快速幂)I、小沙的构造(贪心,模拟)F、小沙的算数(二进制,快速幂)题意:给出 n 和 m。一共有多少种长度为 n, 元素之和为 m 的数组,其 异或和最大?思路:为了使得异或和最大,异或和二进制中的1都要尽量靠左。而元素之和为m,那么数 m 的二进制中的 1 的位置肯定是这n个数异或之后的最佳状态。如何能够异或成 m,并且元素之和为 m 呢?对于 m 的二进制中的若干个1,可以分给这 n 个元素中的任一个。设 m 中1的个数为cnt,所以方案数就为 nc原创 2022-01-26 23:53:17 · 866 阅读 · 0 评论 -
牛客小\白月赛43——F.全体集合(二分图染色)
Linking题目:给出 nnn 个点 mmm 条边 的无向图,给出 kkk 个点,这 kkk 个点上每个点都有一个人,每个人每回合能走到一个相邻的节点(不能停留不走),问:有没有可能在某一个回合,让这些人都集中在一个点?1≤n,k≤2e5,0≤m≤min(5e5,n∗(n−1)/2)1\le n,k\le 2e5,0\le m\le min(5e5,n*(n-1)/2)1≤n,k≤2e5,0≤m≤min(5e5,n∗(n−1)/2)思路:如果所有有人的点都可以被染成黑色或白色,那么这些人可以集原创 2022-01-20 23:19:51 · 339 阅读 · 0 评论 -
Bitwise Or vs LCM(思维,lcm,或运算)
题意:给定长度为 nnn 的数列 aaa,问是否存在一个二元组 (i,j)(i, j)(i,j) 满足:ai∣aj≥lcm(ai,aj)ai | aj ≥ lcm(ai, aj)ai∣aj≥lcm(ai,aj)。如果存在输出任一组,否则输出 -1。1≤n≤2×105,1≤ai≤1061\le n \le 2 \times 10 ^ 5,1 \le a_i \le 10 ^ 61≤n≤2×105,1≤ai≤106思路:首先:讨论对于 取或(|) 操作 x|y 的范围:因为二进制中的或操作如果两原创 2022-01-08 14:15:03 · 390 阅读 · 0 评论 -
斗地主(dp求方案数,牛客练习赛93)
Linking题意:牛牛有 mmm 种类型的牌,每种牌的分值是 a1,a2…ama_1,a_2\dots a_ma1,a2…am。初始分值为 000,每回合打出一张牌,新的分值就为上一回合得分加上这张牌的分值再对 kkk 取模。问,有多少种出牌方案,使得 nnn 回合后,分值中含有字符 777 或字符 999 ?(1≤n≤100,1≤m,k≤50,0≤am<k)(1≤n≤100,1\le m,k \le50,0\le a_m < k)(1≤n≤100,1≤m,k≤50,0≤am原创 2021-12-11 22:40:05 · 531 阅读 · 0 评论 -
点权(bfs,最短路,牛客练习赛93)
Linking题意:简化后的题意为:给出节点数为 nnn 的一棵树,每条边有边权 cic_ici。(n≤105,ci≤103)(n \le 10^5 ,c_i \le 10^3)(n≤105,ci≤103)一个点必须由两个相邻的已更新的点更新,花费为两条边的边权之和。初始入度小于2的节点(叶子节点)已更新。对于每个点,求出能够将其更新的最小花费。如不可更新,输出-1。思路:从所有的叶子节点往中间更新,两个已更新的节点才能更新一个节点。求得到每个节点所需要的最小花费。乍一看,是多源bf原创 2021-12-11 19:33:00 · 1333 阅读 · 0 评论 -
牛客小\白月赛40——C 数字匹配(map,二进制)
题目链接题意:给定一个数n,求所有数对 x,y (1 ≤ x<y ≤ n) 的二进制中,满足非前导零部分最大连续重合位数 ≥ k 的数对个数。(n≤2000,k≤10)例如:175的二进制形式为(10101111),472472的二进制形式为(111011000),因此175175和472472最大连续重合部分为(1011),长度为4。思路:其实就是判断 两个字符串的最大连续重合长度 是否大于等于k。很容易发现:如果发现两个字符串的连续k个位置重合了,那么就是满足的。所以就是要判断这两个字符原创 2021-11-13 11:13:13 · 998 阅读 · 0 评论 -
牛客小bai月赛39——A憧憬、H终别、G冷静
A、憧憬思路:通过两个点 (x1,y1), (x2,y2) 确定一个向量(a,b) = (x1-x2, y1-y2)。判断两个向量 (a,b), (c,d) 是否平行:方法1:若 a*d = b*c,则两个向量平行。方法2:向量看作过原点的直线,比较斜率。但是这个斜率不是直接纵横坐标相除,而是用pair存最简分数来表示:如果两个向量的最简分数相同或者互为相反数(分子互为,分母互为),则斜率相同。 (再次安利 芬兰木棋 这道题!)bool pd(){ PII k1,k2; int g=__原创 2021-11-07 00:06:43 · 281 阅读 · 0 评论 -
牛客小bai月赛40——A、I、G、E、F
A、数字游戏(思维,奇偶)思路:先判断 1 出现的次数 cnt 的奇偶,再判断其二进制第 0 位是否为 1.如果是偶数,要变为奇数,操作次数+1.如果第 0 位为 1,那么需要操作 2*cnt-1 次;否则操作 2*cnt+1 次。加快读快输 (网上抄的板子)Code:inline int read(){ int x=0; //输出结果; char c=getchar(); //先读个字符; while(c<'0'||c>'9') c=getchar(); //读入非数原创 2021-11-06 00:21:31 · 2604 阅读 · 0 评论 -
Hamburger Steak(思维,贪心)
There is a ring of numbers consisting of 11 to nn sequentially. For every number ii (1 \leq i \leq n - 1)(1≤i≤n−1), ii and i+1i+1 are adjacent to each other. Particularly, nn and 11 are adjacent. We us原创 2021-08-02 23:44:39 · 129 阅读 · 1 评论 -
Intervals on the Ring(思维)
题目链接:https://ac.nowcoder.com/acm/contest/11257/I大意:一共n个点,给出m个区间(可能是环形),求一些区间,使得这些区间的交集为m个所给区间的并集。思考:构造出的所有区间的交集为m个所给区间的并集,所以先来一个区间,将m个区间全部覆盖掉,之后想办法剔除m个区间中的间隙。我们发现,如果构造的一个区间不含间隙x,那么构造出来的区间取交集就不含间隙x。但是我们还要保证交集和m个区间的并集相等,所以每次构造区间,都将一个间隙空下:构造的区间为不含间隙x的原创 2021-08-02 22:44:26 · 159 阅读 · 0 评论