• UVa815_Flooded!


     1 #include <iostream>
     2 //#include <fstream>
     3 #include <iomanip>
     4 #include <cstdio>
     5 #include <algorithm>
     6 #include <cstring>
     7 using namespace std;
     8 
     9 const int maxn = 30 * 30 + 10;
    10 const int space = 10 * 10;
    11 
    12 int main()
    13 {
    14     //ofstream out("out.txt");
    15     int m, n, kase = 0, volume;    //降水总量
    16     double eleva[maxn], height;    //每个格子的海拔高度, 输入的高度
    17     double percnt = 0;             //有多少百分比的区域
    18     while (cin >> m >> n)
    19     {
    20         memset(eleva, 0, sizeof(eleva));
    21         if (!m && !n) break;
    22         for (int i = 0; i < m; i++)
    23         {
    24             for (int j = 0; j < n; j++)
    25             {
    26                 cin >> height;
    27                 eleva[i * n + j] = height;
    28             }
    29         }
    30         cin >> volume;
    31         sort(eleva, eleva + m*n);              //排序
    32 
    33         int k, comput = 0;                     //计算已经淹没地区的水量
    34         for (k = 1; k < m*n; k++)
    35         {
    36             int tmp = comput + (eleva[k] - eleva[k - 1]) * space * k;
    37             if (tmp >= volume)    
    38                 break;
    39             comput = tmp;
    40         }
    41         double water = (volume - comput) / (double)(k * space) + eleva[k - 1];    //最终水平面高度是 = 当前被淹没的最高海拔 + 水面比当前海拔高出的高度
    42         
    43         cout << "Region " << ++kase << "
    ";
    44         cout << fixed << setprecision(2)
    45              << "Water level is " << water << " meters.
    ";
    46         
    47         double total = m*n;
    48         percnt = (k*100.0 / total) ;         //被淹没区域比例 = 当前比水平面低的海拔数 / 区域总数
    49 
    50         cout << fixed << setprecision(2)
    51             << percnt << " percent of the region is under water.
    
    ";
    52     }
    53 
    54     return 0;
    55 }
    如图,将海拔按高矮排序好(先排序好,比较容易计算已经淹没地区的水量),由于是水往地处流,如果水量如图,淹没区域如图中阴影地区。
  • 相关阅读:
    动态页面技术(JSP/EL/JSTL)
    JavaWeb核心之Servlet
    会话技术Cookie&Session
    待整理
    二进制中1的个数(python)
    矩形覆盖(python)
    变态跳台阶(python)
    跳台阶(python)
    斐波那契数列(python)
    旋转数组的最小数字(python/c++)
  • 原文地址:https://www.cnblogs.com/douzujun/p/5772413.html
Copyright © 2020-2023  润新知