UVa 815 - Flooded!

本文介绍了一种用于模拟洪水淹没情况的算法。该算法首先对地面海拔进行排序,再通过计算水位变化来确定不同区域的淹没程度,并输出淹没高度及区域受淹比例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先将地面海拔进行排序,将水的体积和地面海拔较低处产生的总体积相加平均后为当前水量的绝对海拔值,如果低说明只能淹没这一层,高了往后平均判断。表示因为空行设置在两个region之间而不是每个region之后被wa了十几发(很绝望)。

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int maxn = 50;
const int s = 100;
int region[maxn*maxn];

int main()
{
    int m, n, num, whole, judge;
    double percent, height, water;
    judge = 0;
    whole = 1;
    percent = water = height = 0;
    cin>>m>>n;
    while(m!=0 && n!=0)
    {
//      if(judge>0)
//      {
//          cout<<endl;
//      }
        num = 0;
        memset(region,0 , sizeof(region));
        for(int i=0; i<m*n; i++)
        {
            cin>>region[i];
        }
        cin>>water;
        sort(region, region+m*n);//从小到大将网格海拔排序 
        for(int i=0; i<m*n; i++)
        {
            water += region[i] * s;
            height = (water*1.0) / (s * (i +1));
            num++;
            if(height <= region[i+1])
            {
                num = i+1;
                break;
            }
        }
        percent = (1.0 * s * num) / (n*m*1.0);
        printf("Region %d\n", whole++);
        printf("Water level is %.2lf meters.\n", height);
        printf("%.2lf percent of the region is under water.\n\n", percent);
        ++judge; 
        cin>>m>>n;
    } 
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值