首页 > 编程知识 正文

洛谷首页,parmigiano奶酪

时间:2023-05-04 12:49:28 阅读:172860 作者:361

主题是描绘现有的大奶酪。 其高度为h,其长度和宽度被认为是无限大的。 奶酪中间有很多相同半径的球形空腔。 你可以在这块奶酪里建立空间坐标系。 在坐标系中,奶酪的下面z=0,奶酪的上面z=h。

现在奶酪下面有一只小老鼠cmdmj,我知道奶酪中所有空腔中心所在的坐标。 如果两个腔正接或交叉,则cmdmj可以从一个腔跑向另一个腔,特别是如果一个腔与下表面正接或交叉,则cmdmj可以从干酪的下表面跑向腔; 如果空腔与顶面相切或相交,cmdmj可以从空腔跑到奶酪的顶面。

我想知道奶酪下面的cmdmj是否可以利用现有的空腔跑到奶酪的上面而不破坏奶酪。

输入格式每个输入文件包含多个数据集。

的第一行包含正整数t,该正整数t表示输入文件中包含的数据集的数量。

接下来是t组的数据。 各组数据的格式如下。 第一行包含三个正整数n,h和r。 两个数之间由空格分开,分别表示干酪中空孔的数量、干酪的高度和空腔的半径。

以下n行表示每行包含三个整数x、y和z,两个数字之间用空格分隔,并且孔的球心坐标为(x、y和z )。

输出形式的t行分别与t组数据的答案相对应,在第I组数据中,如果cmdmj能够从下表面跑到上表面,则输出Yes,如果不能,则输出No (都不包含引号)。

输入3

2 4 1

0 0 1

0 0 3

2 5 1

0 0 1

0 0 4

2 5 2

0 0 2

2 0 4

输出是

我之前看过牛客队比赛,但是没写。 # include bits/stdc.husingnamespacestd; #definepiACOS(-1 ) define mod 100000007 # definellonglong # defineullunsignedlonglong # definemem ) a ) memset(a ) a,0 6q[1010]; OOLCMP(nodea,node b ) {return a.z b.z; }int vis[1010]; int n,h,r; 输入标志; doubledis(doubleX1、double y1、double z1、double x2、double z2 ) { return sqrt (x1-x2 ) * (x1-x2 ) ) wnd //计算两腔距离(voidDFS(intp ) if ) q[p].zr=h ) /到达顶面的flag=1; 标记返回(if )标志==1)返回; //到达上面中止了vis[p]=1的搜索; //标记通过空腔的for(intI=0; i n; I () if ) vis ) I )==0dis ) q[p].x,q[p].y,q[i].x,q[i].y,q[i].z )=2*r cin t; wile(t----) {cin n h r; mem(q; mem(vis; for(intI=0; i n; I ) cin q[i].x q[i].y q[i].z; sort(q,q n,cmp ); //每个腔从高到低依次为flag=0 for(intI=0; i n; I () if ) q ) I ).z=r ) ) /直接接触下面开始检索DFS ) I ); }else{break; //因为是排序的,如果那个空洞不与下面接触,即使后面有空洞也做不到(小优化) if ) flag ) break; //可以到达上面并结束搜索(if ) flag ) ) {cout 'Yes' endl; }else{cout 'No' endl; }} return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。