随笔分类 - ACM小技巧
摘要:[TOC] 题目链接 "传送门" 题意 找第k小团。 思路 用bitset来标记每个结点与哪些结点直接有边,然后进行bfs,在判断新加入的点与现在有的点是否都有边则直接用bitset与一下即可,记得去重。 代码 cpp include include include include
阅读全文
摘要:题目链接 "传送门" 题意 给你一个n×n的矩形,要你求出一个面积最大的矩形使得这个矩形内的最大值减最小值小于等于M。 思路 单调队列滚动窗口。 比赛的时候我的想法是先枚举长度然后再枚举左端点,最后用单调队列来做,然后T成傻逼,赛后看大佬们的代码发现我的做法比先枚举左端点再枚
阅读全文
摘要:题目链接 "传送门" 思路 首先我们对a正反各跑一边LIS,记录每个位置在前一半的LIS中应该放的位置ans1[i],后一半的位置ans2[i]。 对于字典序最小的方案,我们找到第一个峰值,然后往前遍历。在i这个位置,如果它在LIS中放的位置是pos,那么我们先看当前
阅读全文
摘要:题目链接 "传送门" 题意 求在n×m的01子矩阵中找出面积第二大的内部全是1的子矩阵的面积大小。 思路 处理出每个位置往左连续有多少个1,然后对每一列跑单调栈,记得处理由同一矩阵贡献的面积。 代码实现如下 cpp include include include incl
阅读全文
摘要:题目链接 "传送门" 题面 思路 设x=r∏i=lai=n∏i=1pcii 由欧拉函数是积性函数得: $$ \begin{aligned} \phi(x)&=\phi(\prod\limits_{i=1}^{n}
阅读全文
摘要:题目链接 "传送门" 题面 题意 找到最长的一个区间,使得这个区间内的最大值减最小值在[m,k]中。 思路 我们用两个单调队列分别维护最大值和最小值,我们记作q1和q2。 如果q1的底部的值与q2的底部的值大于k,则将q1,q2底部中下标最小的pop掉,并记录下来,记
阅读全文
摘要:链接:https://www.cnblogs.com/SovietPower/p/9757651.html
阅读全文
摘要:吐泡泡题目链接:https://www.nowcoder.com/acm/contest/74/A 题目: 思路: 这种题目当初卡了我很久,今天早训时遇到一个一样得题,一眼就想到用栈模拟,就又回来把这题补了。这题很简单,看代码基本上就能看懂,就不解释了。 代码实现如下: Plug-in题目链接:ht
阅读全文
摘要:这几天做了几道随机生成数组的题,且需要用nth-elemeng函数,并且都是北航出的多校题…… 首先我们先贴一下随机生成数组函数的代码: 1 unsigned x = A, y = B, z = C; 2 unsigned rng61() { 3 unsigned t; 4 x ^= x << 16
阅读全文
摘要:首先,max_element和min_elemetn看字面意思是求最大值和最小值,这个确实是这个意思。不过,需要注意的是,他返回的是最大值(最小值)的地址,而非最大值(最小值)。对于一般数组的用法则是int pos = max_element(a, a + n) - a,min_element同理。
阅读全文