[USACO 2021.02 Feb]Problem 2. Comfortable Cows

简介: [USACO 2021.02 Feb]Problem 2. Comfortable Cows

Farmer John 的草地可以被看作是一个由正方形方格组成的巨大的二维方阵(想象一个巨大的棋盘)。初始时,草地上是空的。

Farmer John 将会逐一地将N(1≤N≤10^5)头奶牛加入到草地上。第 i 头奶牛将会占据方格 (xi,yi),不同于所有已经被其他奶牛占据的方格(0≤xi,yi≤1000)。

一头奶牛被称为是「舒适的」,如果它水平或竖直方向上与恰好三头其他奶牛相邻。Farmer John 对他的农场上舒适的奶牛数量感兴趣。对 1......N 中的每一个 i,输出第 i 头奶牛加入到草地上之后舒适的奶牛的数量。

输入格式(从终端 / 标准输入读入):

输入的第一行包含一个整数N。以下N行每行包含两个空格分隔的整数,表示一头奶牛所在的方格坐标(xi,yi)。输入保证所有方格的坐标是不同的。

输出格式(输出至终端 / 标准输出):

输出的第 i 行包含前 i 头奶牛加入到草地上之后舒适的奶牛的数量。

输入样例:

8

0 1

1 0

1 1

1 2

2 1

2 2

3 1

3 2

输出样例:

0

0

0

1

0

0

1

2

在前四头奶牛加入之后,位于 (1,1) 的奶牛是舒适的。

在前七头奶牛加入之后,位于 (2,1) 的奶牛是舒适的。

在前八头奶牛加入之后,位于 (2,1) 和 (2,2) 的奶牛是舒适的。

测试点性质:

测试点 1-4 满足N<=400。

测试点 5-12 没有额外限制。

供题:Benjamin Qi

1. #include <iostream>
2. #include <cstdio>
3. using namespace std;
4. int n,map[1005][1005],x,y,ans=0;
5. int xx[5]={-1,1,0,0,0};
6. int yy[5]={0,0,-1,1,0};
7. bool check(int x,int y){//判断该点上的奶牛否舒适
8.  if(x<0||x>=n||y<0||y>=n||map[x][y]==0)
9.    return false;
10.   int tj=0;
11.   for(int i=0;i<4;i++){//刨除自身
12.     int tx=x+xx[i];
13.     int ty=y+yy[i];
14.     if(tx>=0&&tx<n&&ty>=0&&ty<n)
15.       tj+=map[tx][ty];
16.   }
17.   return tj==3;
18. }
19. int cal(int x,int y){
20.   int t1,t2;
21.   t1=t2=0;
22.   //每放一个奶牛只影响周边及自身5个点
23.   for(int i=0;i<5;i++)//统计放奶牛前5个点的舒适度
24.     t1+=check(x+xx[i],y+yy[i]);
25.   map[x][y]=1;
26.   for(int i=0;i<5;i++)//统计放奶牛后5个点的舒适度
27.     t2+=check(x+xx[i],y+yy[i]);
28.   return t2-t1;//舒适度增加量
29. }
30. int main()
31. {
32.   cin>>n;
33.   for(int i=1;i<=n;i++){
34.     cin>>x>>y;
35.     ans+=cal(x,y);
36.     cout<<ans<<endl;
37.   }
38.   return 0;
39. }

下载测试数据

相关文章
[USACO 2021.02 Feb]Problem 3. Clockwise Fence
[USACO 2021.02 Feb]Problem 3. Clockwise Fence
[USACO 2021.02 Feb]Problem 1. Year of the Cow
[USACO 2021.02 Feb]Problem 1. Year of the Cow
[USACO 2010 Feb S]Chocolate Eating
[USACO 2010 Feb S]Chocolate Eating
Leetcode 365. Water and Jug Problem
一句话理解题意:有容积为x和y升的俩水壶,能不能量出z升的水。 我刚开始看到这题,立马就想了下暴力搜索的可能性,但考虑了下数据大小,立马放弃这个暴力的想法,于是意识到肯定有比较简单的数学方法,其实我自己没想到,后来看还是看了别人的代码,很多博客都直接给出了解法, 但没介绍为什么能这么解。所以我决定解释下我自己的思路。
64 0
luogu CF776D The Door Problem(2-sat问题)
luogu CF776D The Door Problem(2-sat问题)
78 0
LeetCode 365. Water and Jug Problem
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?
97 0
LeetCode 365. Water and Jug Problem
|
移动开发
洛谷P2639-[USACO09OCT]Bessie‘s Weight Problem G(01背包)
洛谷P2639-[USACO09OCT]Bessie‘s Weight Problem G(01背包)
洛谷P2639-[USACO09OCT]Bessie‘s Weight Problem G(01背包)
ZOJ - Summer 2018 - Contest 2 by Astolfo - Problems - 1002: Hazard and The Triangle
ZOJ - Summer 2018 - Contest 2 by Astolfo - Problems - 1002: Hazard and The Triangle
118 0
ZOJ - Summer 2018 - Contest 2 by Astolfo - Problems - 1002: Hazard and The Triangle