合集-牛客训练
摘要:题目 : 链接:https://ac.nowcoder.com/acm/problem/16649 题意:给出m片区域,将这m片区域的树砍掉,问0~l上还有多少棵树 思路:差分 一维差分: 构造一个初始元素都为0的dif数组,长度为[0,n] 如果在i~j上 +k ,那么令dif[i]+k,dif[
阅读全文
摘要:题目 :链接:https://ac.nowcoder.com/acm/problem/16593 https://www.luogu.com.cn/problem/P1003 思路: 二维差分: 差分矩阵初始值全为0,在[i,j]~[a,b]区间+v,就在mat[i,j]+v,mat[a+1,j]-
阅读全文
摘要:题目 : 链接:https://ac.nowcoder.com/acm/problem/235254 谁能告诉我为什么16行要这样写,而不是用temp-=ceil((double)arr[i]/k);???? #include<bits/stdc++.h> #define int long long
阅读全文
摘要:题目 : 链接 :https://ac.nowcoder.com/acm/problem/207040 题意: n个小朋友围成一个圈,给你这n个小朋友之间的距离,请你求出这些小朋友中隔得最远的两个之间的距离。(距离取 逆时针距离与顺时针距离的最小值) 思路: 可以将这些小朋友围成的圈看作一个圆,把小
阅读全文
摘要:题目 : 链接: https://ac.nowcoder.com/acm/problem/207053 题意: 简单来说就是每次猜值,根据反馈判断答案所在的区间,找区间重叠次数最多的那部分的重叠次数 思路: 若猜中,区间[num,num]次数+1 若猜大了 , 区间[-inf,num-1]次数+1
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/99785/C 题意: 给定一个数组,操作q次,分别为 标记 和 查询 思路: 将每一个数组值放入集合set中,消除掉已经遍历过的数组值,通过set二分来加速区间遍历 注意: 集合本身就存在二分函数lower_boun
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/E 题意: 给定一个长度为偶数的数组,要求将其转化为只有两个元素且两个元素数量相等的数组。每次操作可以将数组元素+1或者-1,求最小的操作次数 思路: 先将数组排序,前一半肯定对应要转化的较小的那一个元素,
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/D 题意: 给定一个由小写字母构成的字符串,要求构造一个关于其的 子串 和 不连续子序列(至少由字符串中分开的两段拼接而成)使其 长度相等并且最大 思路: 假设答案长度取k,如果 子串 取的是 字符串 中间
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/H 题意: 给定一个矩形(其中左边界x=a,右边界x=b,上边界y=d,下边界y=c),要求在矩形边界选三个点构造一个最大的圆,返回该三点的坐标 思路: 首先要明白不共线的三点确定一个圆,然后发现钝角三角形
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/C 题意: 给定字符串长度n,可爱度为m。询问是否能够构造出一个满足可爱度的string,若可以则输出该string 思路: 首先特判当n<=m时,根据不连续子序列的定义可知不满足条件 由D题可知子串是从1
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/E 题意: 给定一个有n个元素的数组,查询q次。每次选择一个区间从l到r,遵循以下规则 类似于多米诺骨牌,遍历区间元素,轮到ai时,若它前面在区间内元素的总和大于等于ai,那么就可以推倒,反之不可以。 现在
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/M 题意: 给定一个n个元素的数组,为了缩小数组的极差(最大值-最小值),可以选择一个区间并将所有区间值乘以二。问操作后的最小极差为多少 思路: 为了缩小极差,只能去扩大数组最小的元素,次小的元素...(唯
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/J 题意: 给定一个长度为n的数组,从中挑选两个数ai,aj(i<j),使其ai xor aj == gcd(ai,aj).求总方案数 思路: 由按位异或运算自反性可知,其实是求 ai xor gcd(ai
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/H 题意: 给定n个区间,要求填入每个下标的数字在区间范围内以此来构建排列 思路: 先按照左端点进行区间的排序,然后将每个左端点小于等于当前数字的区间压入优先队列 由于右端点大的能给以后操作留出更多的空间,
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95335/C 题意: 给定一系列的字符串,要求输出在屏幕上显示所有字符串的最少操作次数 思路: 暴力求解!! 先将字符串排序,然后定义函数compre求两个字符串的公共前缀 发现每次显示一个字符串(不含第一个字符串和
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95338/I 题意: 给定一个排列,共有m次查询,每次查询输入l,r,k三个参数,返回数组l~r排序后 数组之前下标为k的 元素 的 经过排序后的下标(每次查询独立,即不改变原数组) 思路: 时间复杂度需要nlogn
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95338/J 题意: 刀的初始攻击力为x,磨刀石数量为y,回合数为n 磨刀一次 刀攻击力加1 刀每砍一次攻击力减1 攻击力为0时损坏 求n个回合刀能造成的总伤害 思路: 发现先磨刀比后磨刀更优,并且刀连续砍不比分段砍
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/problem/23054 题意: 初始数组为长度为n的全0数组,m次操作 操作1:使每个(i-0)mod d==0 的下标为i的数组元素+k 操作2:查询l~r范围的数组元素和 思路: 分块思想, 使lazy[i]表示原数组下标能被
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95338/B 题意: 给定a,b两个数组,有操作1:花费c1的代价删除ai,bi这一条记录 操作2:花费c2的代价交换ai,bi的值 求令a,b都成为最长不递减子序列的最低代价 思路: 类似与LIS,通过n方dp实现
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/E 题意: 给定一个3x3的棋盘,'X'表示小L走的棋子,'O'表示炸鸡走的棋子,'G'表示空位 现在轮到小L下棋,且小L拥有1次连续走两步的机会,求双方都走最优情况下,小L是否能够必胜 思路: 不是搜索或
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/C 题意: 给定3个二进制数a,b,c 共有两个操作,操作1:花费x的代价反置a或b的任意一位,操作2:花费y的代价交换a或b的两位(x<=y) 求令a^b=c的最小代价 思路: 发现当2x<=y时,即使交
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95336/D 题意: 给定两个字符串a,b,这两个字符串的字符位置可以事先排列好,也可以通过任意次操作替换掉某个字符串的某个字符。 令s=a+b,求最少操作次数使s为回文字符串 思路: 发现a,b如果有相同的字符,就
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95336/C 题意: 给定一个字符串s,规定一个字符串平衡 当且仅当01子串数量=10子串数量 字符串中有p个?,?需要将其变为0或1 规定一个字符串的val为 将某个0/1反置后得到的字符串是平衡的 位置数量 求这
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95335/E 题意: 有n个小球,部分向左移动,部分向右移动,碰撞后交换速度。求第k次碰撞发生的时间 思路: 二分答案,当t增大,球碰撞次数增加,反之一定减小 可以把球看作穿过彼此,并认为向左移动的小球不动,向右移动
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95335/G 题意: 给定一个整数n,模数k 生成数列 ai= i%k (1<=i<=n),让你求数列从大到小重新排列后,前k个元素的和 思路: debug了好几个小时,终于过了。(逐渐开始理解了一切)) 首先,一个
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/D 题意: 给定一个长度为n的01串s,令k成为01串的段长度。 对于每一段01串,可以完成以下操作:1.反置段内所有的0/1 2.任意地排列0和1 规定一个串的贡献度为:操作完成后,排列在一起的1消除,只
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/L 题意: 从1~n任意选三个数(不能重复)可以组成一个三元组(x,y,z),要求三对数中有两对互为质数 求最多的方案数,并打印出来 思路: 不会Orz,甚至打表也打不出来,打出来还能看出规律来的是真佬 小
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/C 题意: 推箱子,给定一个n*n的0 1矩阵,要求把1全部推到左上角大小为n/2 * n/2 的矩阵中,输出交换的次数以及每次交换的数字坐标 思路: 神奇 为了让左上角都是1,不妨移动左上角的0。每找到一
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/F 题意: 给定一个长度为n的数组a,规定若其一个子数组 长度为偶数 并且数组内 有两个不相同的数字 且 数量相同 ,则该数组为双生数组 求数组a中有多少个双生数组 思路: 纯暴力枚举每一个区间显然复杂度O
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/102896/E 题意: 给定一个长度为n的数值数组,每次可以走1~6步,询问走了k步后能获得的最大数值 思路: 规定状态dp[i,j]为走了j步走到第i个格子上获得的最大数值 转移方程:dp[i-step,j-1]+
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/102896/D 题意: 给定一螺旋矩阵,求给定数值的坐标 思路: 需要找规律,发现1,9,25 等奇数的平方在y=x这条直线上 4,16,36等偶数的平方在y=x-1这条直线上 于是对于任意一个数t,都有 (i-1)
阅读全文
摘要:比赛链接:https://ac.nowcoder.com/acm/contest/103786#description 评价: 感觉后面3题还是蛮有难度的(至少对于我来说) 其它感觉还行,但是有几题被卡了(悲 A 略 void solve(){ int n;cin>>n; int k=n/2; pr
阅读全文
摘要:不行了,活不了了 我怎么那么菜:( D 题意: 枚举1~n的前缀将其删除后,问是否能选定一个后缀使其删除后序列变为双生串 思路: 这题暴力能过你敢信? void solve(){ int n;cin>>n;string s;cin>>s; s=" "+s; int cnt=0; for(int i=
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103152/E 题意: 给定一棵树,规定其陡峭值为两两相邻节点之差的绝对值之和,求砍掉一条边后,两颗子树的陡峭值之差的最小值 思路: 先dfs,将每颗子树的陡峭值算出来。 总陡峭值tot为子树的陡峭值之和 然后枚举每
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103152/G 题意: 给定一个数组,规定其陡峭值为相邻两个元素之差的绝对值之和,将其打乱后,求其陡峭值的期望 思路: 计数问题,期望=不同陡峭值之和(总陡峭值)/n的阶乘 考虑其中两个元素对答案的贡献,记这两个元素
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103957/D 题意: 对于一个无根树,要将其变为有根,且每个节点的儿子数量的最大值最小 思路: 本来一开始想让度数最大的节点的一个相邻点作为其父亲,然后一直向上搜索找到编号最小的父亲,结果WA 因为有可能有多个节点
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/104637/E 题意: 在给定的数组中选出一些数,组成封闭凸多边形周长最小 思路: 注意到:最长边<其他所有边之和 不妨枚举最长边,再对小于它的边进行背包dp,以此来求解 dp数组的0/1状态分别表示:其他边(总长为
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/104637/F 题意: 分别对k次操作(0<=k<n)的数组求出其极差的最大值 (每次操作可以合并两个相邻元素) 思路: 显然题目数据范围允许N方做法 发现要让极差变大,只能将最大值变大 因此对于每一个k次操作求得的
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103957/E 题意: 给定一个数组,分别选出一些数使得其乘积之和是否等于x 思路: 将ai x bi 求和拆分成 ai之和 x bi之和 发现如果要让x等于这个两个数的乘积,那么这两个数分别是x的因子 将选取数看成
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/105623/E 题意: 构造一个长度为n的数组满足条件:1.元素都是正数 2.数组元素 按位或和 为x 3.数组元素 按位异或和 为y 思路: 并非猜猜题,考虑拆位贪心 即考虑数组元素(化为二进制)每一位上如何去选择
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/105623/D 题意: 给定一个数组,可以连续删掉两个或连续删掉三个,经过任意次操作求数组最大和 思路: 贪心的思路不正确 至于为什么我也不到啊 以下是ai给出的解释: 1.删除两个相邻的数字和删除三个连续的数字是两
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/105623/F 题意: 给定一个仅有o,v和?组成的字符串,其中任意一个?可以改变为o或v,求ovo子序列最多能出现多少次 思路: 发现对于ovo子序列的次数,我们只需要看v的贡献即可 v的贡献:左边o的个数 x 右
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/106318/G 题意: 给定一颗子树,规定其val为 从根节点1到叶子节点的简单路径的权值之和 的max 现在给出q次查询,每次查询将x节点连接到y节点之下,求此时的val(每次操作不改变原树) 思路: DFS序(树
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103867/E 题意: 在数组上移动每次可以往左或往右一格,或者通过传说门移动,求到达n的最小移动次数 思路: 隐式图BFS问题 注意vis数组的使用 int n; int a[maxn]; int vis[maxn
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103867/D 题意: 已经知道物体价格走势,每天可以买入一定量的物体,要求必须次日卖出。求使最后赚得利润大于M的最小本金X为多少 思路: 二分答案+贪心枚举 对于每一天,如果下一天物体价格上涨,那么买入尽可能多地买
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103867/G 题意: 规定F(l,r)= sum(a[i])(l<=i<=r)*(r-l+1) 前缀和p[i]绝对值小于等于5000 求最大F 思路: f=(pre[r]-pre[l-1])(r-l+1)=(pre
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/103867/J 题意: 要求1.合并l和r的集合2.判断l~r之间的所有数是否在同一个集合内 思路: 并查集启发式合并 大概就是普通并查集在合并时需要 小集合 并到 大集合 里 然后维护nxt数组,如果与右边连通则指
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/106859/E 题意: 给出x个1,y个2,z个3的排列,重新排序使得新的排列尽量少地匹配旧的排列 思路: 把x,y,z和它们分别代表的数字编号排序,设个数从大到小为:c,b,a。分别代表nc,nb,na的数字 1.
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/106859/F 题意: n个数组,每组分别有价值不同,重量不同的若干张牌,和一张桃(其价值为x,重量为y) 初始背包容量为0,可以通过吃桃使背包容量+1 顺序不分先后,求能获得的牌的最大价值 思路: 分组背包 设f数
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/106859/G 题意: 给定总集合U,由若干个pair<string,string>构成 现拥有集合X:为集合U的子集 集合P:由若干个string构成 现要求X:1.为集合U的子集 2.不能只有一种元素 为此,可以
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/107000/E 题意: n行m列的矩阵,每次可以改变两个相邻的灯的状态,求将灯全开的操作 思路: 当遇到两个0相邻时直接将其变为1。 当一个0与一个1相邻时可以交换0,1的位置 不妨将0全部移到最右列 0的个数为奇数
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/107500/E 题意: 对于一颗给定的树,可以选择一个点花费2 x w[i] 的代价将其染黑 或选择两个点花费 w[i] + w[j] 的代价将这两个点及其简单路径(经过LCA的路径)上的点染黑 求将整棵树染黑所需的
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/107500/F 题意: 给定一个排列,构造一个排列使得 (ai^bi)_sum(1~n) 最大 思路: 有点神秘的这题,本来想着大的数和小的数匹配,结果并不正确 题目要求生成排列,其实就是构建 1~n范围的 每个数字
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/107500/D 题意: 给定一个数组,需要划分成k个区间。 并且这些区间“25”子序列(数组的数字拼接成字符串)的最大出现次数要尽可能小 求“25”子序列最大出现次数最小值 思路: 经典二分答案,关键在于check怎
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/107879/E 题意: 有n个关键时间,两种操作:1.延后一个关键时间1s 2.提前一个关键时间1s 是否能在不超过其时间的情况下将所有关键时间操作两次 思路: 容易知道当存在某一个时间点使得有两个关键时间重复了是肯
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/108199/F 题意: 给定一个括号栈序列,以及一些颜料,要求每次入栈后,栈中的颜料序列不能重复出现 输出符合条件的颜料序列。 思路: 可以将括号栈操作看作建树过程 初始树的根节点为0 1.入栈操作 在当前节点下延申
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/108589/F 题意: 构造一个nxm的矩阵,使得能用每一行的异或和值和每一列的异或和值 构造一个1~n+m的排列 思路: 当把每一行的异或和和每一列的异或和全部异或起来,可以得到值为0 因为每一个值都被行选中一次,
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/108589/D 题意: 给定正整数k,二元一次方程x/^2-px+q且p+q=k,p和q都是正整数,该二元一次方程有两个正整数解,输出合法的p和q 思路: 伟大定理:对于二元一次方程两个根分别为X1,X2 X1+X2
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/109080/D 题意: 给定一个染色序列,每次可选择4个数i,j,k,l 满足0<=i<=j<k<=j<n(k=j+1),使得染色数组值c[ixj]=c[kxl]相同,并且选择一个从数组中消去 思路: 这辈子和分类讨
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/109080/F 题意: 规定f运算f(x,y)=x+y- x xor y 给定q次循环,求[l,r]范围内数组进行f运算结果 思路: 需要知道 x+y= x xor y + (x&y)<<1 那么f(x,y)= (x
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/109904/C 题意: 给定2xn的矩阵,以及两个坐标,求是否能通过放置障碍物使得两个坐标到达(2,n)的最短路径长度相同 思路: 分类讨论 需要注意当一个在上,一个在下的情况,显然纵坐标差一才有可能成立 然而这也有
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/109904/F 题意: 给定一个从顶至底,底面长度依次增加的三角形01矩阵 试求从(1,1)开始到底面有多少种构造回文串的方案? 思路: 多维dp 由于从上至下不好记录状态,观察到回文串的性质,考虑从三角矩阵中间分别
阅读全文
摘要:题目链接 题意: 给定nxm矩阵,从(s,1)出发到(t,m)。 每次可以向下或向右移动一格 到达最后一行后可以继续向下并到达第一行(环形) 求路径权值最大和 思路: 对于任意一个位置,显然由于环形条件存在,其可由左 + 上 +(下+上)转移 并且无法返回前一列。 因此按列进行dp 记dp[i][j
阅读全文
摘要:E 题意: 给一个序列,数的种类数为x,每轮使每个数a[i]=max(0,a[i]-x).求使得每个数相同的最小轮数 思路: 发现序列每个数都减去相同的数,意味着每个数之间的相对值不变 从而导致如果想让一开始不为0的序列数相同,只能让它们演变为0 因此题目要求的是使所有数变为0的最小轮数 不妨排序+
阅读全文
摘要:D 题意: 给定一个数组,每次挑选其中两个不同的数,使其变为a+1,b-1.求操作后的众数 思路: 属于是stl的千层妙用了 开一个set,左键值设为数的数量,右键值设为数。这样数量多的排在最后面,数量相当时,大的排在后面。此时我们可以用rbegin()方法获得集合中最后一个元素 然后就是模拟 需要
阅读全文
摘要:真是越来越菜了,牛客已经掉到蓝了(悲 6.7/21:57:喜报,ABC终于能自己A5题了,虽然好像这场前五题比之前简单 C 题意:略 思路: 666,p=1时,只有第一位为1,其余位都是0 void solve(){ int d,p;cin>>d>>p; int k; int td=d,tp=p;
阅读全文
摘要:[小红的区间修改(二)](https://ac.nowcoder.com/acm/contest/111159/F) 题意: q次查询,每次[l,r,x]进行区间推平并覆盖的操作,每次操作后输出数组元素种类数 思路: 珂朵莉树板子 用区间set维护,按左端点排序 map维护数组元素种类数,当右键为0
阅读全文
摘要:小红的数组操作 题意: 初始有一个全黑的数组,可以染一段前缀和一段后缀为红,求让黑数组中元素不重的最小代价 思路: 枚举染的前缀,通过双指针预处理最长的合法序列,那么后缀染的起始点一定要在在序列末尾的前面,通过ST表预处理出这段的后缀最小值 `int f[maxn][31]; int n; void
阅读全文
摘要:题意: 给定一颗根为n的树,求子树不动点数量之和 思路: 不妨从1结点往上跳,每到一个新的根节点计算子树mex值的变化 因为mex单调递增,故可以通过暴力枚举+lca(u,v)=u来判断 void solve(){ int n;cin>>n; vector<vector<int>>e(n+1); r
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/K 题意: 给定一个长度为n的数组,求所有[l,r]区间xor等于区间gcd的个数(l<r) 思路: 不妨固定左端点l,a[l]=x,发现右端点在扩增的时候,区间gcd最多变化logx次,因此可以二分出区间
阅读全文

浙公网安备 33010602011771号