首页 > 其他分享 >【USACO OPEN12铜组】岛屿

【USACO OPEN12铜组】岛屿

时间:2023-07-25 21:33:59浏览次数:33  
标签:田地 岛屿 样例 USACO 铜组 ans OPEN12

【USACO OPEN12铜组】岛屿

目录

2014. 岛 - AcWing题库

题目描述

每当下雨时,农夫约翰的田地总是被洪水淹没。

由于田地不是完全水平的,所以一些地方充满水后,留下了许多被水隔开的“岛”。

约翰的田地被描述为由 N� 个连续高度值 H1,…,HN�1,…,�� 指定的一维场景。

假设该场景被无限高的围墙包围着,请考虑暴雨期间发生的情况:

最低处首先被水覆盖,形成一些不连贯的岛,随着水位的不断上升,这些岛最终都会被覆盖。

一旦水位等于一块田地的高度,那块田地就被认为位于水下。

fig_islands.png

上图显示了一个示例:在左图中,我们只加入了刚好超过 11 单位的水,此时剩下 44 个岛(最大岛屿剩余数量),而在右图中,我们共加入了 77 单位的水,此时仅剩下 22 个岛。

请计算,暴风雨期间我们能在某个时间点看到的最大岛屿数量。

水会一直上升到所有田地都在水下。

输入格式

第一行包含整数 N�。

接下来 N� 行,每行包含一个整数表示 Hi��。

输出格式

输出暴风雨期间我们能在某个时间点看到的最大岛屿数量。

数据范围

1≤N≤1051≤�≤105,
1≤Hi≤1091≤��≤109

输入样例:

8
3
5
2
3
1
4
2
3

输出样例:

4

思路

在网上看到了一个大佬的差分做法。

如果 \(a_i >a_{i - 1}\)

那么当水上升到 \(a_{i- 1}\) 时肯定可以多出一块岛屿,但是当水上升到 \(a_i\) 时就不存在了

具体实现看代码

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
using namespace std;
const int N = 1e5 + 5;
int n , ans , a[N];
map<int , int> b;
int main () {
    scanf ("%d" , &n);
    fu (i , 1 , n) {
        scanf ("%d" , &a[i]);
        if (a[i] > a[i - 1]) b[a[i - 1]] ++ , b[a[i]] --;
    }
    int sum = 0 , ans = 0;
    for(auto ed : b) {
        sum += ed.second;
        ans = max (ans , sum);
    }
    printf ("%d" , ans);
    return 0;
}

标签:田地,岛屿,样例,USACO,铜组,ans,OPEN12
From: https://www.cnblogs.com/2020fengziyang/p/17581100.html

相关文章

  • 题解 P2903 【[USACO08MAR]The Loathesome Hay Baler S】
    postedon2021-05-0320:50:49|under题解|source首先输入,记录一下哪个齿轮的位置在\((0,0)\),哪个在\((x_t,y_t)\)。接着,为了避免多次判断两个齿轮相切而超时,我们可以预处理一个\(link_{i,j}\),表示第\(i\)个齿轮是否和第\(j\)个齿轮相切。这部分直接\(O(n^2)\)暴......
  • P5095 [USACO12OPEN] Bookshelf S
    P5095[USACO12OPEN]BookshelfS目录P5095[USACO12OPEN]BookshelfS题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示思路赛时code别人code题目描述FarmerJohn闲来无事的时候总喜欢坐下来看书。这些年来,他一共收集了\(N\)本书(\(1\leqN\leq2000\)),他打算......
  • P2900 [USACO08MAR] Land Acquisition G
    P2900[USACO08MAR]LandAcquisitionG题意FarmerJohn准备扩大他的农场,眼前他正在考虑购买\(N\)块长方形的土地。如果FJ单买一块土地,价格就是土地的面积。但他可以选择并购一组土地,并购的价格为这些土地中最大的长乘以最大的宽。比如FJ并购一块\(3\times5\)和一块......
  • 题解 P4955 【[USACO14JAN]Cross Country Skiing S】
    postedon2021-02-2710:04:32|under题解|source这道题其实没有绿这么难,只需要二分+搜索就行了。读入。注意尽量不要用scanf读入bool,这好像是UB,可以用一个变量\(x\)存输入的数,然后直接类型转换。二分。套模版就行了,等一下我们再写\(\operatorname{check}()\)函......
  • 洛谷 P9020 - [USACO23JAN] Mana Collection P
    显然,每个法力池最终能收集到的法力只与这个法力池最终被收集到的时间有关。对于一组询问\((s,e)\),假设我们经过了\(k\)个法力池,我们钦定最终被收集到的时间从后到前分别是\(e=a_1,a_2,\cdots,a_k\),那么最大法力值为\(\sum\limits_{i=1}^kc_{a_i}·\sum\limits_{j=2}^i(s-dis......
  • P8271 [USACO22OPEN] COW Operations S 奶牛操作
    P8271[USACO22OPEN]COWOperationsS奶牛操作目录P8271[USACO22OPEN]COWOperationsS奶牛操作[USACO22OPEN]COWOperationsS题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示分析code[P8271USACO22OPEN]COWOperationsS-洛谷|计算机科学教育新生态(......
  • 题解 [USACO18JAN] MooTube G
    题目链接可以发现,对于一个固定的\(k\),所有边权小于\(k\)的边对答案是没有贡献的,因为一条边的相关性是最小相关性,这也意味着我们不能从\(<k\)的边到达其他的点。由于本题有多组询问,所以对于没有用的边,将其看做被删除,有用的边,将其看做被插入。考虑到本题实际上要维护连通块......
  • P5427 [USACO19OPEN] Left Out S
    P5427[USACO19OPEN]LeftOutS-洛谷|计算机科学教育新生态(luogu.com.cn) 你有个01矩阵,每次可翻转一行或一列,问能否使得最后只有一个0或1。其中翻转指1变0,0变1。 做法基本上都是取第一行第一列给他全部翻成0。这个是一定可以办到的。你只需要找1的位置翻掉那一行/列......
  • 题解 P4183 [USACO18JAN] Cow at Large P
    带有小trick的点分治。建议先做完弱化版再看。假如奶牛在\(u\),那么所需的最少农夫数为\(\sum\limits_{v\inson(u)}[dis(u,v)\geg_v][dis(u,fa_v)<g_{fa_v}]\)。其中\(dis(u,v)\)为\(u,v\)在树上的距离,\(g_u\)为\(u\)到离它最近的出入口的距离(BFS预处理),\(fa_u\)......
  • 题解 P5426 [USACO19OPEN]Balancing Inversions G
    来一篇简单易懂的良心题解。由于数值不是\(0\)就是\(1\),我们可以考虑将逆序对的统计方式化简。以左区间为例,设\(x\)为\(1\)的个数,\(p_i\)为第\(i\)个\(1\)的坐标,则逆序对个数为\(\sum\limits_{i=1}^{x}n-p_i-(x-i)\)。也就是\((n-x)\cdotx+\frac{x\cdot(x+1)}{......