说实话,刚看到这题有点蒙,没有什么思路,第一个蹦出来的东西居然是定积分那类的东西。

这一题我历经千辛万苦,可是最终还是WA,最开始完成提交之后TLE错误,重新修改了初始化就好了。之后提交是WA错误,发现在输入1*1的情况下不能正常运行。几经调试,感觉应该没有什么问题了。提交还是WA,然后在DEBUG里找别人提供的数据,一项项核对。发现一条不一样的:

输入:

2 2

66 75

-21 -27

10481

输出的高度是28.41,可是我输出的数据为28.40,进行单步调试,发现我的算法显示的数据是28.4049999999,别人AC的程序算出来是28.4050000004,最后这0.01的误差害死人,看来是算法本身就有问题。后来又尝试吧上下界误差改的比较小(1e-16)就显示TLE错误,吧误差稍微改大一些,就是WA错误。又尝试修改输出的是误差的上界或下界,这个样例过了,还是WA。

**************这是WA代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxd  35*35
using namespace std;
int a[maxd];int qiugao(int i1,int a,int b)
{int c = (b-a)*100*i1;return c;
}float qiugao2(int i,double r1,double a1,double a2, int rain)
{double c1 = (double)r1,c2 = (double)r1 + i*100.0*(a2-a1);double c3 = (double)(c1+c2)/2.0;double k;if(fabs(c3-rain)<1e-11){return a2;}if(c3>rain)k = qiugao2(i,c1*1.0,a1*1.0,(a1+a2)*1.0/2.0,rain);elsek = qiugao2(i,c3*1.0,(a1+a2)*1.0/2.0,a2*1.0,rain);return k;
}int main()
{int m,n,rain,hight,kase=0;while(scanf("%d%d",&n,&m) == 2 && n){hight =0;double hight1 =0;memset(a,0,sizeof(a));for(int i =0;i<m*n;i++)scanf("%d",&a[i]);scanf("%d",&rain);sort(a,a+m*n);int i =0;double per;if(m*n == 1)hight = rain/100.0;elsefor( int s = 1;s<m*n;s++){hight += qiugao(s,a[s-1],a[s]);}if(rain>hight){double k = (rain-hight)/(100.0*m*n);int t = a[m*n-1];printf("Region %d\nWater level is %.2lf meters.\n",++kase,t+k);printf("100.00 percent of the region is under water.\n\n");continue;}hight = 0.0;for( i = 1;i<=m*n;i++){hight += qiugao(i,a[i-1],a[i]);if(hight>=rain){int r1 = hight-(a[i]-a[i-1])*100*i;hight1 = qiugao2(i,r1,a[i-1],a[i],rain);per = i/(n*m*1.0);break; }}printf("Region %d\nWater level is %.2lf meters.\n",++kase,hight1);printf("%.2lf percent of the region is under water.\n\n",per*100);}return 0;
}

下面是别人AC的代码,自己也重新写过,感觉这种思考方式真是妙,自己怎么就没有想到呢,思路清晰又简单》就说简简单单的一步:把输入的总雨量/100,这样就直接把三维问题转为二维问题了。

#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
#define INF 0x7fffffffint h[35 * 35], n, m;
double v, H, k;int main()
{int kase = 0;while(scanf("%d%d", &n, &m), n){n *= m;for(int i = 0; i < n; i++)scanf("%d", h + i);h[n] = INF, n++;//加一个无穷大的数,是为了在1*1的情况下也可计算 sort(h, h + n);scanf("%lf", &v);v /= 100.0;//这个相当于雨量全部在一个底为10*10的长矩形体中 for(int i = 1; i <= n; i++){//这一段画图比较好理解 v += h[i - 1];H = v / i;if(H < h[i]){k = i;break;}}printf("Region %d\n", ++kase);printf("Water level is %lf meters.\n", H);printf("%.2lf percent of the region is under water.\n\n", 100.0 * k / (n - 1));}return 0;
}

算法竞赛入门经典 UVa815 Flooded!相关推荐

  1. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  2. [刷题]算法竞赛入门经典 3-10/UVa1587 3-11/UVa1588

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-10/UVa1587:Box 代码: //UVa1587 - Box #include&l ...

  3. 《算法竞赛入门经典训练指南》pdf

    下载地址:网盘下载 基本介绍 编辑 内容简介 <算法竞赛入门经典:训练指南>题目多选自近年来ACM/ICPC区域赛和总决赛真题,内容全面,信息量大,覆盖了常见算法竞赛中的大多数细分知识点. ...

  4. 算法竞赛入门经典训练指南

    最近在看算法竞赛入门经典训练指南这本书,书中不错的算法我将在博客中发布,和大家共同学习. 题目: 在你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头).村里有m个骑士可以雇佣,一个 ...

  5. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  6. 算法竞赛入门经典 习题3-2 分子量 Molar Mass

    给出一种物质的分子式(不带括号),求其分子量.本题分子式中只包含四种原子,分别为C.H.O.N,原子量分别为12.01,1.008,16.00,14.01.例如,C6H5OH的分子量为94.108g/ ...

  7. 刘汝佳《算法竞赛入门经典》---总结

    刘汝佳:<算法竞赛入门经典> 三步: 基本的数据结构+算法知识: 数论等数学基本知识: 锻炼联想建模能力.知识与实际相结合,解决实际问题! 第一章:程序设计入门 1.a/b 当a.b为整数 ...

  8. 算法竞赛入门经典(刘汝佳)——代码笔记

    Reference: <算法竞赛入门经典>(刘汝佳)第一版.第二版 ------------------------------------------------------------ ...

  9. 算法竞赛入门经典(第二版)第三章习题

    声明:作者水平有限,只是会基础C语言的小菜,C++还未入门.作者仅根据算法竞赛入门经典(第二版)书上第三章习题所述题意而编写,并未严格按照原题的输入输出编写,代码仅经过个人测试(OJ网站太慢了).代码 ...

最新文章

  1. 【原创】A进程窗口嵌入到B进程窗口中显示
  2. picsart旧版本_PicsArt历史版下载
  3. 如何用 CSS 和 D3 创作一个抽象的黑白交叠动画
  4. conflicting types for xx错误
  5. 【面向对象】类的特殊成员方法
  6. oracle数据库用脚本运行SQL语句
  7. 字符设备驱动程序——点亮、熄灭LED操作
  8. JAVA 不足N位后面补XX符号
  9. 浙江富商的24条至理经验
  10. phpstudy打开浏览php页面发现显示源码解决方法
  11. elementUI表格合并单元格
  12. python基础_026__标准库和第三方库
  13. php mysql开发实战 光盘_随书光盘-PHP开发实战1200例 | 软件库
  14. 陈潇冰 react权威指南_React中条带化付款的分步指南
  15. matlab的app tab,MATLAB 之 App designer 小白学习(四)
  16. CGAL 凹包(alpha-Shape)
  17. [美文赏析]《非走不可的弯路》--张爱玲
  18. Linux命令五---搜索查找命令---find-grep-which-whereis等---网络通信命令--ifconfig-netstat等
  19. JAVA-0基础学习笔记-day01
  20. 第六周(作业1,Mysql下载安装配置)

热门文章

  1. TC27x寄存器学习
  2. SANGFOR深信服远程办公客户端EasyConnect在Windows11使用兼容性问题解决案例
  3. 2023计算机考研408参考答案
  4. 怎样解决ip访问受限问题
  5. git提交失败——running pre-commit hook: lint-staged
  6. java testsuite_JUnit —— TestSuite 的使用
  7. android自定义水管流动,Android水管工游戏的简单脚本
  8. 单词快速记忆day 1
  9. 轻松入门Android直播相关技术 从0搭建直播系统
  10. Fil真的要归零了吗?