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 ...
随机推荐
- python-----删除列表中某个元素的3种方法
python中关于删除list中的某个元素,一般有三种方法:remove.pop.del: 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除举例说明: >>> st ...
- Android应用开发完全退出程序的通用方法
在开发一个android应用时,有可能有N个Activity,而在每个Activity里的菜单里有个"退出程序"菜单,这里就要完全退出程序了,所以今天给大家分享的是Android应 ...
- vim 退出命令(保存、放弃保存)
在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell:若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell. 在末行模式下,输入命令 : ...
- opencord视频截图
参考:https://www.youtube.com/watch?v=Teu9jK6GF6s
- linux中目录操作<1>
一.目录的权限 (1)目录文件的访问权限分为三组,分别为所有者,用户,其他.每个权限组的权限位有3个,分别为读.写.执行. 注意:可以使用stat函数得到目录文件的状态信息.权限为在stat结构中st ...
- js跳转方法整理与自动刷新
js方式的页面跳转1.window.location.href方式 <script language="JavaScript" type="text/javascr ...
- 51nod 1433【数学】
思路: 不晓得阿,n%9==0即n数值各个位加起来要%9==0: 如果知道这个,那么%90==0就是末尾多个0就好了,那么后面就是随便搞吧: #include <stdio.h> #inc ...
- P5112 FZOUTSY
传送门 没想到这题还这能用莫队--本来看看以为复杂度会挂的-- 预处理出每个字母开头往后\(k\)个的字符串的哈希值,然后大概就是那道小z的袜子了 而且据说这题的哈希得用自然溢出 //minamoto ...
- hdu1232 畅通工程 基础并查集
#include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> ...
- 洛谷P2502[HAOI2006]旅行
题目: Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,-,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路.也许 ...