小B浇花
发布日期:2021-05-07 06:54:30 浏览次数:22 分类:技术文章

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

小 B 浇 花 小B浇花 B

题目链接:

在这里插入图片描述

在这里插入图片描述

思路

这道题我们可以贪心。

从低到高枚举花,如果此高度的花不止一朵,就浇花到此高度的花只剩一朵,一直这样下去。再在浇花时判断高度上限是否要增加,就可以了。

代码

#include
#define max(x, y) (x) > (y) ? (x) : (y)#define min(x, y) (x) < (y) ? (x) : (y)using namespace std;int n, x, a[40001], l = 40000, r, ans;int main() { scanf("%d", &n);//读入 for (int i = 1; i <= n; i++) { scanf("%d", &x);//读入 a[x]++;//标记 l = min(l, x);//记录 r = max(r, x);//记录 } for (int i = l; i <= r; i++) if (a[i] > 1) { ans += a[i] - 1;//加浇水次数 a[i + 1] += a[i] - 1;//让花长高 a[i] = 1;//此高度就只剩1朵花 if (i == r) r++;//增加长度上限 } printf("%d", ans);//输出 return 0;}
上一篇:==与equals()的区别
下一篇:String、StringBuffer、StringBuilder的比较

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月25日 22时14分05秒