灌水VS抽水

灌水VS抽水

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 25   Accepted Submission(s) : 4

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

There is something crazy! There is a pool and many of pumps to fill up the empty pool. We know that the capacity of each pump. And at last, we want you to tell us whether we can fill up the empty pool and the time we have to. And if
we can’t fill up the pool with all of the pumps, the least number of pumps we have to close.

Input

There are multiply test cases in this problem. In each test case, first line is a integer of n(1<=n<=15), which is the number of pumps. At the second line there are n integers ai(1<=|ai|<=10),which is the time(in hours) to fill up
the empty pool(ai>0) or to empty the pool(ai<0).

All the cases will be end with n=0.

Output

If we can fill up the empty pool with all of the pump, print the hours (in integer) we have to use, otherwise print one line of “NO” and the least number we have to close up. At last, if we can’t fill up the pool with some of the
pumps closed, print one line of “Impossible”.

Sample Input

2
2 3
2
-2 3
2
-2 -2
0

Sample Output

2
NO 1
Impossible

Author

HYNU

//题意是说这有个池塘,然后有许多泵可以抽水也可以放水问是否可以填满池塘。

分三种情况,可以填满需要多长时间,不能填满最少需要关掉几个泵,不能填满。

思路:先把每个泵的速度求出来然后按从小到大排序,置标志如果速度都是小于0 直接输出imposs,如果速度和大于0 则计算填满需要多长时间,否则则计算需要关闭几个duo

#include<cstdio>
#include<algorithm>
using namespace std;
#define INF 1.e-8 //控制精度
int main()
{
	//freopen("a.txt","r",stdin);
	//freopen("b.txt","w",stdout);
    int n,a,i,flag;
    double s,f[205];
	int ss;
    while(scanf("%d",&n)!=EOF&&n)
    {
        s=0.0;
        flag=0;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a);
            f[i]=1.0/a;  //速度
            s+=f[i]; //速度和
            if(f[i]>0) flag=1; //标志位
        }
        sort(f+1,f+n+1);//从小到大排序
		if(flag==0) printf("Impossible\n");
		else
		{
			if(s>INF) //是正数
			{
				s=1.0/s;
				ss=(int)s;
				if(s-ss>INF)
					ss++;   //向上取整
				printf("%d\n",ss);
			}
			else
			{
				for(i=1;i<=n;i++)
				{
					s-=f[i];
					if(s>INF) break;
				}
				printf("NO %d\n",i); //需要关掉几个 duo
			}
		}
    }
    return 0;
}

灌水VS抽水,布布扣,bubuko.com

时间: 2024-07-30 08:23:48

灌水VS抽水的相关文章

bzoj1601【Usaco2008 Oct】灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1589  Solved: 1035 [Submit][Status][Discuss] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两

BZOJ1601: [Usaco2008 Oct]灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1280  Solved: 839[Submit][Status] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij(1

洛谷P2661 信息传递 类似tarjan 强连通 灌水

洛谷P2661 信息传递类似tarjan 强连通 灌水 题意 求一个特殊的图的最小环 这个图 有一个性质 每个点只有一条出边 这样满足一个性质,一张图只有 一个环,以及别的连向他们的边都是一些连向 或者 间接连向这个环的树枝 这些树枝一定不会连成环,因为 每个点只有一条出边,而不可能有两条,所以只要把这些树枝边都删掉,然后再类似tarjan一样跑一遍灌水就行了 先说一下思路,这整道题就是给你几个带枝叶的环要你求最短环而已,于是在输入的时候可以把图中每个点的入度记录下来,然后再删除那些入度为0的点

[BZOJ1601] [Usaco2008 Oct] 灌水 (kruskal)

Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij(1<=pij<=100000,pij=pji,pii=0). 计算Farmer John所需的最少代价. Input *第一行:一个数n *第二行到第n+1行:第i+1行含有一个数wi *第n+2行到

同盾反欺诈云防垃圾灌水帖体验分享

年初将留言本改成了松松论坛,解决了留言本很多问题,也有了互动性,增强了粘性. 不过随后遇到了很多问题,尤其是垃圾贴的问题困扰了我们很久,有一段时间有人用论坛群发器发布了很多垃圾贴,原本只有几千条的帖子,一晚上就被刷了50多万条垃圾帖. 后来做过很多防范措施,例如装了防灌水插件.设置关键词黑名单,设用户黑名单等等,但都收效甚微.现在不得已关闭用户注册,全部改成QQ开放平台的QQ号登陆. 在这个过程中,也有不少热心朋友推荐了一些防灌水工具,测试过后发现网名为西北飞哥的朋友介绍的效果最好,也是松松论坛

1601: [Usaco2008 Oct]灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1342  Solved: 881 [Submit][Status] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij

Grass Gis 峡谷堰塞湖预测模型r.lake剖析--湖心灌水洪泛算法

Grass Gis 是20世纪80年代初,美国军方建筑工程研究实验室(USA/CERL)的Bill Gorgan负责遴选一款具有土地管理.环境规划.环境评估的GIS软件.它有400多个地质分析模块,今天我们剖析一下r.lake算法. 1. 堰塞湖预测建模r.lake能做什么 如下图1左为一张地形栅格图,也是最常见的2D平面图.从图中可以看到许多的凹地盆地,当有山洪暴雨时就会形成堰塞湖. Grass Gis 的r.lake就是能够预测堰塞湖形状大小的模块.例如,在图1左所示的红色圆圈位置开始注水当

【最小生成树】Bzoj1601[Usaco2008 Oct]灌水

Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij(1<=pij<=100000,pij=pji,pii=0). 计算Farmer John所需的最少代价. Sulotion 直接搞好像不太好做?于是新设一个点,作为总水源,和i点边权为wi,然后直接求

论坛自动灌水脚本(vbs)

估计都快有两年历史了~也无需重构,因为差不多已经是最简版本.vbs纯粹是为了好玩,几次看到vbs身处语言排行榜的最尾端,心疼啊. 1 on error resume Next '遇到错误继续执行 2 dim url, val 3 url = InputBox("输入需要灌水的网址:") 4 val = InputBox("输入需要灌水的内容:") 5 set ie = wscript.createObject("internetExplorer.appli