书上具体所有题目: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的水倒进去,问淹了多少区域,水高度多少。


分析:看懂这题后感觉很惊奇,原来在现实生活中都没想过的简单问题在编程里实现要考虑的东西还不少!紫书说:本题有多种解法,可以锻炼思维。那我先说说我想到的方法吧:

  1. 计算平均海拔后再看哪些地本应该是露在外面的,依此调整水高度。但是后来发现并不合算。
  2. 一桶水全浇第一块地上,往旁边扩散。但是怎么实现。。想想也不合算。
  3. 每10 · 10 · 1体积的水填进最低海拔的区域去,对于一样高的区域随便填哪个。直到最后可能发现水平面不平,把凸出来的水平均划分到整个没在水里的区域。但是按每一个单位的水来循环,循环量很大,最后凸出来的水也要分开计算。
  4. 现在使用的方法。(本来想到好几个方法,最后发现其实都很相近,把这些类似的方法整合、优化成了这一个)升序排序每一个区域的高度,一个区域一个区域地填水。具体如下:

[刷题]算法竞赛入门经典(第2版) 4-10/UVa815 - Flooded!的更多相关文章

  1. [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,10 ms) //UVa508 - Morse Mismatches #include< ...

  2. [刷题]算法竞赛入门经典(第2版) 5-15/UVa12333 - Revenge of Fibonacci

    题意:在前100000个Fibonacci(以下简称F)数字里,能否在这100000个F里找出以某些数字作为开头的F.要求找出下标最小的.没找到输出-1. 代码:(Accepted,0.250s) / ...

  3. [刷题]算法竞赛入门经典(第2版) 5-13/UVa822 - Queue and A

    题意:模拟客服MM,一共有N种话题,每个客服MM支持处理其中的i个(i < N),处理的话题还有优先级.为了简化流程方便出题,设每个话题都是每隔m分钟来咨询一次.现知道每个话题前来咨询的时间.间 ...

  4. [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...

  5. [刷题]算法竞赛入门经典(第2版) 6-7/UVa804 - Petri Net Simulation

    题意:模拟Petri网的执行.虽然没听说过Petri网,但是题目描述的很清晰. 代码:(Accepted,0.210s) //UVa804 - Petri Net Simulation //Accep ...

  6. [刷题]算法竞赛入门经典(第2版) 6-6/UVa12166 - Equilibrium Mobile

    题意:二叉树代表使得平衡天平,修改最少值使之平衡. 代码:(Accepted,0.030s) //UVa12166 - Equilibrium Mobile //Accepted 0.030s //# ...

  7. [刷题]算法竞赛入门经典(第2版) 6-1/UVa673 6-2/UVa712 6-3/UVa536

    这三题比较简单,只放代码了. 题目:6-1 UVa673 - Parentheses Balance //UVa673 - Parentheses Balance //Accepted 0.000s ...

  8. [刷题]算法竞赛入门经典(第2版) 5-16/UVa212 - Use of Hospital Facilities

    题意:模拟患者做手术. 其条件为:医院有Nop个手术室.准备手术室要Mop分钟,另有Nre个恢复用的床.准备每张床要Mre分钟,早上Ts点整医院开张,从手术室手术完毕转移到回复床要Mtr分钟.现在医院 ...

  9. [刷题]算法竞赛入门经典(第2版) 5-11/UVa12504 - Updating a Dictionary

    题意:对比新老字典的区别:内容多了.少了还是修改了. 代码:(Accepted,0.000s) //UVa12504 - Updating a Dictionary //#define _XieNao ...

随机推荐

  1. 10大支持移动“触摸操作”的JavaScript框架

    摘要:移动开发行业的发展速度让人目不暇接,也在此大势之下,推出移动网站App成为开发者必经之路,如何让触屏设备 更易使用?如何让网站对触摸手势做出反应并使触摸更友好?所有这一切,皆因JavaScrip ...

  2. flask mega-tutorial 1.0 documentation学习记录

    本文主要是记录在[用户登录]一节中出现的问题: 报错位置是在 if g.user is not None and g.user.is_authenticated(): return redirect( ...

  3. ArcEngine保存栅格数据至rastercatalog

    将栅格数据(IRasterDataset)直接保存到数据库中很常见,但是保存到栅格目录下就比较少见,好不容易才找到,在这里记录一下. public void saveRasterDs2Catalog( ...

  4. 老李分享:持续集成学好jenkins之Git和Maven配置 2

    8.检查代码更新并编译 可以通过Poll SCM来设置定时检查编译功能 比如*/5 * * * * 就是每隔5分钟检查一次,如果git仓库中有更新,则执行build操作. 9.使用Maven私服加快下 ...

  5. 天气渐热,来片雪花降降温——Android自定义SurfaceView实现雪花效果

    实现雪花的效果其实也可以通过自定义View的方式来实现的(SurfaceView也是继承自View的),而且操作上也相对简单一些,当然也有一些不足啦... 相对于View,SurfaceView有如下 ...

  6. $_GET

    POST GET ,是提交表单的两种方式,GET传值就用$_GET获取,POST提交表单就用$_POSTpost与get的区别是一个在地址栏显示参数,另一个不显示 如果地址是这样:http://zhi ...

  7. 基于Spring Security 的JSaaS应用的权限管理

    1. 概述 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源.资源包括访问的页面,访问的数据等,这在传统的应用系统中比较常见.本文介绍的则是基于Saas系统 ...

  8. Oracle to_date函数

    TO_DATE格式(以时间:2007-11-02   13:45:25为例)Year:      yy two digits 两位年                显示值:07yyy three di ...

  9. 前端代码组织优化--小demo(进阶你的思路)

    事出必有因 最近在看老项目的代码,一个富客户端的js代码,几千行的代码,全是function(){} var...的垂直布局,真的是要感动的哭了. 一开始都是这样,想实现什么功能,不管三七二十一,fu ...

  10. Spring-data-redis操作redis知识汇总

    什么是spring-data-redis spring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作,使用java操作redis最常用 ...