洛谷 P3958乳酪
1.分析
由於是學習深搜,直接就用深搜做了,感覺挺簡單,有點判斷圖的連通性的問道。
2.程式碼
1.前兩次提交
第一次提交,就過了兩個點,莫名奇妙的,然後見了剪了一下枝,突然就能過8個點了。
2.AC程式碼
後來做不出來,看了下題解,發現是因為沒有注意到原題中資料的範圍導致錯誤,把資料型別都換成長整型之後,順利AC
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
#include <stdio.h>
using namespace std;
typedef long long ll;
ll T,N,H,R;
struct circle
{
ll x,y,z;
ll r;
bool isConnected(circle b)
{
return (x-b.x)*(x-b.x)+(y-b.y)*(y-b.y)+(z-b.z)*(z-b.z)<=(r+b.r)*(r+b.r);
}
bool isBottom()
{
return z-r<=0;
}
bool isTop()
{
return z+r>=H;
}
};
int flag;
circle a[1001];
int isVisited[1001];
void dfs(circle c)
{
if(c.isTop())
{
cout<<"Yes\n";
flag=1;
return;
}
for (int i = 1; i <= N; i++)
{
if(!isVisited[i]&&c.isConnected(a[i])&&!flag )
{
isVisited[i]=1;
dfs(a[i]);
}
}
}
void solve()
{
int i;
for ( i = 1; i <= N; i++)
{
if(!isVisited[i]&&a[i].isBottom()&&!flag)
{
isVisited[i]=1;
dfs(a[i]);
}
}
}
int main()
{
cin>>T;
while (T--)
{
cin>>N>>H>>R;
for (int i = 1; i <= N; i++)
{
cin>>a[i].x>>a[i].y>>a[i].z;
a[i].r=R;
}
flag=0;
memset(isVisited,0,sizeof(isVisited));
solve();
if(!flag)
{
cout<<"No\n";
}
}
}
相關文章
- 洛谷題單指南-搜尋-P1433 吃乳酪
- 洛谷
- 洛谷團隊
- 洛谷死亡時間
- 洛谷P1786
- 洛谷 - P5369
- 洛谷P6786
- 洛谷P10725
- 洛谷P10693
- 洛谷 - P6190
- 洛谷——玩具謎題
- 英雄聯盟(洛谷)
- 洛谷網校學習
- 昨天放洛谷的圖
- 將洛谷私信接入WindowsWindows
- 洛谷 P10254 口吃
- 洛谷傻逼之處
- 洛谷八皇后問題
- 【洛谷】【分支】月份天數
- 洛谷 P11323 Happy CardAPP
- 洛谷P1784.數獨
- 洛谷題單指南-字串-Test字串
- 洛谷P3853總結
- 洛谷-P9574 題解
- 洛谷-P9830 題解
- 洛谷p1048 採藥
- 洛谷-P1250 種樹
- 洛谷 P1161 開燈
- 洛谷 P1219 八皇后
- 洛谷P1087 FBI樹
- 洛谷題型摘選(三)
- 【洛谷】【分支】不高興的津津
- 簡單的模擬(洛谷)
- 【題解】洛谷P1613: 跑路
- 洛谷P5057簡單題
- 洛谷P1638逛畫展
- [題解][洛谷P3594] WIL
- [題解][洛谷P3584] LAS