您的位置:首页 > 其它

hdu 4739 Zhuge Liang's Mines (水题:坑题!!!)

2014-08-27 12:15 323 查看
/*
* 绝逼的坑题,坑点就在于一个坐标下可能存在多个地雷
* 这尼玛都不知道出题人是怎么想的,一个位置放多个地雷还炸不死放地雷的小士兵???
* 坑出个翔了!!
* 做法就是贪心,枚举所有的点和所有可能的边,当然还要考虑变长为0的正方形(这尼玛)
*/

#include <cstdio>
#include <cstring>
#define MAXN 120
using namespace std;

int vis[MAXN][MAXN];

bool judge(int x, int y) {
if(x<0 || y<0 || x>100 || y>100)
return false;
if(vis[x][y] > 0)
return true;
return false;
}

int main(void) {
int n, x, y;
while(scanf("%d", &n)!=EOF && n!=-1) {

memset(vis, 0, sizeof(vis));
while(n--) {
scanf("%d%d", &x, &y);
vis[x][y]++;
}

int ans = 0;

for(int i=0; i<=100; ++i) {
for(int j=0; j<=100; ++j) {
ans += vis[i][j] / 4;
vis[i][j] %= 4;
}
}

for(int i=0; i<=100; ++i) {
for(int j=0; j<=100; ++j) {
int tmp = vis[i][j];
while(vis[i][j] > 0 ) {

for(int k=1; k<=100; ++k) {
if(judge(i, j) && judge(i,j+k) && judge(i+k, j) && judge(i+k, j+k)) {
++ans;
vis[i][j]--;
vis[i+k][j]--;
vis[i][j+k]--;
vis[i+k][j+k]--;
}
}
if(vis[i][j] == tmp)
break;
}
}
}
printf("%d\n", ans*4);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: