[刷题]算法竞赛入门经典(第2版) 4-10/UVa815 - Flooded!
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO
代码:(Accepted,0 ms)
//UVa815 - Flooded!
#include<iostream>
#include<algorithm>
int M, N, W, S[1000], T = 0;
int main()
{
//freopen("in.txt", "r", stdin);
while (scanf("%d%d", &M, &N) != -1 && M != 0 && N != 0) {
for (int i = 0, *p = S;i < M*N;++i)
scanf("%d", p++);
scanf("%d", &W);
std::sort(S, S + M*N);
int i, water = 0;
for (i = 1;i < M*N;++i) {
int t = water + i*(S[i] - S[i - 1]) * 100;
if (t >= W) break;
water = t;
}
float level = (float)(W - water) / (float)(i * 100) + S[i - 1];
printf("Region %d\nWater level is %.2f meters.\n", ++T, level);
printf("%.2f percent of the region is under water.\n\n", (float)(i * 100) / (float)(M*N));
}
return 0;
}
题意:简单的理解,就是给你一个铁桶,铁桶桶壁无限高,桶底是个长方形,一边长M · 10米,另一边长N · 10米。把这个桶底分为M · N个正方形区域,即每个正方形边长10米。现在每单个正方形区域高度处处都是一样的,每个不同的区域高度不一。现在一桶体积位W的水倒进去,问淹了多少区域,水高度多少。
分析:看懂这题后感觉很惊奇,原来在现实生活中都没想过的简单问题在编程里实现要考虑的东西还不少!紫书说:本题有多种解法,可以锻炼思维。那我先说说我想到的方法吧:
- 计算平均海拔后再看哪些地本应该是露在外面的,依此调整水高度。但是后来发现并不合算。
- 一桶水全浇第一块地上,往旁边扩散。但是怎么实现。。想想也不合算。
- 每10 · 10 · 1体积的水填进最低海拔的区域去,对于一样高的区域随便填哪个。直到最后可能发现水平面不平,把凸出来的水平均划分到整个没在水里的区域。但是按每一个单位的水来循环,循环量很大,最后凸出来的水也要分开计算。
现在使用的方法。(本来想到好几个方法,最后发现其实都很相近,把这些类似的方法整合、优化成了这一个)升序排序每一个区域的高度,一个区域一个区域地填水。具体如下:
[刷题]算法竞赛入门经典(第2版) 4-10/UVa815 - Flooded!的更多相关文章
- [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,10 ms) //UVa508 - Morse Mismatches #include< ...
- [刷题]算法竞赛入门经典(第2版) 5-15/UVa12333 - Revenge of Fibonacci
题意:在前100000个Fibonacci(以下简称F)数字里,能否在这100000个F里找出以某些数字作为开头的F.要求找出下标最小的.没找到输出-1. 代码:(Accepted,0.250s) / ...
- [刷题]算法竞赛入门经典(第2版) 5-13/UVa822 - Queue and A
题意:模拟客服MM,一共有N种话题,每个客服MM支持处理其中的i个(i < N),处理的话题还有优先级.为了简化流程方便出题,设每个话题都是每隔m分钟来咨询一次.现知道每个话题前来咨询的时间.间 ...
- [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...
- [刷题]算法竞赛入门经典(第2版) 6-7/UVa804 - Petri Net Simulation
题意:模拟Petri网的执行.虽然没听说过Petri网,但是题目描述的很清晰. 代码:(Accepted,0.210s) //UVa804 - Petri Net Simulation //Accep ...
- [刷题]算法竞赛入门经典(第2版) 6-6/UVa12166 - Equilibrium Mobile
题意:二叉树代表使得平衡天平,修改最少值使之平衡. 代码:(Accepted,0.030s) //UVa12166 - Equilibrium Mobile //Accepted 0.030s //# ...
- [刷题]算法竞赛入门经典(第2版) 6-1/UVa673 6-2/UVa712 6-3/UVa536
这三题比较简单,只放代码了. 题目:6-1 UVa673 - Parentheses Balance //UVa673 - Parentheses Balance //Accepted 0.000s ...
- [刷题]算法竞赛入门经典(第2版) 5-16/UVa212 - Use of Hospital Facilities
题意:模拟患者做手术. 其条件为:医院有Nop个手术室.准备手术室要Mop分钟,另有Nre个恢复用的床.准备每张床要Mre分钟,早上Ts点整医院开张,从手术室手术完毕转移到回复床要Mtr分钟.现在医院 ...
- [刷题]算法竞赛入门经典(第2版) 5-11/UVa12504 - Updating a Dictionary
题意:对比新老字典的区别:内容多了.少了还是修改了. 代码:(Accepted,0.000s) //UVa12504 - Updating a Dictionary //#define _XieNao ...
随机推荐
- Maven项目搭建(二):Maven搭建SSM框架
上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...
- javaEE与JSP基础
JSP基础 1. jsp的作用: * Servlet: > 缺点:不适合设置html响应体,需要大量的response.getWriter().print("<html ...
- MongoDB Sharding
sharding集群中的组件: 1.mongos:router,可以通过keepalived实现高可用. 2.config server:元数据服务器,这里要借助zookeeper存放配置信息. 3. ...
- 性能调优之剖析OutOfMemoryError
性能调优之剖析OutOfMemoryError poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...
- 老李案例分享:Weblogic性能优化案例
老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...
- 手机自动化测试:Appium源码分析之跟踪代码分析七
手机自动化测试:Appium源码分析之跟踪代码分析七 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自 ...
- 测试开发Python培训:模拟登录新浪微博-技术篇
测试开发Python培训:模拟登录新浪微博-技术篇 一般一个初学者项目的起点就是登陆功能的自动化,而面临的项目不同实现的技术难度是不一样的,poptest在做测试开发培训中更加关注技术难点,掌握技 ...
- Android开发艺术1之Activity的生命周期
作为<Android开发艺术探索>这本书的第一篇博客,我就多说几句.本系列博客旨在对书中相关内容进行解读,简化,提供一个入门到提高的流程.不敢说书评,也不能说教程,只希望对有些人有帮助就好 ...
- 五分钟秒懂Java日志组件
Java中有许多种日志记录方式,有些API有占位符,有些API没占位符,初学的人可能会搞不清楚这些日志组件的由来.我一开始的时候也是很懵逼的,后来一点点弄懂了于是就又了这篇文章. 在Java中进行日志 ...
- 解决eclipse中文字很小
新下载的eclipse4.2.1版本,显示中文字体很小,但是英文比较正常.网上查看要更改字体大小,但是更改后英文也变大了,不是想要的结果. window – preferences – general ...