
牛客每日一题
跟着一群中学OI爷在牛客学算法。
consult_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
牛牛的01游戏 (string)
牛牛的01游戏题目描述牛牛最近迷上了小游戏,于是他也想对他的01字符串进行一些操作,01字符串上的0和0相邻时会变成1,而1和1相邻时会在字符串上消失,而0和1相邻时什么都不会发生,牛牛现在把初始的字符串给你,你能告诉牛牛这个字符串最后会变成什么样吗。备注:1≤∣str∣≤1061\leq |str|\leq10^61≤∣str∣≤106,字符串上的合并消失应优先与左边进行,例如000,中间的0优先与左边的0合并变为10,消失同理思路: 直接用string充当栈,也可用stack 。Code:原创 2020-08-14 19:31:52 · 384 阅读 · 0 评论 -
换个角度思考(离线化+树状数组)
换个角度思考题目描述给定一个序列,有多次询问,每次查询区间里小于等于某个数的元素的个数即对于询问 (l,r,x),你需要输出 ∑i=lr[ai≤x]\sum_{i=l}^{r}[a_i \le x]∑i=lr[ai≤x] 的值其中 [exp] 是一个函数,它返回 1 当且仅当 exp 成立,其中 exp 表示某个表达式输入描述:第一行两个整数n,m第二行n个整数表示序列a的元素,序列下标从1开始标号,保证1 ≤ a_i ≤ 105之后有m行,每行三个整数(l,r,k),保证1 ≤ l ≤原创 2020-08-06 23:58:50 · 764 阅读 · 0 评论 -
「火」皇家烈焰 (线性DP)
「火」皇家烈焰题目描述 :帕秋莉掌握了一种火属性魔法由于钟爱扫雷游戏,帕秋莉把自己图书馆前的走廊看作一个一维的扫雷地图,她制造了很多烈焰,排在这条走廊内现在帕秋莉告诉你一部分烈焰的分布情况,请你告诉她可能的情况有多少种对于一个格子,里面会有以下几种字符:0:这个格子没有烈焰,且其左右两个格子均没有烈焰1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰2:这个格子没有烈焰,且其左右两个格子中均有烈焰*:这个格子有烈焰?:未告诉你本格情况输入描述:一个字符串 ,对于100%的数据,n≤原创 2020-08-04 23:57:55 · 758 阅读 · 0 评论 -
[SCOI2009]粉刷匠 DP)
[SCOI2009]粉刷匠题目描述:windy有 N 条木板需要被粉刷。 每条木板被分为 M 个格子。 每个格子要被刷成红色或蓝色。windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色。 每个格子最多只能被粉刷一次。如果windy只能粉刷 T 次,他最多能正确粉刷多少格子?一个格子如果未被粉刷或者被粉刷错颜色,就算错误粉刷。输入描述:第一行包含三个整数,N M T。接下来有N行,每行一个长度为M的字符串,'0’表示红色,'1’表示蓝色。30%的数据,满足 1 <=原创 2020-08-03 19:15:40 · 309 阅读 · 0 评论 -
[SCOI2012]滑雪与时间胶囊 (最小生成树)
[SCOI2012]滑雪与时间胶囊题目描述:a180285非常喜欢滑雪。他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1 ≤ i ≤ N)和一高度Hi。a180285 能从景点i 滑到景点j 当且仅当存在一条i 和j 之间的边,且i 的高度不小于j。与其他滑雪爱好者不同,a180285喜欢用最短的滑行路径去访问尽量多的景点。如果仅仅访问一条路径上的景点,他会觉得数量太少。于是a180285拿出了他随身携带的时间胶囊。这是一种很神奇的药物,原创 2020-07-22 23:21:36 · 422 阅读 · 0 评论 -
整除分块
例1:浅尝辄止Problem :给定一个正整数n,求 ∑i=1n⌊ni⌋\sum_{i=1}^{n} \left \lfloor \frac{n}{i} \right \rfloor∑i=1n⌊in⌋ ,1≤n≤10131\le n \le10^{13}1≤n≤1013,式子中[x]为下取整。答案可能会很大,输出答案对998244353取模后的值。 Solution:显然枚举会超时,因为有很多⌊ni⌋⌊\frac{n}{i}⌋⌊in⌋是一样的,那么需要分块计算,设 ⌊ni⌋=⌊nj⌋,i≤原创 2020-07-19 14:49:57 · 183 阅读 · 0 评论 -
牛牛晾衣服
牛牛晾衣服 题目描述:牛牛有n件带水的衣服,干燥衣服有两种方式。一、是用烘干机,可以每分钟烤干衣服的k滴水。二、是自然烘干,每分钟衣服会自然烘干1滴水。烘干机比较小,每次只能放进一件衣服。注意,使用烘干机的时候,其他衣服仍然可以保持自然烘干状态,现在牛牛想知道最少要多少时间可以把衣服全烘干。 思路:首先,题目中说自然烘干一分钟一滴水,烘干机一分钟 k 滴水,但是这 k 滴水里有一滴是自然烘干的,,,好吧,自然干和自然烘干是两码事,这么想就合理了?看到题目很容易会想到贪心,,但是想不到怎么原创 2020-07-17 19:07:01 · 226 阅读 · 0 评论 -
美味菜肴(01背包)
美味菜肴题目描述:小明是个大厨,早上起来他开始一天的工作。他所在的餐厅每天早上都会买好n件食材(每种食材的数量可以视为无限),小明从到达餐厅开始就连续工作 T 时间。每道菜肴的制作需要特定的一种食材以及一段时间,但是食材一旦放久就不新鲜了,菜的美味值会降低。第i道菜肴有三个属性ai,bi,ci,ai 是该菜肴的美味值,bi 是该菜肴所选食材不新鲜的速率,如果在第t时刻完成第i道菜则美味值为:ai - t * bi,完成这道菜需要 ci 的时间。小明希望在这T时间内能做出菜肴使得总美味值最大,所以小明求原创 2020-07-11 14:35:18 · 763 阅读 · 0 评论 -
Removal (线性DP)
Removal题目描述 :Bobo has a sequence of integers s1, s2, …, sn where 1 ≤ si ≤ k.Find out the number of distinct sequences modulo (109+7) after removing exactly m elements.备注 :1 ≤ n ≤ 1051 ≤ m ≤ min{n - 1, 10}1 ≤ k ≤ 101 ≤ si ≤ kThe sum of n does not原创 2020-07-10 21:32:05 · 186 阅读 · 0 评论 -
子序列 (线性DP)
子序列题目描述小美有一个由n个元素组成的序列{a1,a2,a3,…,an},她想知道其中有多少个子序列{ap1,ap2,…,apm}(1 ≤ m ≤ n, 1 ≤ p1 < p2 ,…, < pm ≤ n),满足对于所有的 i , j (1 ≤ i < j ≤ m) , apipj < apjpi 成立。输入描述:第一行一个整数n (1≤n≤100)表示序列长度。接下来一行n个整数{a1,a2,a3,…,an}(1≤ ai ≤100)表示序列。输出描述:输出一行表示原创 2020-07-03 20:11:47 · 238 阅读 · 0 评论 -
边的染色 (dfs + 思维)
边的染色题目描述小团有一张n个点,m条边的无向图G,有些边上已经被标记了0或1,表示它的边权。现在你需要给剩下的边标记边权为0或1,求有几种标记的方式满足:对于G中任意一个环,里面所有边的边权的异或值为0。环的定义如下:对于任意k(k≥2)个点{a1,a2,…,ak},若对于所有的i<k满足ai与ai+1之间有边,且a1=ak成立,则这k个点构成一个环。1≤n≤100,000...原创 2020-05-02 16:17:11 · 818 阅读 · 0 评论 -
K-th Number (二分答案)
K-th Number **感觉题意不太好懂QAQ,这里的第k大是从大到小排序后第k个位置的数。题意: 从A数组中挑出每个区间内第k大的数放到B数组中,然后输出B中第m大的数;思路: 首先我们看看暴力怎么做,枚举A中的数 x ,然后怎么去判断这个x是不是A中某一个区间内第k大的数,如果是我们就把x加入到B中,至于如何判断:可以记录每个x出现的位置,然后双指针从x往两边判断是否有k个数>...原创 2020-04-26 00:12:43 · 345 阅读 · 0 评论 -
糖糖别胡说 (差分) + 华华给月月准备礼物 (二分)
糖糖别胡说 (模拟 差分 )题意描述的不是很友好,数据范围描述的也不友好,是一个学校的校赛题目。思路:先发功(对区间整体加一),使用差分数组维护,然后再倒叙消灭。#include<bits/stdc++.h>using namespace std;#define fi first#define se second#define IO ios::sync_with_std...原创 2020-04-25 17:23:50 · 228 阅读 · 0 评论 -
逆序对(组合数)+Treepath(思维)
逆序对题目描述求所有长度为n的01串中满足如下条件的二元组个数:设第i位和第j位分别位ai和aj(i<j),则ai=1,aj=0。答案对1e9+7取模。n <= 1e18一般的逆序对都可以用归并排序、树状数组(O(nlogn))等,但显然此题是一个公式题。首先公式里应该有与2^n有关的项,长度为n的串总共有2 ^ n个;n = 1, ans = 0;n = 2, ...原创 2020-04-25 17:03:36 · 284 阅读 · 0 评论 -
Xorto (异或和)
Xorto当两个区间异或和相同时,则他们的异或值为零,map记录左边区间异或和出现的次数,枚举右边区间异或和,计数即可;复杂度O(n^2)Code:#include<bits/stdc++.h>using namespace std;int a[1010];int sum[1010];int main(){ int n; cin>>n; for...原创 2020-04-17 11:20:35 · 476 阅读 · 0 评论 -
树学 +Accumulation Degree (换根DP)
树学很明显地可以使用换根思想简化暴力,先dfs求出以1为根的dpeth和,作为ans的初始值,然后再dfs2换根操作,当孩子和父亲身份互换时,我们可以由父亲的信息推出孩子作为根时的depth和。由此我们便可以避免每次换不同的根去暴力。depth[j] = depth[s] - num[j] + (n - num[j] ) , 其中 j 是s的孩子,num[j] 为以 j 为根的树的大小。...原创 2020-04-17 00:57:56 · 318 阅读 · 0 评论 -
Running Median (中位数)
Running Median问题:给奇数个数( int范围内),依次输出1~ i (1<=i<=n)内的中位数,i 为奇数。思路:经典题目?,据说什么主席树(可持久化线段树),红黑树,平衡树 ……都可以解?,不会。这里用对顶堆解法:开一个大根堆,一个小根堆,依次将数插入两个堆,同时维护大根堆里放的是较小的一半数,小根堆里放的是较大的一半数,当到奇数位置时大根堆堆顶就是中位数。#...原创 2020-04-14 14:57:06 · 481 阅读 · 0 评论 -
城市网络 (树上倍增)
城市网络题目描述: 一颗以1为根的树,每个结点放有珠宝,给出q个询问,每次一对(u , v),v在u到根节点的路径上,一个商人从u到v,初始他有价值为c的珠宝,当结点的珠宝都比商人手中的大时,商人会买入它,问每次行程买入多少次。n , q (2 ≤ n ≤ 10^5 , 1 ≤ q ≤ 10^5)。a_i (1 ≤ a_i ≤ 10^5) 描述每个城市售卖的珠宝的价值。Solution...原创 2020-04-10 14:19:44 · 183 阅读 · 0 评论 -
黑白树 (树形 贪心)
黑白树 题目描述:一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1。树上每个节点i对应一个值k[i]。每个点都有一个颜色,初始的时候所有点都是白色的。你需要通过一系列操作使得最终每个点变成黑色。每次操作需要选择一个节点i,i必须是白色的,然后i到根的链上(包括节点i与根)所有与节点i距离小于k[i]的点都会变黑,已经是黑的点保持为黑。问最少使用几次操作能把整棵树变黑。Solu...原创 2020-04-08 18:35:49 · 1072 阅读 · 0 评论 -
树 (dp)
树题目描述:shy有一颗树,树有n个结点。有k种不同颜色的染料给树染色。一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同。请统计方案数。输出一个整数表示方案数(mod 1e9+7)。对于30%的数据,n≤10, k≤3;对于100%的数据,n,k≤300。Solution:按以往的经验,一般这种计数的而且还要mod的,要...原创 2020-04-08 11:28:01 · 335 阅读 · 0 评论 -
Shortest Path(树形DFS 思维)
Shortest Path题目大意: 给你一颗带权树,保证有偶数个节点n,把这n个节点分成 n/2 对儿,每对儿两点之间的权值为 len,即为原来两点之间路径的边权和,求这 n/2 对儿的 len和 的最小值。题解: 即为树,那几乎又离不开递归求解,维护答案。此题的关键在于对题目求解问题的转换和分类简化。很显然若要总和最小,那么在分对儿时 两点之间的经过边数不会超过两条 ,所以我们考虑一个...原创 2020-04-04 19:34:03 · 201 阅读 · 0 评论 -
月月查华华的手机 (字符串匹配 枚举优化 预处理)
月月查华华的手机题意 : q个询问 , 问其是否是主串的子序列 ;题解 : 很显然暴力是O(n^2) 的, 所以需要优化 , 通过观察我们发现 , 子序列中字母的相对位置是不变的,所以可以维护一个数组 next[ i ][ j ], 表示第 i 个位置之后距离其最近的字母 j 所在的位置。由此数组我们便可以提高匹配效率到O(n) ;维护方法 : 先O(n) 记录字符串中每个字符出现的...原创 2020-04-02 15:57:22 · 128 阅读 · 0 评论 -
Rinne Loves Edges (树形DP)
Rinne Loves Edges题目描述: Rinne 最近了解了如何快速维护可支持插入边删除边的图,并且高效的回答一下奇妙的询问。她现在拿到了一个 n 个节点 m 条边的无向连通图,每条边有一个边权 wi 现在她想玩一个游戏:选取一个 “重要点” S,然后选择性删除一些边,使得原图中所有除 S 之外度为 1 的点都不能到达 S。定义删除一条边的代价为这条边的边权,现在 Rinne 想知...原创 2020-04-01 21:50:10 · 261 阅读 · 0 评论 -
滑动窗口 (单调队列 ) (单调栈)
滑动窗口题目描述:给一个长度为N的数组,一个长为K的滑动窗体从最左端移至最右端,你只能看到窗口中的K个数,每次窗体向右移动一位。你的任务是找出窗体在各个位置时窗内元素的最大值和最小值。备注: 对于100%的数据,K ≤ N ≤ 10^6思路: 这是很经典的板子题, 显然线段树维护一下最大最小值可以解,虽然复杂度够了,但是内存不够,只能过70%,所以在此我们用单调队列解;当然还有其他的算法(...原创 2020-03-30 20:57:15 · 714 阅读 · 0 评论 -
数学考试 (区间DP)
数学考试题目描述:今天qwb要参加一个数学考试,这套试卷一共有n道题,每道题qwb能获得的分数为ai,qwb并不打算把这些题全做完,他想选总共2k 道题来做,并且期望他能获得的分数尽可能的大,他准备选2个不连续的长度为k的区间 , 即[L,L+1,L+2,…,L+k-1],[R,R+1,R+2,…,R+k-1](R >= L+k)。输入描述:第一行一个整数T(T<=10),代...原创 2020-03-29 20:47:54 · 391 阅读 · 0 评论 -
合并回文子串 (区间DP)
合并回文子串题目描述 :输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串,如"aba"和"xyyx")。需要求出所有可能的C中价值最大的字符串,输出这个最大价值即可。输入描述:第一行一个整数T(T ≤ 50...原创 2020-03-28 09:57:21 · 561 阅读 · 0 评论 -
tokitsukaze and Soldier(思维 贪心 )
tokitsukaze and Soldier 题目描述:在一个游戏中,tokitsukaze需要在n个士兵中选出一些士兵组成一个团去打副本。第 i 个士兵的战力为v[i],团的战力是团内所有士兵的战力之和。但是这些士兵有特殊的要求:如果选了第 i 个士兵,这个士兵希望团的人数不超过 s[i]。(如果不选第i个士兵,就没有这个限制。)tokitsukaze想知道,团的战力最大为多少。...原创 2020-03-25 17:54:42 · 544 阅读 · 0 评论