NYOJ 6(喷水装置)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp(const void *a,const void *b)
{
	return *(int *)b-*(int *)a;
}
int main()
{
	int T,num;int i,j,k,p;
	float s,sum,a[600];
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&num);
		for(j=0;j<num;j++)
			scanf("%f",&a[j]);
		qsort(a,num,sizeof(a[0]),cmp);
		sum=0.0;k=0;
		for(p=0;p<num;p++)
		{
			if(a[p]>1)
				s=2*sqrt(a[p]*a[p]-1);
			else
				break;
			sum+=s;
			k++;
			if(sum>=20.0)
				break;
		}
		printf("%d\n",k);
	}
	return 0;
}

  

时间: 2024-10-27 22:40:14

NYOJ 6(喷水装置)的相关文章

喷水装置(一)

喷水装置(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润. 输入 第一行m表示有m组测试数据 每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有

NYOJ 99单词拼接(有向图的欧拉(回)路)

/* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i] - Out[i])==1(入度[i] - 出度[i])的节点个数为两个 有向图的欧拉回路:所有的节点都有In[i]==Out[i] */ #include<iostream> #include<cstring> #include<cstdio> #include<

NYOJ 469 擅长排列的小明 II

点击打开链接NYOJ 469 1思路:递推2分析:为了简便起见,我们用Ai代表第i个数字 , 由于A1一直是1,所以A2只能是2或3.假设dp[n]表示1->n这个序列的方案数            1.当A2=2时,从A2到An的排列(2~n)相当于从A1到An-1的排列(1~n-1)(把每个数字都加1),一共有dp[n-1]种情况.            2.当A2=3时,A3可能为2,4,5.                1.当A3=2时,A4一定等于4,此时从A4到An的排列(4~n)

NYOJ 219 An problem about date

点击打开链接NYOJ 219 1题目:                                                                  An problem about date 描述     acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他. 输入     每行有三个整数 year,month,day,日期在1600年1月1日到9600年1月1日之间; 输出     输出对应的星期,用一个整数表示;(星期一到星期六用1

NYOJ 20

  吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路).   输入 第一行输入一个整数M表示测试数据共有M(1<=M<=5)组每组测试数据的第一行输入一个正整数N(1<=N<=100000)和一个正整数S(1<=S<=100

NYOJ 128

前缀式计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括号就是:(2+((3+4)*5)) 然后把运算符写到括号前面就是+(2 *( +(3 4) 5) ) 把括号去掉就是:+ 2 * + 3 4 5 最后这个式子就是该表达式的前缀表示. 给你一个前缀表达式,请你计算出该前缀式的值. 比如: + 2 * + 3 4 5的值就是 37   输入 有多组测试

NYOJ&amp;#160;16&amp;#160;矩形嵌套

题意:给出若干矩形的长和宽,小的矩形可以嵌套在大的矩形中,求矩形最多的嵌套中矩形的个数做法:嵌套关系是二元关系,转化为DAG上的最长路径问题,使用邻接表+状态转移方程即可,经典递归思想. 代码: //nyoj 16 #include #include #include using namespace std; const int maxn = 150; int graph[maxn][maxn]; int d[maxn], n, a[maxn], b[maxn]; int max(int a,

nyoj 925 国王的烦恼(最小生成树)

/* 题意:N个城市中每两个城市有多条路径连接,可是因为路径存在的天数是有限的!以为某条路经不存在了 导致N个城市不能连通了,那么村名们就会抗议!问一共会有多少次抗议! 思路:最小生成树....我们用最大边来建立树!只要有最大边将节点连接并保证连通!那么边权小的值 就可以忽略了!最后将生成树中由(最大边组成的)去重(相同的值只有一次抗议)!这时剩下边的数值就是 答案了! */ #include<iostream> #include<cstring> #include<cstd

NYOJ 1023 还是回文(DP,花最少费用形成回文串)

/* 题意:给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费. 那么,将字符串变成回文串的最小花费是多少呢? 思路:如果一个字符串增加一个字符 x可以形成一个回文串,那么从这个字符串中删除这个字符 x 同样也能形成回文串! 所以我们只记录删除,和增加这个字符 x 的最小的费用就好了!->转变成添加多少个字符形成回文串费用最少! str[i]!=str[k] dp[i][j]=min(dp[i][j-1]+cost[str[k]-'a'], dp[i+1][j-1]+cost