4.17 离散化习题
吐槽:不理解,找一堆和离散化没什么关系,中间 sort 一下的题就叫离散化练习题,打着离散化的牌子实则是一堆数据结构,意义何在?不懂。
今天只贴一道我比较喜欢的题,也是感觉唯一一道可做题。
思路非常简单(但其实还是看了题解....)。考虑枚举怎么淹过去,显然我们尽量要让高一块的突出去,所以如果这一块比前一块高,用差分的思想,对于这两个高度之间的水位高度,它都能产生 1 的贡献。然后统计就可。注意要离散化。
已经爱上用 map 了,map 会直接进行去重。以及 map 的 [] 操作很好用,对于没有离散化的元素可以直接引用。唯一的缺点就是平衡树实现导致略慢,但是非常好写。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5 + 10;
int n;
int a[N];
ll sum, ans;
map<int, int> b;
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i ++ )
{
scanf("%d", &a[i]);
if(a[i] > a[i - 1])
{
b[a[i - 1]] ++;
b[a[i]] --;
}
}
for(auto i : b)
{
sum += i.second;
ans = max(ans, sum);
}
printf("%d", ans);
return 0;
}
一些废话:不能独立写出来正确的数据结构导致我比较的抽象的不会这些练习题。啊。崩溃的。
但是称为排序练习题多少有点...
时间不够,以及自身的懒惰。都是很大的问题。
本文作者:Moyyer_suiy
本文链接:https://www.cnblogs.com/Moyyer-suiy/p/17325959.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步