NOIP 2017 提高组 Day2 T1 奶酪 cheese.cpp
2017-11-19 19:43
453 查看
题目较为简单,将每个空洞看为一个点,N^2建图,BFS判断连通性即可。
//注意一个细节,accessible函数中,原本写
当然还有并查集版本,maybe更好写
//注意一个细节,accessible函数中,原本写
dx^2 + dy^2 + dz^2 <= r\*r\*4是不行的(tyvj和cogs的数据过不了),会爆longlong.
#include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> using namespace std; const char Yes[5] = "Yes", No[5] = "No"; long long T, s, t, n, h, r; long long x[1010], y[1010], z[1010]; bool vis[1010]; vector <long long> G[1010]; queue <long long> Q; void init() { s = 0, t = 1001; memset(vis, 0, sizeof vis); for(int i = 0; i <= 1001; i++) G[i].clear(); } void readInData() { scanf("%lld %lld %lld", &n, &h, &r); for(int i = 1; i <= n; i++) scanf("%lld %lld %lld", x+i, y+i, z+i); } long long sqr(long long num) { return num*num; } bool accessible(int a, int b) { return sqr(x[a]-x[b])+sqr(y[a]-y[b]) <= r*r*4 - sqr(z[a]-z[b]); } void add(int a, int b) { G[a].push_back(b); G[b].push_back(a); } void buildGraph() { for(int i = 1; i <= n; i++) { if(r >= z[i]) add(s, i); if(z[i]+r >= h) add(t, i); for(int j = i+1; j <= n; j++) if(accessible(i, j)) add(i, j); } } void bfs() { Q.push(s); vis[s] = 1; while(!Q.empty()) { int p = Q.front(); Q.pop(); for(int i = 0; i < G[p].size(); i++) if(!vis[G[p][i]]) { vis[G[p][i]] = 1; Q.push(G[p][i]); } } } void solve() { init(); readInData(); buildGraph(); bfs(); printf("%s\n", vis[t]?Yes:No); } int main() { scanf("%lld", &T); while(T--) solve(); return 0; }
当然还有并查集版本,maybe更好写
相关文章推荐
- [NOIp2017 Day2 T1] 奶酪cheese(并查集)
- NOIP 2017 提高组 Day2 T1 奶酪【并查集】
- NOIP 2017 提高组 奶酪___dfs
- 计蒜客 2017 NOIP 提高组模拟赛(二)Day2
- 2017 NOIP 提高组模拟赛(四)Day2(计蒜客)
- XJOI NOIP16提高组赛前训练18-day2 T1:友好数对(数论)
- Noip 2017 Day 2 T1 Cheese
- NOIP 2017 Day2 题1:奶酪 并查集
- Noip2013 提高组 Day2 T1 积木大赛
- NOIP 2014 提高组 Day2 T1 无线网路发射器选址
- NOIP 2017 提高组 K: 奶酪 (SPFA || 并查集)
- 【Noip2017】D2T1奶酪(cheese)
- 【暴力】洛谷 P2038 NOIP2014提高组 day2 T1 无线网络发射器选址
- 计蒜客 2017 NOIP 提高组模拟赛(三)Day2 小区划分
- NOIP2017 提高Day2-2 宝藏 解题报告
- NOIP2015 提高组 DAY2 T1 信息传递
- NOIP 2015复赛提高组Day2 T1==Codevs 4768 跳石头
- 无线网络发射选址 NOIP2014 提高组 Day2 T1
- 跳石头 NOIP2015 提高组 Day2 T1
- JZOJ 5476. 【NOIP2017提高组正式赛】奶酪