本文主要是介绍nyoj12 喷水装置(二)贪心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我大哭啊!!!<img alt="大哭" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/wail.gif" /> 错了一个星期了 一直想不出来 今天突然想改变改变做法 。。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
struct M
{double left,right;
}c[10005];
bool cmp(M x,M y)
{return x.left<y.left;
}
int main()
{int t,n,i,sum;double a,b,temp,star,select;scanf("%d",&t);while(t--){memset(&c,0,sizeof(&c));scanf("%d %lf %lf",&n,&a,&b);for(i=0;i<n;i++){scanf("%lf %lf",&c[i].left,&c[i].right);c[i].right=c[i].right*c[i].right-b*b/4;if(c[i].right<0)c[i].right=0;elsec[i].right=sqrt(c[i].right);//一直认为开方一个负数为虚数。。这里也能够适用 结果华丽丽一直wrong..temp=c[i].right,c[i].right=c[i].left+c[i].right,c[i].left=c[i].left-temp;}sort(c,c+n,cmp);star=0,sum=0;for(i=0;i<n;i++){if(c[i].left<=star){select=-1;while(c[i].left<=star&&i<n){if(c[i].right>star&&c[i].right>select)select=c[i].right;i++;}if(select!=-1)sum++,star=select;elsegoto stop;i--;}if(star>=a)break;}if(star>=a)printf("%d\n",sum);else{
stop:printf("0\n");}}return 0;
}
这篇关于nyoj12 喷水装置(二)贪心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!