【习题 4-9 UVA - 815】Flooded!

【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

题目很迷啊。
不会出现盆地?
可以理解为一条线。
从左往右高度上升的一座座山。
然后V升的水从最左边的山倒进去。
然后问你最后海拔多高。。
(为什么是这样啊???
鬼知道。。。
所以每次只要看看前i个山同时升高a[i+1]-a[i]是不是小于等于rest就好。
小于等于的话。就能持续升高。

【代码】

#include <bits/stdc++.h>
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
using namespace std;

const int N = 1000;

int n,m;
int a[N+10];
double rest;

int main(){
    //freopen("/home/ccy/rush.txt","r",stdin);
    //freopen("/home/ccy/rush_out.txt","w",stdout);
    ios::sync_with_stdio(0),cin.tie(0);
    int kase = 0;
    while (cin >> n >> m){
        if (n==0 && m==0) break;
        cout<<"Region "<<++kase<<endl;
        int cnt = 0;
        rep1(i,1,n)
            rep1(j,1,m)
                cin >> a[++cnt];
        cin >> rest;
        rest/=100;
        sort(a+1,a+1+cnt);
        double ans1,ans2;
        rep1(i,1,cnt){
            if (i==cnt){
                ans1 = a[i]+rest/(1.0*i);
                ans2 = 1;
            }else{
                if (1LL*(a[i+1]-a[i])*i<=rest){
                    rest-=1LL*(a[i+1]-a[i])*i;
                }else{
                    ans1 = a[i]+rest/(1.0*i);
                    ans2 = 1.0*i/cnt;
                    break;
                }
            }
        }
        cout<<"Water level is "<<fixed<<setprecision(2)<<ans1<<" meters."<<endl;
        cout<<fixed<<setprecision(2)<<ans2*100.0<<" percent of the region is under water."<<endl;
        cout<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/AWCXV/p/9894326.html

时间: 2024-10-03 09:20:21

【习题 4-9 UVA - 815】Flooded!的相关文章

UVA - 815 Flooded!(模拟)

Flooded! Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description To enable homebuyers to estimate the cost of flood insurance, a real-estate firm provides clients with the elevation of each 10-meter by 10-m

uva 815 Flooded!

题意:n*m的网格,每个网格10m的正方形,网格四周是无限大的墙壁,输入每个格子的高度和洪水的体积,求水位的高度和淹没的面积. 分析:水肯定是先淹没高度低的,后淹没高度高的,所以对所有海拔排序,从低向高遍历,直到遇到不能淹没的网格停止. 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 const int mmax=35*35; 6 int dp[

uva 815 - Flooded!(点名要做的思路题~我觉得方法挺好)

#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; double a[100000]; double vol[100000]; int m,n; double v1,v2; bool cmp(double aa,double bb) { if(aa>bb) return true; } int main() {

【UVA】815 - Flooded!

水题,排序之后依次累加,模拟. 14069284 815 Flooded! Accepted C++ 0.032 2014-08-20 10:42:17 AC代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<stack> #include<queue> #includ

习题3-5 Puzzle UVA - 227

这题太能卡人了,都是输入输出卡的. 1.输入的5X5矩阵中,有时一行最后有多个空格和回车 2.输出格式中,每两个输出结果之间间隔一个空行,但是最后一个结果之后没有空行. 3.有时到第四位元素,直接不按空格,直接换行了. 其实思路很简单,先判断是否运动越界,如果是的话就输出无答案,如果没越界,就依次将空格和目标位置元素相互交换. 下面是AC代码,就是把这些小BUG修修补补改出来的,抛砖引玉吧. #include <bits/stdc++.h> #define N 7 #define M_N 10

算法竞赛入门经典第二版第三章习题

写这个的原因是看到一位大神的习题答案总结,于是自己心血来潮也想写一个这个,目的主要是督促自己刷题吧,毕竟自己太弱了. 习题3-1 得分 UVa 1585 大致就是设置一个变量记录到当前为止的连续的O的数量,碰到X就变0,水题. #include<stdio.h> #include<ctype.h> #include<string.h> char s[90]; int main(void) { int length,n,sum,num; scanf("%d&qu

【转】[专题学习][计算几何]

原文地址:http://www.cnblogs.com/ch3656468/archive/2011/03/02/1969303.html 基本的叉积.点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了. 一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文,模板代码参考自我校大牛韬哥: http://www.o

组合计数&#183;棋盘统计

相关习题: 1. Uva 10237 Bishops 题意:两个象不攻击,当且仅当它们不处在同一条斜线上.输入整数$n(n \leq 30)$,统计在一个$n \times n$的棋盘上放$k$个互不攻击的象有多少种方法.如$N=8, k = 6$时有$5599888$种.

UVa第五章STL应用 习题((解题报告))详细!

例题5--9 数据库 Database UVa 1592 <strong><span style="font-size:18px;"><span style="font-size:18px;"><strong><span style="font-size:18px;">#include<iostream> #include<string> #include<