BZOJ1033 | ZJOI2008 杀蚂蚁 AntBuster

<论一次杀蚂蚁的经历>

<论如何优雅地用工程代码风格写出杀蚂蚁>

引子:

前天(也就是2018-3-18)的时候,刷B站(BZOJ)突然想起要A这题……

于是怂恿WHY一起做……

然鹅种种原因,拖到昨天(2018-3-19)下午才开始做

于是在CYYZ群里开起了校车……

然后

因为巨长的变量名不想手残于是换了VSCode……

然后疯狂盖楼……

 

注意这已经是今天的中午了……,而我交了一遍得了30

下午来了遂调试……发现了几个zz错误

等级没算对啦……sort忘记+1啦……蚂蚁位置忘记更新啦……以及更为严重的,没算点积判断附加攻击到底能不能打到。

晚上开始怀疑人生……此时代码量超过10k

下载了测试数据本地测……开Lemon却不小心点了O2

结果最后半个小时在静态查错,然而并没有什么错,后来的手动测试也证明了这一点

是Lemon开了O2之后,把程序跑错了

我果然花了几乎1h试图卡掉通过开了O2的Lemon……(滑稽)

管他的,进入正题

 

 

 

 


继续阅读“BZOJ1033 | ZJOI2008 杀蚂蚁 AntBuster”

#洛谷P1058 立体图

非常标准的一道思考题。

题目描述

小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容。最近,他准备给小朋友们讲解立体图,请你帮他画出立体图。

小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每个格子上堆了一些同样大小的积木(积木的长宽高都是1),小渊想请你打印出这些格子的立体图。我们定义每个积木为如下格式,并且不会做任何翻转旋转,只会严格以这一种形式摆放:

每个顶点用1个加号’+’表示,长用3个”-”表示,宽用1个”/”,高用两个”|”表示。字符’+’,”-”,”/”,”|”的ASCII码分别为43,45,47,124。字符’.’(ASCII码46)需要作为背景输出,即立体图里的空白部分需要用’.’来代替。立体图的画法如下面的规则:

若两块积木左右相邻,图示为:

若两块积木上下相邻,图示为:

若两块积木前后相邻,图示为:

立体图中,定义位于第(m,1)的格子(即第m行第1列的格子)上面自底向上的第一块积木(即最下面的一块积木)的左下角顶点为整张图最左下角的点。

这题不需要一定立体几何的分析。

我们都知道透视是什么。透视让你通过二维屏幕yy出三维空间 什么xjb玩意儿。

也就是说,你如果从右前上方看的话(题目方向),右面的(离你近的)会盖住左面的(离你远的),同理高的盖住低的,前面的盖住后面的。

那么可以遵循自底向上,自后向前,自左向右的绘画准则,在虚拟画布mapx[1010][1010]上面打表(数据范围我乱写的)

1.注意横坐标上限只与从顶上看的矩阵大小有关,但是纵坐标上限还与高度以及从顶上看的矩阵长度(矩阵纵坐标最大值)有关

社会我C哥,人狠话不多,不管那么多。

直接倒着填,右下角基准点,初始化为’.’ , 最后统计上限。

将每个block右下角作为basic point基准点,推一下公式。具体怎么来的,不作解释。

然后打个表。打表还不简单。