白书第一章例题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 == ) { x = p; y = j; z = i; }
if (k == ) { x = n - - j; y = p; z = i; }
if (k == ) { x = n - - p; y = n - - j; z = i; }
if (k == ) { x = j; y = n - p - ; z = i; }
if (k == ) { x = n - - i; y = j; z = p; }
if (k == ) { x = i; y = j; z = n - - p; }
}
;
char view[][][], pos[][][];
int main() { while (cin >> n) {
if (n == )break;
REP(i, n) REP(k, ) REP(j, n) view[k][i][j] = read_char();
REP(i, n) REP(j, n) REP(k, n) pos[i][j][k] = '#'; REP(k, ) 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, ) 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 = ;
REP(i, n)REP(j, n)REP(k, n)
if (pos[i][j][k] != '.') ans++;
printf("Maximum weight: %d gram(s)\n", ans);
}
return ;
}

Image Is Everything LA2995的更多相关文章

  1. LA2995 Image is everything

    蓝书P12 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm ...

  2. LA 2995 Image Is Everything

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

随机推荐

  1. 单片机知识是Linux驱动开发的基础之一

    这是arm裸机1期加强版第1课第2节课程的wiki文字版. 为什么没前途也要学习单片机? 因为它是个很好的入口. 学习单片机可以让我们抛开复杂的软件结构,先掌握硬件操作,如:看原理图.芯片手册.写程序 ...

  2. C#:C# 运算符

    ylbtech-C#:C# 运算符 1.返回顶部 1. C# 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C# 有丰富的内置运算符,分类如下: 算术运算符 关系运算符 逻辑运算符 位 ...

  3. select查询不到实际存在的

    转自:https://blog.csdn.net/jack0201/article/details/77868604

  4. centos7安装redis3.2.12

    1.准备安装包,放在/usr/local/src/ 2.解压安装包,解压到/usr/local/ tar zxf redis-3.2.12.tar.gz -C /usr/local/ 3.cd /us ...

  5. Codeforces - 1114C - Trailing Loves (or L'oeufs?) - 简单数论

    https://codeforces.com/contest/1114/problem/C 很有趣的一道数论,很明显是要求能组成多少个基数. 可以分解质因数,然后统计各个质因数的个数. 比如8以内,有 ...

  6. hdoj5813【构造】

    2016 Multi-University Training Contest 7 05 真的真的好菜哇... 思路: 暴力. 我对那些到达目的地少的点做硬性规定就是去比他要到达目的地更少的点,这样一来 ...

  7. Codeforces Round #364 (Div. 2)【A,C】

    啊啊啊啊啊啊啊啊啊,目睹A->CⅠA全过,最终fstwaA,C;23333333 A题: 题意: 就是分成相等的m堆,每堆有两个位置上的值相加. 思路: fst在sum可能不是偶数,先*2/n; ...

  8. python 类装饰器

    class Test(): def __init__(self, func): print('装饰器1') self.__func = func def __call__(self): print(' ...

  9. poj 3683 Priest John's Busiest Day【2-SAT+tarjan+拓扑】

    转换成2-SAT模型,建边是如果时间(i,j)冲突就连边(i,j'),其他同理 tarjan缩点,判可行性 返图拓扑,输出方案 #include<iostream> #include< ...

  10. USACO Training 3.3 商店购物 By cellur925

    题目传送门 这道题有着浓浓的背包气氛.所以我们可以这样想:可以把每个优惠方案都当做一个物品,每个单买所需要花的钱也当做一个物品.(也就是代码中的p结构体数组)而且基于此题的环境,这题是一个完全背包.另 ...