返回顶部

随笔分类 -  牛客

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