UVA 815 Flooded!
题意:来自:https://blog.csdn.net/lecholin/article/details/70186673

思路:
①数组存每个网格的高度,然后排序,做题时想象为上面的柱状图。
②注意对淹没的处理。
③注意每个输出都有空行。
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w",stdout)
int main()
{
//FIN;
//FOUT;
int m, n;
int data[],kase=;
double level, percentage, high = ,sum;
while (scanf("%d%d",&m,&n)==&&n!=&&m!=)
{
kase++;
for (int i = ; i < m*n; i++)
{
scanf("%d", &data[i]);
}
high = ;
scanf("%lf", &sum);
sum /= ;//正方形为10*10,化简一下sum
//排序
for (int i = ; i < m*n; i++)
{
for (int j = i + ; j < m*n; j++)
{
if (data[i] > data[j])
{
int ex = data[i];
data[i] = data[j];
data[j] = ex;
}
}
}
//data[m*n] = 100000;//最大的边界
//输出
/*printf("排序后:\n");
for (int i = 0; i < m*n; i++)
{
printf("%-4d", data[i]);
if ((i + 1) % m == 0)
printf("\n");
}*/
for (int i = ; i < n*m; i++)
{
if (sum != - && i == m*n - )//找到最后一个说明淹没了
{
high += (sum*1.0) / (i + );
high += data[];
int cntDown = (i + );
percentage = (cntDown*1.0) / (m*n) * ;
sum = -;
break;
}
if ((data[i + ] - data[i])*(i+)< sum)//小就继续往上面走
{
sum -= (data[i + ] - data[i])*(i+);
high += data[i+]-data[i];
}
else
{
high += (sum*1.0) / (i+);
high += data[];
int cntDown =(i+);
percentage = (cntDown*1.0) / (m*n)*;
sum = -;
break;
} }
printf("Region %d\n", kase);
printf("Water level is %.2f meters.\n",high);
printf("%.2f percent of the region is under water.\n\n",percentage);
}
return ;
}
UVA 815 Flooded!的更多相关文章
- 【每日一题】Flooded! UVA - 815 模拟阅读格式题
https://cn.vjudge.net/problem/UVA-815 题意:给你一个矩阵,每个格子的数代表一个海拔并且每个格子的面积100平方米.给你整个区域的降水量(立方米),问降水量(米). ...
- 【习题 4-9 UVA - 815】Flooded!
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 题目很迷啊. 不会出现盆地? 可以理解为一条线. 从左往右高度上升的一座座山. 然后V升的水从最左边的山倒进去. 然后问你最后海拔多 ...
- Flooded! UVA - 815 (sort排序)
错了好多遍,不知道为啥出错,如果有大神发现,请求指点!!! 附错误代码(错的不知道怎么回事): #include<iostream> #include<cstdio> #inc ...
- UVa 815 洪水!
https://vjudge.net/problem/UVA-815 题意:一个n*m的方格区域,共有n*m个方格,每个方格是边长为10米的正方形,整个区域的外围是无限高的高墙,给出这n*m个方格的初 ...
- uva 815之理解诡异的海平线题目之不容易
首先题意:(这个真的令人无奈,题目都看不太明白) 网上百度了一下,就是以下意思: 给你n*m个格子,每个格子的面积是10*10米,整个区域外看作无限高的墙壁.输入每个格子的海拔高度(可能为负数),以及 ...
- uvA Flooded!
Description To enable homebuyers to estimate the cost of flood insurance, a real-estate firm provide ...
- 紫书 习题 8-15 UVa 1617 (贪心)
先排序, 然后每个线段先放右端点, 然后往下放, 如果不能放就整体往左移动, 当不能往左移动的时候就ans++ 开始下一个整块.判断能不能向左移动要用一个变量储存每个已经放了的区间中线段与左端点距离的 ...
- 紫书 例题8-15 UVa 12174 (滑动窗口)
这道题就是给你一n长序列, 然后把这个序列按顺序分成很多段, 每段长s(最前面可以小于s, 只有第一段的后半段, 最后面也同样, 只有最后一段的前半段), 然后要求是每一段里面没有重复的数, 问你有几 ...
- 【习题 8-15 UVA - 1617】Laptop
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 贪心. 把所有的区间按照右端点为第一关键字,左端点为第二关键字升序排. 然后令now = a[i].second. (now即当前的 ...
随机推荐
- kali 局域网嗅探
1.局域网图片嗅探 工具 arpspoof arpspoof -i eth0 -t 192.1681.10(网卡 目标地址) 192.168.1.1 局域网网关,如果在Windows中可以使用局域网 ...
- 高斯消元处理无解|多解情况 poj1830
高斯消元结束后,若存在系数为0,常数不为0的行,则方程无解 若系数不为0的行有k个,则说明主元有k个,自由元有n-k个,方程多解 /* 给定n个开关的初始状态si,要求将其变成目标状态di 规定: 每 ...
- vue 中动态绑定class 和 style的方法
先列举一些例子 :class="['content',{'radioModel':checkType}]" :class="['siteAppListDirNode',{ ...
- SVN项目迁移到Git上(并带有完整的提交记录)
公司需求:早期的一些项目使用的是SVN,现在想要更换为Git,需要代码迁移并且能在Git上看到之前在SVN中的项目的提交记录,公司没有使用gitlab,代码都push在公司的服务器上,用的是Torto ...
- 原创 《算法》java第四版,标准输入
<算法>学习过程中,在eclipse里调试时,对于官方提供的源码中标准输入的操作,没有搞懂 自己改了一下,直接读取本地测试数据测试数据可在http://algs4.cs.princet ...
- 论文阅读笔记二十九:SSD: Single Shot MultiBox Detector(ECCV2016)
论文源址:https://arxiv.org/abs/1512.02325 tensorflow代码:https://github.com/balancap/SSD-Tensorflow 摘要 SSD ...
- 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)
论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...
- linux:安装并使用mongo
1.下载mongo: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 2.解压: tar -zxvf ...
- 定时获取MySQL库的大小
定时获取MySQL库的大小 获取数据库单个库的大小命令 [root@admin ~]# cat db_size.txt mysql -h 192.8.1.1 -uUSER -pPASSWORD -e' ...
- Git基础(四) 查看已暂存和未暂存的修改
比较工作目录中当前文件和暂存区域快照之间的差异(也就是修改之后还没有暂存起来的变化内容) git diff 比较已暂存的将要添加到下次提交里的内容 git diff --cached Git 1.6. ...