码迷,mamicode.com
首页 > 其他好文 > 详细

Image Is Everything LA2995

时间:2018-10-27 14:46:02      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:col   print   mes   namespace   oid   als   stream   har   div   

白书第一章例题6

 

构造。思维。几何。

分别从几个角度去看,有矛盾就删掉,最后遍历一下统计个数

 

方法证明:第一个方块肯定要删除。假设前k个必须删除,第k+1个矛盾出现,假如不删掉,矛盾将持续存在,故必须删掉。

 

代码有很多细节。

比如注意宏定义加()  //#define REP(i,n) for(int i=0;i<(n);i++)

#include<iostream>
using namespace std;
#define REP(i,n) for(int i=0;i<(n);i++)
int n;
char read_char() {
    char c;
    for (;; ) {
        c = getchar();
        if ((c >= A&&c <= Z) || c == .) return c;

    }
}

void get(int k, int i, int j, int p, int &x, int &y, int &z) {
    if (k == 0) { x = p; y = j; z = i; }
    if (k == 1) { x = n - 1 - j; y = p; z = i; }
    if (k == 2) { x = n - 1 - p; y = n - 1 - j; z = i; }
    if (k == 3) { x = j; y = n - p - 1; z = i; }
    if (k == 4) { x = n - 1 - i; y = j; z = p; }
    if (k == 5) { x = i; y = j; z = n - 1 - p; }
}
;
char view[6][10][10], pos[10][10][10];
int main() {

    while (cin >> n) {
        if (n == 0)break;
        REP(i, n) REP(k, 6) REP(j, n) view[k][i][j] = read_char();
        REP(i, n) REP(j, n) REP(k, n) pos[i][j][k] = #;

        REP(k, 6) REP(i, n) REP(j, n) if (view[k][i][j] == .) { REP(p, n) { int x, y, z; get(k, i, j, p, x, y, z); pos[x][y][z] = .; } };

        for (;;) {

            bool done = true;
            REP(i, n)REP(j, n)REP(k, 6) if (view[k][i][j]!=. ) {
                REP(p, n) {
                    int x, y, z;
                    get(k, i, j, p, x, y, z);
                    if (pos[x][y][z] == .) continue;
                    if (pos[x][y][z] == #) { pos[x][y][z] = view[k][i][j]; break; }


                if (pos[x][y][z] == view[k][i][j]) break;
                pos[x][y][z] = .;
                done = false;
            }
            }
            if (done) break;
        }
        int ans = 0;
        REP(i, n)REP(j, n)REP(k, n)
            if (pos[i][j][k] != .) ans++;
        printf("Maximum weight: %d gram(s)\n", ans);
    }
    return 0;
}

 

Image Is Everything LA2995

标签:col   print   mes   namespace   oid   als   stream   har   div   

原文地址:https://www.cnblogs.com/lqerio/p/9860918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!