Fire Air(华科校赛 网络赛)
题目
原题链接:https://www.nowcoder.com/acm/contest/106/L
在100000 * 10000的空地上,有n个时间点,每个时间点会在(xi,yi)上种一棵树。
定义绿色:被树包围的空地的个数。
问每个时间点之后绿色为多少。如图:
思路
逆向求解,从(0,0)位置将圈外的全标记(给空地加一圈),在分别考虑当前的树,是在圈内还是圈的外围。
由于vis是全局数组,之后的bfs都非常快,每个点只遍历过一次。
代码实现
- #include<stdio.h>
- #include<queue>
- #include<iostream>
- using namespace std;
- typedef pair<int, int> P;
- const int maxn = + ; //点的最大个数
- const int SIZE = + ; //地图大小
- const int offset = ; //偏置
- const int dx[] = { -,,, };
- const int dy[] = { ,,,- };
- int n,xi[maxn],yi[maxn],ans[maxn];
- bool vis[SIZE][SIZE], maze[SIZE][SIZE];
- int bfs(int x, int y)
- {
- int ret = ;
- queue<P>q;
- vis[x][y] = true;
- q.push(P(x, y));
- while (!q.empty())
- {
- P p = q.front(); q.pop();
- ret++;
- for (int i = ; i < ; i++)
- {
- int nx = p.first + dx[i], ny = p.second + dy[i];
- if (nx >= && nx < SIZE && ny >= && ny < SIZE && (!vis[nx][ny]))
- {
- vis[nx][ny] = true;
- q.push(P(nx, ny));
- }
- }
- }
- return ret;
- }
- int main()
- {
- scanf("%d", &n);
- for(int i = ;i <= n;i++)
- {
- scanf("%d%d", &xi[i], &yi[i]);
- maze[xi[i] + offset][yi[i] + offset] = ;
- vis[xi[i] + offset][yi[i] + offset] = ;
- }
- bfs(, );
- int res = ;
- for (int i = ; i < SIZE; i++)
- for (int j = ; j < SIZE; j++)
- if (vis[i][j] == false) res++;
- ans[n] = res;
- for (int i = n; i >= ; i--) //1~3棵以内不可能围成空地
- {
- int u = xi[i] + offset;
- int v = yi[i] + offset;
- maze[u][v] = ;
- int cnt = ;
- for (int j = ; j < ; j++)
- {
- int nu = u + dx[j], nv = v + dy[j];
- if (maze[nu][nv] == && vis[nu][nv] == ) cnt++;
- }
- if (cnt == ) //cnt == 0,表示该点在内部
- {
- vis[u][v] = ;
- res++;
- }
- else res -= (bfs(u, v) - );
- ans[i - ] = res;
- }
- for (int i = ; i <= n; i++)
- printf("%d\n", ans[i]);
- return ;
- }
参考链接:https://www.nowcoder.com/acm/contest/view-submission?submissionId=26038731
Fire Air(华科校赛 网络赛)的更多相关文章
- 36th成都区域赛网络赛 hdoj4039 The Social Network(建图+字符串处理)
这题是某年成都区域赛网络赛的一题. 这题思路非常easy,可是从时间上考虑,不妨不要用矩阵存储,我用的链式前向星. 採用线上查询.利用map对字符串编号,由于非常方便.要推荐的朋友,事实上就是朋友的朋 ...
- 2019杭电多校&CCPC网络赛&大一总结
多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...
- ACM总结——2017区域赛网络赛总结
从省赛回来至今4周,每周周末都在打网络赛,每次都是划水,总结下自己弱弱的ACM吧!划水水~~ 首先是新疆赛区,基本上都是图论相关的东西,全靠队友,自己翻水水,实力躺了5道. 然后是沈阳赛区,终于有点贡 ...
- 2019 西电ACM校赛网络赛 题解
今年题目难度有较大提升,总体与往年类似,数学题居多.以下为我通过的部分题解. 赛题链接:http://acm.xidian.edu.cn/contest.php?cid=1053 A - 上帝视角 我 ...
- 2018ICPC徐州区域赛网络赛G(VECTOR+SET,模拟)
#include<bits/stdc++.h>using namespace std;int x,y;vector<int>v1,v2;long long solve(vect ...
- 2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)
#include<bits/stdc++.h>using namespace std;int n,m,k,l;int x[1007],y[1007],z[1007];int dp[1007 ...
- (未完结)“文远知行杯”GDET第十四届竞赛(网络赛共10题,仅整理出6题)
刚开学没多久就打了一个网络赛,通过这次网络赛我是发现我是真的菜... 放假前校赛的排名让我有些自满,寒假丝毫没有接触ACM,一直沉迷于Steam,这个真的值得好好反省. 虽然现在大一课有点多,在学校也 ...
- 2012年长春网络赛(hdu命题)
为迎接9月14号hdu命题的长春网络赛 ACM弱校的弱菜,苦逼的在机房(感谢有你)呻吟几声: 1.对于本次网络赛,本校一共6名正式队员,训练靠的是完全的自主学习意识 2.对于网络赛的群殴模式,想竞争现 ...
- HDU 5875 Function -2016 ICPC 大连赛区网络赛
题目链接 网络赛的水实在太深,这场居然没出线zzz,差了一点点,看到这道题的的时候就剩半个小时了.上面是官方的题意题解,打完了才知道暴力就可以过,暴力我们当时是想出来了的,如果稍稍再优化一下估计就过了 ...
随机推荐
- Leetcode字符串专题
Leetcode38. Count and Say 分析:根据题意,数列的下一项就是统计上一项中每个数字出现的次数,理解清楚题意就很简单了 class Solution { public: strin ...
- 文件的创建,读取,写入,修改,删除---python入门
转自:http://blog.163.com/jackylau_v/blog/static/175754040201181505158356/ 一.用Python创建一个新文件,内容是从0到9的整数, ...
- B. Arpa’s obvious problem and Mehrdad’s terrible solution
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时14&&15
课时14 卷积神经网络详解(上) CNN处理的是一些数据块,在这之间有很多层,一系列的层将输入数据变换为输出数据,所以完成操作的中间量不仅是NN时候讲的那些向量,而是立体结构,有宽,高和深度,在整个计 ...
- Android EditText实现小数点后几位的终级方案
有时候,我们用EditText的时候,会要求输入小数点后几位,遇到过几次这样的需求,这次把它给记下来,方便以后使用 /** * 小数位数 */ public class PointLengthFilt ...
- (水题)洛谷 - P1618 - 三连击(升级版)
https://www.luogu.org/problemnew/show/P1618 枚举所有的A,最多 $A_9^3$ ,然后生成B和C(先判断是不是能够生成),判断有没有重复数字(比之前那个优雅 ...
- C++笔试题(十)
这些题目相比其他公司的试题,较为基础,全部为C语言,没有涉及C++,但如果不细心,是很难得到较高分数的.另外大家转贴不要去掉我的个人信息啊.互相宣传下网站嘛.1. 找错 void test1() { ...
- Codeforces711C 【DP】
题意: 有n个点,m种颜色,你要给n个点上没有颜色的点染色.每个点i对应染的颜色j有一个颜料消耗,p[i][j]是点i染成j颜色的花费,你必须保证有k段颜色的点,输出最少花费多少颜料. 还有一个就是本 ...
- CodeForces 622C
题意: 给你一个数组,m个询问,l,r,x;让你输出在区间[ l , r ]上哪个位置不等于x. 思路: 额..我这个思路还是剽来的...不过真心赞啊. 开个p数组,直接记录数组每个元素的位置,并且实 ...
- hdoj3790 【最短路】
这一题啊,其实还是很简单的~(A掉了就很简单啊~) 思路: 松弛,然后在里面维护一个小最短路~: A掉这一题,感觉松弛的理解又上了一个台阶,以及spfa的原理,最短路用到的原理就是松弛,先把图构造到最 ...