随笔分类 - 牛客
摘要:题意:有一$n$个数,从中找数构成相同的子集,要求子集元素个数为$k$,求构成子集个数最多的情况,输出子集(字典序最小). 题解:我们可以对子集的个数二分答案,首先用桶记录每个元素的个数,然后二分找最大值,check函数中直接枚举$[1,100000]$的个数,然后用$mid$去除,得到的$t$就是
阅读全文
摘要:题意:有$[1,n]$这$n$个数,构造集合,集合中不能包含$u$和$v$,问最多能构造多少个集合. 题解:被这题卡了一整场.....以为是推公式,结果答案是暴搜? 首先我们先用一个二维数组标记一下所有$u$和$v$,然后从$1$开始搜,如果$num>k$就表示一种情况搜完了,首先考虑不选,深搜
阅读全文
摘要:题意:有一个$01$串,两个相邻的$0$可以变成一个$1$,两个相邻的$1$可以直接消除,问操作后的字符串. 题解:数组模拟栈直接撸,上代码吧. 代码: class Solution { public: /** * * @param str string字符串 初始字符串 * @return str
阅读全文
摘要:题意:有$n$个点,$m$条双向边,两个方向的权值都是相等的,可以从$A$中的某个点出发走到$B$中的某个点,求所有路径中的最短距离,如果A和B中没有点联通,则输出$-1$. 题解:感觉是个阅读理解啊,题目看懂了就是个裸的单源最短路,我们首先将牛牛的所有星球初始化作为起点,然后建边跑个dijkstr
阅读全文
摘要:题意;将一组数重新排序,使得相邻两个数之间的最大差值最小. 题解:贪心,现将所有数sort一下,然后正向遍历,将数分配到新数组的两端,然后再遍历一次维护一个最大值即可. 代码: class Solution { public: /** * 返回按照这些花排成一个圆的序列中最小的“丑陋度” * @p
阅读全文
摘要:题意:有一组数,每次将所有相等的偶数/2,求最少操作多少次使得所有数变成奇数. 题解:用桶标记,将所有不同的偶数取出来,然后写个while模拟统计一下次数就行. 代码: class Solution { public: /** * 返回一个数,代表让这些数都变成奇数的最少的操作次数 * @param
阅读全文
摘要:题意:有一个字符串$s$,我们可以选择$s_$,如果$s_{i+k}>s_$,那么就可以交换$s_$和$s_{i+k}$,问最多能够交换多少次. 题解:因为限定了$k$,所以我们交换的位置是固定的,即所有能交换的位置的$i$%$k$都相等,那么对于某个位置$i$,在它之前的$i$%$k$相等的位置的
阅读全文
摘要:题意:有$m$个窗口,$n$个人排队,每个人都有各自的办理时间,只有办理完成窗口才能空出来,后面的人开始办理,求有多少人比后面的人开始办理的早但完成的晚. 题解:我们可以用优先队列来模拟办理,用一个数组q来记录办理完成的时间,之后只要求q中逆序对的个数即可,既然求逆序对,那我们肯定用归并排序啦~ 代
阅读全文
摘要:题意:有一个数$x$,判断其是否能有某个完全平方数$mod$1000得到. 题解:直接写个for判断一下就好了,因为对1000取模,所以枚举到1000即可. 代码: class Solution { public: /** * * @param x int整型 * @return bool布尔型 *
阅读全文
摘要:题意:给你一个加密的字符串,以及偏移量,求对应的明文. 题解:根据样例,不难看出模板串是:$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz$,然后我们去遍历密文的每一位,减去偏移量再取个模就行. 代码: class Sol
阅读全文
摘要:题意:有$n$件衣服,每件衣服都有$a_$滴水,所有衣服每分钟都能自然烘干$1$滴水,或者用烘干机,每分钟可以烘干$k$滴水,问最快多少分钟可以使所有衣服都烘干. 题解:这题和之前的那个拔苗助长感觉一样啊....都是二分答案. 先把$a$排个序,然后左区间$l=1$,右区间$r=a[n-1]$,
阅读全文
摘要:题意:求所有$n$位数每位之和等于$m$的数的和. 题解:数据范围非常小,我们可以直接暴力枚举$t$到$10*t$的所有数字,逐位分解判断即可. 代码: class Solution { public: /** * 返回这样的数之和 * @param n int整型 数的长度 * @param m
阅读全文
摘要:题意:有一个$n$x$m$的矩阵,\(A_{i,j}=lcm(i,j)\),对于每个$k$x$k$的子矩阵,其最大元素贡献给答案,求答案的最大值. 题解:矩阵构成我们直接$i*j/gcd(i,j)$即可,然后就要去找每个子矩阵中的最大元素. 这题我们可以用单调队列来求,首先先对每一列维护长度为$
阅读全文
摘要:题意:有一个图,要求从$S$走到$E$,$.\(表示可以走的路径,\)*$周围的八个方向均不能走,要求判断是否能走到$E$,若能,输出最小路径长度,否则输出$Impossible$. 题解:我们先把$*$周围的点标记一下,然后判断$E$是否被标记过了,如果没有,则找到$S$的位置进行BFS,结构体$
阅读全文
摘要:题意:从一个数组中尽可能多的选数,要求所选的每个数之间的差不大于$5$. 题解:先排序,然后双指针尺取,如果能取,则移动右指针,维护最大值,否则移动左指针即可. 代码: #include <iostream> #include <cstdio> #include <cstring> #include
阅读全文
摘要:题意:有一个正整数$n$,从$1,2,3,...,n-1,n$中找两个数异或,使得他们的值最大. 题解:需要特判当$n=1$的情况,答案只能是$0$,然后写个几组数不难发现,一定存在两个数使得他们异或后的二进制上每一位都是$1$,直接模拟即可. 代码: #include <iostream> #in
阅读全文
摘要:题意:给你$n$组数,每组4个正整数$a,b,c,d$,每组数有两个选择: 1.增加$a$个财富,消耗$b$点魔法. 2.回复$c$点魔法,减少$a$个财富. 求最后财富*魔法的最大值. 题解:我们从第$1$组数开始dfs,我们先考虑选择第一种情况,然后不断搜索,之后在搜索第二种情况,维护一
阅读全文
摘要:题意:有一个长度为$n$的数组,从第一天开始,第$i$天可以使$i$位置上的数$+1$,当$i=n$时,下次从$i=1$再开始,另外,在每天结束时,你可以使任意一个位置上的数$+1;or;-1$,或者不变,求最少经过多少天可以使得每个位置上的数都相等. 题解:我们对天数进行二分,由中位数定理:数列中
阅读全文
摘要:传送门:最长回文 题意:给你两个长度相等的字符串A和B,从A中选择一个可以为空的子串A[l1..r1],从B中选一个可以为空的子串B[l2..r2],满足r1=l2.然后把他们拼接在一起,求操作后的最长回文串的长度. 题解:我们可以先对A和B进行manacher(马拉车)预处理,然后我们枚举回文中心
阅读全文
摘要:1.传送门:牛客13594-选择困难症 题意:给你k类物品,每类物品有a[i]个每个物品都有一个value,每类物品最多选一个,要求有多少种选法使得总value>m(没要求每类物品都必须选) 题解:很明显是一道dfs的题,但是要剪枝优化,假设我们当前所有物品的总vaule>m,那么我们只要算这件物品
阅读全文

浙公网安备 33010602011771号