模拟:建模能力

按照题目的顺序一步步运行:最后得到答案

建模:如何给建模下一个定义呢?最简单的建模就是班级成绩,然后要求对成绩进行排名,这能想到用一个数组,存起来,然后我们再用一个排序算法,这就是建模:可以看到,建模能力就是:分析好数据结构(如何存储)+算法(如何解决这个问题)

接下来介绍几种模拟类型的题目:

1[NOIP2003 普及组] 乒乓球 - 洛谷

这个的读题有点东西,这个是11分制、21分制度

2[NOIP2015 普及组] 扫雷游戏 - 洛谷

这个没有必要去判断八个方向,用坐标偏移量就行

边界问题我们选择在最后一圈加上非地雷区

3  [NOIP2016 提高组] 玩具谜题 - 洛谷      这个题目是可以用结构体来做的,但是我想讨论一件事情,就是现在编号是:0 1 2 3 4  5 6 

如果现在在0的位置,左移三个,应该是4的位置,但是0 - 3 = -3,我们应该是用 n + 3,但是如果在3的位置,左移三个,正好是零,如果加上3 - 3正好等于0,如果加上7就是7了,所以这里我们采用取模,就是合并这两种情况 如果是减的话,(now + n - y) % n

如果是加的情况直接就是(now + x) % n

当然了,我们在建模的过程中选择存储结构的时候我选择的是map[]这里可以用stl,这样时间复杂度上可以通过

你可能感兴趣的:(算法)