Image Is Everything LA2995
白书第一章例题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的更多相关文章
- LA2995 Image is everything
蓝书P12 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm ...
- LA 2995 Image Is Everything
题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...
随机推荐
- lua 与C通过c api传递table (2)
本文转自http://blog.csdn.net/a_asinceo/article/details/49907903(感谢...) 一.单个参数的传递 首先我们在Lua中注册一个C类PJYCallb ...
- k8s-创建自定义chart及部署efk-二十五
一.chart的结构 (1)更改helm为阿里云仓库源 [root@master helm]# helm repo remove stable "stable" has been ...
- UVa 1611 Crane (构造+贪心)
题意:给定一个序列,让你经过不超过9的6次方次操作,变成一个有序的,操作只有在一个连续区间,交换前一半和后一半. 析:这是一个构造题,我们可以对第 i 个位置找 i 在哪,假设 i 在pos 位置, ...
- 树莓派 zero w 一根线使用
参考网站:https://sspai.com/post/40086 硬件: 一台mac电脑 一根micro b usb线 一块zero w板子 一张micro sd卡 一.制卡 格式化 烧写镜像文件 ...
- P4141 消失之物(背包)
传送门 太珂怕了……为什么还有大佬用FFT和分治的…… 首先如果没有不取的限制的话就是一个裸的背包 然后我们考虑一下,正常的转移的话代码是下面这个样子的 ;i<=n;++i) for(int j ...
- 测试人员,今天再不懂BDD就晚了!
首先,测试人员应该参与软件开发的全流程,这一点已经是软件行业的共识了. 其次,新技术.新框架.新思路不断涌现的今天,测试人员除了传统的功能测试,也要不断与时俱进,主动承担起自动化测试.性能测试等.除了 ...
- PJzhang:工作之余一起来看剧
猫宁!!! 最近几个月陆续看了4部电视剧,不错,分别来自4个国家或地区,英国.日本.中国香港.俄罗斯,是的,没有美剧,平时真的很少看美剧. 1-IT狂人,英剧,一共4季,每季6集,每集25分钟左右. ...
- .net mvc中一种简单的工作流的设计
开篇前的废话:工作流是我们在做互联网应用开发时经常需要用到的一种技术,复杂的工作流我们基本是借助一些开源的 工作流项目来做,比如 ccflow等,但是有时候,我们只需要实现一些简单的工作流流程,这时候 ...
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
<对“XXX::Invoke”类型的已垃圾回收委托进行了回调.这可能会导致应用程序崩溃.损坏和数据丢失.向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们& ...
- HDU 4366 Successor 分块做法
http://acm.hdu.edu.cn/showproblem.php?pid=4366 今日重新做了这题的分块,果然是隔太久了,都忘记了.. 首先,用DFS序变成一维的问题 关键是它有两个权值, ...