【题解】洪水

题目描述

  干旱使得Farmer John农场上的草死了很多。所以他跳一种非洲部落舞蹈来求雨。制雨者知道他想求多少雨。不幸的是,制雨者太热情了,农场面临着洪水的威胁。帮助Farmer John找到水的高度,他可以把他的奶牛移到安全的地方。

  农场是由M×N(1≤M≤400,1≤N≤400)的一个个一米边长的正方形方格组成的。每格有一个值为整数的海拔高度(1≤海拔高度≤10000)。给出一个M×N的表格和降水量V(1≤V≤1000000000)。

  水总是先流到最低的方格,不管该方格在哪儿。

  降水量总是整数。你必须算出水上升的高度,水面和海平面(海拔高度为0)之间的陆地的量(可能为0)。陆地高度和水面相同时看成被淹没,高出部分不会被水淹没。

输入输出格式

输入格式

  第一行,三个整数:M,N,V;

  接下来是一个M×N的表格(整数)。

输出格式

  一行,两个整数,水上升的高度,水面和海平面之间的陆地的量。

输入输出样例

输入样例

4 5 33

2 2 2 2 2

1 3 4 3 2

2 3 5 3 2

2 4 1 1 2

输出样例

4 43

说明

样例说明

  水将上升4米,淹没的区域标记1,2,3,4。水下陆地的量:1×3+2×10+3×4+4×2=43。

题解

  注意达到最高点是洪水不一定已经流完。

#include <iostream>
#include <algorithm>

using namespace std;

int m,n,v;
int a[10001];
int low=10001,high=-1;
int ans;

int main()
{
    cin>>m>>n>>v;
    if(!v) {cout<<0;return 0;}
    int temp;
    for(int i=1;i<=m;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>temp;
            low=min(low,temp);
            high=max(high,temp);
            a[temp]++;
        }
    }
    for(int i=low;i<=high;i++) a[i]+=a[i-1];
    for(int i=1;i<low;i++) ans+=a[i]*i;
    while(1)
    {
        if(low<=high) ans+=(a[low]-a[low-1])*low;
        if(v>=a[min(low,high)]) v-=a[min(low,high)],low++;
        else break;
    }
    cout<<low<<" "<<ans;
    return 0;
}

参考程序

原文地址:https://www.cnblogs.com/kcn999/p/10607062.html

时间: 2024-10-09 21:40:04

【题解】洪水的相关文章

[POI2007]洪水pow 题解

[POI2007]洪水pow 时间限制: 5 Sec  内存限制: 128 MB 题目描述 AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商议之后,会议决定,调集若干巨型抽水机,将它们放在某些被水淹的区域,而后抽干洪水.你手头有一张AKD市的地图.这张地图是边长为m*n的矩形,被划分为m*n个1*1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是A

题解1235. 洪水 (Standard IO)

Description 一天, 一个画家在森林里写生,突然爆发了山洪,他需要尽快返回住所中,那里是安全的.森林的地图由R行C列组成,空白区域用点“.”表示,洪水的区域用“*”表示,而岩石用“X”表示,另画家的住所用“D”表示,画家用“S”表示.有以下几点需要说明:1. 每一分钟画家能向四个方向移动一格(上.下.左.右)2. 每一分钟洪水能蔓延到四个方向的相邻格子(空白区域)3. 洪水和画家都不能通过岩石区域4. 画家不能通过洪水区域(同时也不行,即画家不能移到某个格子,该格子在画家达到的同时被洪

洪水 Pow

Description AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商议之后,会议决定,调集若干巨型抽水机,将它们放在某些被水淹的区域,而后抽干洪水. 你手头有一张AKD市的地图.这张地图是边长为m*n的矩形,被划分为m*n个1*1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是AKD市的一个组成部分.地图上的所有部分都被水淹没了.并且,由于这张

洪水(flood)

洪水(flood) 题目背景 Awson是某国际学校信竞组的一只菜鸡.今年,该市发生了千年难遇的洪水.被监禁在学校的Awson不甘怠堕,想将自己投入到公益服务事业中去.这天,他偷了H老师的小电驴,偷偷地溜出校. 题目描述 他观察了一下整个城市的概况,发现学校校门所在地的坐标为(X,Y).城市共有不超过100条街道,知道每条街道的起止点坐标,街道是笔直双向的,每个方向一个车道.并且确保街道是相互连通的.他每第一次走过一侧车道,满目疮夷,生灵涂炭,百感交集:或触景生情,感慨大自然的残酷,悠悠长叹:或

【BFS】洪水

描述 魔法森林的地图是R行C列的矩形.能通行的空地表示为'.',C君倾倒洪水的地点标记为'*',无法通行的巨石阵标记为'X',海狸的巢穴标记为'D',而画家和三只小刺猬的初始位置标记为'S'. 每一分钟,画家和三个小刺猬可以走到相邻(上.下.左或右)的四个空地之一.与此同时,洪水每一分钟也会扩大到相邻(上.下.左或右)的所有的空地.一旦空地被淹没,就无法再通行.洪水无法通过巨石阵.但是海狸的巢穴建在很高的地方,永远不会淹没. 注意,画家和三只小刺猬无法进入即将被淹没的空地,即如果他们与洪水在同一

洛谷 P1079 Vigen&#232;re 密码 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=1079 题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为 南军所广泛使用. 在密码学中,我们称需要加密的信息为明文,用 M 表示:称加密后的信息为密文,用 C 表示:而密钥是一种

8.8联考题解

今天的T1让我怀疑我是不是在做奥赛题--这考的是什么知识点啊这个,会不会用绝对值函数? Evensgn 的债务 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Evensgn 有一群好朋友,他们经常互相借钱.假如说有三个好朋友A,B,C.A 欠 B 20 元,B 欠 C 20 元,总债务规模为 20+20=40 元.Evensgn 是个追求简约的人,他觉得这样的债务太繁杂了.他认为,上面的债务可以完全等价为 A 欠C20 元,B 既不欠别人,别人也不欠他.这样总债务规模就压缩到了 

POJ 2533 - Longest Ordered Subsequence(最长上升子序列) 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:http://poj.org/problem?id=2533 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., aiK)

(leetcode题解)Pascal&#39;s Triangle

Pascal's Triangle  Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 题意实现一个杨辉三角. 这道题只要注意了边界条件应该很好实现出来,C++实现如下 vector<vector<int>> generate(int