摘要:
原题链接 题解 把覆盖的区域变成黑色,然后在区域内划几条竖线,一定能分成若干个矩形左右拼接而成的图形 想象一条竖着的线,它的运动轨迹是不连续的,即他会从一个矩形的竖边跳到另一个矩形的竖边,每跳一条竖边都会对借着竖边归属的矩形的信息对这条竖边的激活块进行修改 当竖线的绝对位置发生移动时,计算激活区间产 阅读全文
posted @ 2024-03-10 21:31
纯粹的
阅读(61)
评论(0)
推荐(0)
摘要:
原题链接 题解 原题等价于求以 \(i,(i>=k)\) 为右端点,长度为 \(k\) 的区间内的最大元素 \(\to\) 由于维护的区间是定值,所以我们可以用单调队列维护,单调队列中保证元素大小从头到尾降序,且下标升序 这样一来,我们便可以保证下标在指定范围内,然后取最大值也只需要 \(O(1)\ 阅读全文
posted @ 2024-03-10 15:17
纯粹的
阅读(21)
评论(0)
推荐(0)
摘要:
原题链接 题解 1.倒序求 2.求每个点前有多少高度比自己小的 3.高度函数图像是有升有降的,由于要求比自己小的,在求完之后,我们把所有点前比自己小的点缩起来放到自己身上,然后把那些点删掉,再插入自己 这样序列就变成了降序,遍历的时候也只需要遍历那些降序点 code #include<bits/st 阅读全文
posted @ 2024-03-10 15:01
纯粹的
阅读(81)
评论(0)
推荐(0)
摘要:
原题链接 题解 太巧妙了 把每个点上方的连续f长度记录下来,然后求每行的柱状图构成的矩形的最大面积 code #include<bits/stdc++.h> using namespace std; int f[1005][1005]={0}; int n,m; struct node { int 阅读全文
posted @ 2024-03-10 14:37
纯粹的
阅读(25)
评论(0)
推荐(0)
摘要:
原题链接 题解 当你直到贪心不可行的时候就要用dp了 code #include<bits/stdc++.h> using namespace std; int ans=2e9; vector<int> G[10005]; int dp[100005][55]={0}; void ss(int no 阅读全文
posted @ 2024-03-10 12:00
纯粹的
阅读(37)
评论(0)
推荐(0)
摘要:
原题链接 题解 得分有哪些条件?颜色相同,下标同奇或同偶, 由此我们对数进行sort分类,把颜色相同的放一起,然后颜色内部按下标小到大排 然后就是很关键的分数计算公式 \((x + z) \times (\text{number}_x + \text{number}_z).\) 可以分解为 \(\t 阅读全文
posted @ 2024-03-10 01:06
纯粹的
阅读(32)
评论(0)
推荐(0)
摘要:
原题链接 题解 话说dalao们是怎么做这么快的?? 问从含有字符串的背包中取出一些字符串(每个背包只能娶一个),问能拼凑出给定字符串的最小代价 由于这里的拼凑是有顺序的,即如果b能拼上的是中间一块,那么a一定拼的是前边一块,这种拼凑让人想到了背包 这里是字符串的背包,其实是一样的,先判断能不能放进 阅读全文
posted @ 2024-03-10 00:25
纯粹的
阅读(29)
评论(0)
推荐(0)
摘要:
原题链接 题解 直接插在它后面,这种数据结构是链表 赛时明明想到了链表,但是写的一团糟。。 对于链表,最简单的就是用map了 code #include<bits/stdc++.h> using namespace std; int a[200005]; map<int,int> head,to; 阅读全文
posted @ 2024-03-10 00:20
纯粹的
阅读(47)
评论(0)
推荐(0)

浙公网安备 33010602011771号