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

来源:互联网 发布:网络校时电话 编辑:程序博客网 时间:2024/05/22 15:37
/* * 绝逼的坑题,坑点就在于一个坐标下可能存在多个地雷 * 这尼玛都不知道出题人是怎么想的,一个位置放多个地雷还炸不死放地雷的小士兵??? * 坑出个翔了!! * 做法就是贪心,枚举所有的点和所有可能的边,当然还要考虑变长为0的正方形(这尼玛) */ #include <cstdio>#include <cstring>#define MAXN 120using 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;}

0 0
原创粉丝点击