C. Make It Equal(模拟)
发布日期:2021-06-30 10:17:55 浏览次数:2 分类:技术文章

本文共 633 字,大约阅读时间需要 2 分钟。

其实就是一个模拟,但是我还是不会写…

正 解 : 预 处 理 一 个 c n t [ i ] , 表 示 高 度 大 于 等 于 i 的 块 有 几 个 正解:预处理一个cnt[i],表示高度大于等于i的块有几个 :cnt[i],i

那 么 从 最 大 的 高 度 开 始 , 每 次 都 贪 心 的 去 小 1 的 高 度 那么从最大的高度开始,每次都贪心的去小1的高度 ,1

#include 
using namespace std;const int maxn=2e5+10;int n,k,h,cnt[maxn];int main(){ cin >> n >> k; int l=1e9,r=0; for(int i=1;i<=n;i++) { cin >> h; l=min(l,h),r=max(r,h); cnt[h]++; } for(int i=r;i>=l;i--) cnt[i]+=cnt[i+1];//表示高度大于等于i的个数 int ans=0,temp=0; for(int i=r;i>l;i--) { temp+=cnt[i];//现在的目的是去i-1的高度 //如果目前的花费仍然
k) ans++,i++,temp=0;//否则,答案加1,继续停在本层 } if(temp) ans++; cout<

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/107186053 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:D. Merge Equals(map贪心法)
下一篇:I. Palindrome Pairs(字符哈希)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月22日 04时47分29秒