首先题意:(这个真的令人无奈,题目都看不太明白)

网上百度了一下,就是以下意思:

给你n*m个格子,每个格子的面积是10*10米,整个区域外看作无限高的墙壁。输入每个格子的海拔高度(可能为负数),以及区域内的雨水总体积,输出区域水位的海拔高度以及淹没方格的占比。

注明一下:星星假装为水,题目给出了每个格子的海平面的高度。

最最最需要知道的是,装水是两个海平面之间的那个区域可以放水,而不是我画的那个方格,存水的是方格外面的区域。

海平线高度是什么意思——每个方格的海拔相当于这个方格的固体体积,可以把它们都看作木块,雨水只存在两个木块间高度差的空间内。

用两个栗子来解释一下!!!

1 case 1:
2 3 1
3 10 20 30
4 3000
5 解答:
6 首先我们看一下3000是否会将所有格子的空间都填埋了?   填埋最少所需的水量:((30-10)+(30-20))*10*10=3000
7 我们可以看到完全可以
8 所有答案是   h=30    百分比是1图示:      30   20 2010 10 100  0  0

case 2:
3 1
-10 -20 -30
3000
解答:
首先我们看一下3000是否会将所有格子的空间都填埋了?   填埋最少所需的水量:((30-10)+(30-20))*10*10=3000
我们可以看到完全可以
所有答案是   h=-10    百分比是1
图示:
0
-10
-20 -20
-30 -30 -30

1 3 1
2 10 20 30
3 2000
4 Region 1
5 Water level is 25.00 meters.
6 66.67 percent of the region is under water.

1 3 1
2 -10 -20 -30
3 2000
4 Region 6
5 Water level is -15.00 meters.
6 66.67 percent of the region is under water.

通过上面的这些栗子,大概能明白本题的题意了吧!!!

现在就是解决问题的代码:

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int n,m;double count;int t=0;while(cin>>n>>m){if(t!=0)cout<<endl;if(n==0&&m==0)break;t++;double a[1000];double sum=0;double lever=0;double len=0;
//        double sum1=0;for(int i=0;i<n*m;i++){cin>>a[i];}sort(a,a+n*m);for(int i=0;i<n*m-1;i++)sum+=(a[i+1]-a[i])*(i+1);
//        cout<<"sum: "<<sum<<endl;
        cin>>count;count/=100;if(sum<=count){lever=100;len=a[n*m-1]-a[0];    count=count-sum;len+=count/(n*m);}else{
//        lever=count*100/(sum*1.00);for(int i=0;i<n*m-1;i++){if((a[i+1]-a[i])*(i+1)>=count){len+=count/(i+1);lever++;break;}else{len+=(a[i+1]-a[i]);count-=(a[i+1]-a[i])*(i+1);lever++;}}lever=lever/(n*m)*100;}len=len+a[0];cout<<"Region "<<t<<endl;cout<<"Water level is ";printf("%.2lf",len);cout<<" meters."<<endl;printf("%.2lf",lever);cout<<" percent of the region is under water."<<endl;}
}

View Code

转载于:https://www.cnblogs.com/Aiahtwo/p/10587874.html

uva 815之理解诡异的海平线题目之不容易相关推荐

  1. 【UVA 815 --- Flooded!】

    [UVA 815 --- Flooded!] 题目来源:点击进入[UVA 815 - Flooded!] Description To enable homebuyers to estimate th ...

  2. Flooded! UVA - 815(简单计算 -洪水)

    题目大概: 在n×m的网格世界中(有边界,水不外流),每个网格单位均为10×10的正方形,天上下起大雨,输入降水量和每个格子的海拔高度,输出水位海拔高度和有水区域(格子高度严格小于水平面)百分比 UV ...

  3. uva 815 Flooded!

    题目大意: 有n*m(1<=n,m<=30)的网格,每个格子是边长为10米的正方形,网格四周是无限大的墙壁.输入每个格子的海拔高度,以及网格的内雨水的总体积,输出水位的海拔高度以及有多少百 ...

  4. UVa 815 Flooded

    // 单位面积 const double S = 10.0 * 10.0;int main() {// freopen("my_ans.txt", "w", s ...

  5. UVA 815 Flooded!(洪水!)

    题目:有一个n*m(1≤m,n≤30)的网格,每个格子都是10米的正方形,网格的四周是无限高的墙壁,输入每个格子的海拔高度(每个格子都为实心),以及网格内雨水总体积,输出水位的海拔高度以及有多少百分比 ...

  6. 优雅的理解 call 和 apply 的使用方法

    作者在看到一篇优雅的使用 js 的各种方法解决算法的时候产生的疑问,到底什么时候使用 apply 和 call 啦? 每次看到别人用 apply 和 call 其实从以前的懵懵懂懂到现在的明白,但是自 ...

  7. UVa 10047,独轮车

    题目链接:https://uva.onlinejudge.org/external/100/10047.pdf 题目链接:http://vjudge.net/contest/132239#proble ...

  8. 小学阅读方法六种_小学语文重难点|阅读理解的解答技巧+方法(合集)

    阅读理解,一直是小学阶段孩子们除写作以外最头疼的部分,很多孩子每次考虑的时候阅读理解都会被扣掉大量的分数.那么孩子们应该如何更好的进行阅读和理解呢?今天我们就来为孩子们分享一些关于小学语文阅读理解的解 ...

  9. 全面分析RHCE7(红帽认证工程师)考试题目之 ----Samba文件共享篇

    samba 文件共享(共享文件夹) 完成了windows和linux的文件共享 配置SMB共享 Samba软件项目 用途:为客户机提供共享使用的文件夹 协议:SMB(TCP 139),CIFS(TCP ...

最新文章

  1. 实战:在Windows Server2008上配置NLB
  2. 【opencv系列06】OpenCV4.X滑动条操作
  3. python_GUI操作(鼠标、键盘)
  4. HTML期末作业-香水网站
  5. java xml解析_Java解析XML(4种方法)
  6. 目录、路径、虚拟路径
  7. [经典线程同步问题]吸烟者
  8. 关联容器----关联容器概述,关联容器操作,无序容器
  9. 多线程-AbstractQueuedSynchronizer(AQS)
  10. GNS3连接VMware中虚拟主机,能相互ping通
  11. 2010全国导游大赛总决赛现场调试及比赛抓图
  12. [Delphi]用程序更改 IE 的代理服务器(Proxy)设置及本地连接
  13. 《明朝那些事儿》读书笔记
  14. python数据清洗
  15. uniapp 图片生成
  16. 流媒体服务器使用手册
  17. 豪杰超级解霸 V8.3 11月18日发布
  18. EBS:AP_CHECKRUN_CONC_PROCESSES_ALL
  19. 北京航空航天大学软件学院2021年保研复试流程介绍+经验分享
  20. 如何使用 Delta Lake 构建批流一体数据仓库

热门文章

  1. 算法:正则表达式匹配
  2. 现在c++都转go了
  3. 口语学习Day1:天气
  4. 静态链接库与动态链接库的优缺点
  5. USB、TTL电平、232电平之间的相互转换
  6. Linux查看tomcat 控制台输出命令, WebSphere中间件日志
  7. 【数道云大数据】大数据平台哪一个好用?武汉2019年大数据平台排行版?...
  8. Android adb你真的会用吗?
  9. android高效加载网络图片
  10. Linux系统分区和挂载浅谈