![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stl
文章平均质量分 50
timidcatt
永远不要放弃战斗
展开
-
D1. Candy Party (Easy Version) Codeforces Round 896 (Div. 2)
所以在只能减去一个2的幂再加上一个2的幂的情况下,只能去除x的二进制表达里面一段连续的1,所以如果某个x里面有多段1,则无法使所有相等,否则我们对于每个x,找到它最高位再高一位对应的数y,和其最低位的数z,那么如果x>0,其应该给出一个y,并获得一个z,如果x原创 2023-09-11 10:34:00 · 327 阅读 · 7 评论 -
B. Building Company The 13th Shandong ICPC Provincial Collegiate Programming Contest
思路:如果我们逐个项目判断能否完成,那么时间复杂度将是n*m,那么我们可以判断每个岗位,将每个岗位在各项目中的所需员工数从小到大排序,每当这个岗位有新员工时,我们就判断哪些项目的该岗位需求能被满足,所以每个项目要维护一个当前限制数,初始等于m,每满足一个岗位的需求,限制数就-1,限制数为0就可以完成这个项目,用队列存储所有可以完成的项目,逐一领取奖励然后解除岗位限制即可。原创 2023-09-02 17:35:28 · 453 阅读 · 0 评论 -
D. Andrey and Escape from Capygrad Round 892 (Div. 2) 1859D
思路:因为我们要走到最远的位置,所以如果我们在某一个传送门的[b,r]范围内,那么我们肯定不会用这个传送门,在原地不动就是最远位置,如果我们要用这个传送门,我们也肯定只会传送到b的位置,即这个传送门能到达的最远位置,所以其实对于某一个传送门,我们只要在[l,b]的范围内,就能到达b,r和a其实是无关项。我们将所区间都合并完成后,任意两个区间都没有重合,这样对于每个其实位置,我门就可以用二分找到他属于哪个区间,他能到达的最远位置也就是区间的右端点,如果不在任何区间内,原地不动就是最远。原创 2023-08-13 14:23:15 · 286 阅读 · 0 评论 -
Insert 1, Insert 2, Insert 3, ... 2023牛客暑期多校训练营8 H
然后要判断不合法的情况,也就是a[i]的数量>a[i-1]的数量的情况,我们可以开n个栈,维护每个数字最后出现的位置,当出现a[i]的数量大于a[i-1]的数量时,最后的合法位置就是a[i-1]最后出现的位置,在那个位置右边到当前位置的1都不会再合法了,所以要单独开栈记录所有1的位置,如果出现不合法的情况,就将最后合法位置以外的1弹出,每遍历一个数就。题目大意:给出一个长度为n的数组a,问有多少子串满足其可以用多个排列穿插构成。统计左边有多少个合法的1即可。原创 2023-08-12 12:45:19 · 551 阅读 · 0 评论 -
E. Character Blocking codeforces1840E
思路:如果要判断两个字符串是否相等,那么直接判断的最差时间复杂度是O(n),所以我们考虑如何维护当前字符串是否相等的状态,我们记录初始两字符串不等的位置数dif,然后发现锁定操作是按时间顺序锁定和解锁的,且题目确保了不会锁定已锁定的字母,所以我们可以用栈记录被锁定的位置,和该位置的解锁时间,每次操作前先将所有到了解锁时间的位置解锁,然后每锁定一个原先不等的位置,dif-1,在交换时,如果交换前对应位置字母相等,交换后不等,dif+1,反之dif-1,最后只要判断dif是否唯0即可知道是否相等。原创 2023-06-07 15:53:39 · 364 阅读 · 0 评论 -
C. Elemental Decompress codeforces 1768C
题目大意:给出一个长度为n的数组a,要求输出两个排列p,q,使得对于所有i属于1到n,都有max(pi,qi)=ai。原创 2023-01-06 16:05:07 · 384 阅读 · 0 评论 -
E. Anya‘s Simultaneous Exhibition codeforces 1779E
那么有了以上结论的话,我们先n次询问得出每个人和其他所有人比的胜场,然后初始化最小冠军胜场x=最大的那个胜场数,然后将所有人按胜场数从多到少排序,然后对每个不是冠军的进行一次询问,让他与所有已确定的冠军比赛,如果有胜场,说明它也是候选冠军,维护最小胜场,然后将前面胜场大于等于x的没有被归为候选冠军的都归为候选冠军,总询问次数不超过2n。(如果有大佬知道怎么严谨证明,烦请留言指教)原创 2023-01-05 18:27:59 · 199 阅读 · 0 评论 -
D. Boris and His Amazing Haircut codeforces1779D
我们在输入b时,如果当前栈空,但如果当前遇到的数等于ai,那么这个数就不管,因为他不需要操作,如果小于ai,我们就把他放入栈中,在栈不空时,如果当前遇到的数小于栈顶数,也直接将这个数入栈。如果当前遇到的数大于栈顶元素,无论他是否等于ai,我们要用map统计栈内所有小于这个数的数量并弹出,然后如果这个数不等于ai,且栈空或者这个数不等于栈顶数就要将它入栈,因为如果这个数等于栈顶,这两个数中间都是小于它们的,可以用一个x即可,所有栈内不留相同元素,遍历结束后,我们再将栈内所有元素弹出并计数。原创 2023-01-05 00:04:12 · 285 阅读 · 0 评论 -
A. Technical Support codeforces1754A
思路:我们用一个栈来维护是否配对,如果当前输入的是Q,就放入栈,如果是A,再看栈顶是否是Q,如果是Q的话就弹出栈顶元素代表成功配对,如果最后的栈为空也就代表Q全部匹配成功。有一个长度为n的仅包含Q,A的字符串,前面一个Q和后面一个A可以配对,问所有Q能否全部配对。原创 2022-11-08 11:41:36 · 167 阅读 · 0 评论 -
Bad Sequence CodeForces - 1214C
题目思路有一个由()组成的字符串,问能否在至多移动一个字符的情况下使所有括号完美匹配。思路先用栈使能匹配的括号全部匹配,如果剩下的是)(的话就可以成功匹配。原创 2022-07-20 18:27:27 · 111 阅读 · 0 评论 -
Bracket Sequence CodeForces - 223A
思路用stack数组记录左半括号的位置,如果遇到右半括号且当前栈顶是与之匹配的左半括号,就弹出栈顶元素,如果是其他情况,就记录这个位置,这样我们把所有不是correct的位置都找到了,然后我们遍历栈,栈顶元素-1即为一个correct子串的右边界,下一个栈顶元素+1即为一个correct子串的左边界,我们在这个子串里统计[的数量,并维护最大值。...原创 2022-07-20 18:22:24 · 132 阅读 · 0 评论