学校初一模拟赛(2019.3.2)

版权声明:欢迎各位巨佬评论! https://blog.csdn.net/weixin_43346722/article/details/88078306

今天,我们学校给我们初一的蒟蒻来了一次模拟赛。

T1:青蛙跳荷叶

题目

从前,有一个小青蛙决定去荷叶上练习跳跃.现在有n个荷叶排成一排,小青蛙一开始在最左边的荷叶(一号荷叶)上,当然,这个青蛙是很牛X的,可以在任意两个荷叶之间跳跃。
有一天这个青蛙突发奇想,想用一种奇怪的方式完成跳跃练习:
1.它希望每次跳到不同的荷叶上
2.每一次跳的距离不同
当然,作出这个决定是何其的简单,但是跳跃方式是何其的困难……,所以他希望你可以帮他解决这个问题.
下面给出这个问题严格的数学定义,请给出1到n这n个自然数的一个排列a1,a2,a3……an
使得
1:a1=1
2:对于任意的i<>j(1<=i,j<=n-1),有|ai-a(i+1)|<>|aj-a(j+1)|,其中n是给定的

输入

一行,一个数n。

输出

一行,n个数,用一个空格隔开,末尾没有多余空格。

输入样例

3

输出样例

1 3 2

数据范围

对于20%的数据,1< n <=4
对于100%的数据,1< n <=10000

T2:排排坐

题目

小B喜欢在蓝心网玩游戏,一天他玩到了这个游戏:他感觉非常好玩…于是他就YY出了一个类似的简易模型…
游戏规则:每次点击一个小朋友,他和他的周围的小朋友都会改变状态(蹲下的变成了站起来的,站起来的变成了蹲下的)
我们将这个抽象成如下图所示的1*N的图.对于一个单元格,黑色表示小朋友是站起来的,反之,蹲下的小朋友是是白色的.Source表示初始状态,Target表示目标状态.
在这里插入图片描述
现在小B有点偷懒,希望作为神牛的你帮小B算出初始状态到目标状态的最少点击数.

输入

第一行为N表示小朋友的个数.
第二行是初始状态,有N个数,每个数不是0就是1.(0表示小朋友是蹲下的,1表示小朋友是站起来的)
第三行的结构跟第二行类似,表示目标状态

输出

一个数X,表示初始状态到目标状态的最少点击数。
如果无法到达目标,则请输出"Boring"

输入样例

9
0 1 0 0 0 1 0 0 0 
1 0 1 0 1 0 1 0 0

输出样例

2

数据范围

对于100%的数据,N<=10

T3: 分离与合体

经过在机房里数日的切磋,LYD从杜神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试…
杜神牛造了n个区域,它们紧邻着排成了一行,编号1~n。在这每个区域里都放着一把OI界的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子把它们全部拿走,而是每次只可以拿一个。为了尽快的拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。
一开始LYD可以选择从1到n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发生分离,从而分离为两个小LYD。分离完成的同时会有一面墙在K和K+1区域之间升起,从而把1到k和k+1到n阻断为两个独立的区间。然后两个小LYD分别进入1~k和k+1到n,并在各自的区间内任选除了区间末尾区域以外(即1到k-1或k+1到n-1)的任何一个区域再次发生分离,就一共有了4个小小LYD……重复进行以上所叙述的分离,直到每个小LYD发现自己所在的区间只剩下了一个区域,他们就可以抱起自己梦寐以求的OI金钥匙。
但是LYD不能就这么分成n多个个体存在于世界上,这些小LYD还会再合体,合体的两个小LYD所在的区间中间的墙会消失。合体会获得一定的价值,计算方法是:合并后所在区间的左右端区域里金钥匙的价值之和) 乘 (之前分离的时候所在区域的金钥匙价值。
LYD请你编程求出最终可以获得的总价值最大是多少。并按照分离阶段从前到后,区域从左向右的顺序,输出发生分离的区域编号 (例如:先打印1分为2的分离区域,然后从左到右打印2分为4的分离区域,然后是4分为8的…) 。
注意:若有多种方案,选择分离区域尽量靠左的方案(也可以理解为输出字典序最小的)。

输入

第一行:正整数n (2<=n<=300)
第二行:n个正整数,表示1~n区域里每把金钥匙的价值。
保证答案及运算过程中不超出longint范围。

输出

第一行一个数,即获得的最大价值
第二行按照分离阶段从前到后,区域从左向右的顺序,输出发生分离的区域编号,中间用一个空格隔开,若有多种方案,选择分离区域尽量靠左的方案(也可以理解为输出字典序最小的)。

输入样例

7
1 2 3 4 5 6 7

输出样例

238
1 2 3 4 5 6

数据范围

对于%20的数据 N<=10
对于%40的数据 N<=50
对于%100的数据 N<=300 a[i]<=300

T4:腾讯大战360

题目

2010年11月3日,是一个难忘的日子。 腾讯发布消息:存360则,不留QQ。留QQ,则须卸360。 360则表示360与QQ可以共存。 这也就标志着腾讯与360的大战就此开始!
现在,腾讯与360由于身处异地,非常迫切地想在最短的时间内相遇,然后干一架。但是由于双方的技术员都在努力地编程序想干掉对方,所以他们希望你来帮他们找到一个最好的方案使得相遇的时间最短。
在此我们定义“相遇”为:两个人皆在同一个有编号的城市上就可以了,并且这两个人均可以站在原地等另外一个人。也就是说,在这里我们不考虑两人在路中间相遇。

输入

输入数据第一行:N和M(用空格隔开) 表示这是一个N*N的图并且有M条边,第二行到第M+1行 为这个图的详细信息。
每行共有被空格隔开的三个数:a b c。表示编号为a的城市到编号为b的城市
有一个双向边,并且要过这条双向边所需要花费的时间为c。
最后一行有两个数:S和T,S表示腾讯所处的城市(也就是深圳),T表示360所处的
城市(也就是北京)

输出

输出只有一行,D,表示二者“相遇”的最短时间。当然,如果无法相遇则输出“Peace!”

输入样例

3 3
1 2 1 
2 3 1
1 3 1
1 3

输出样例

1

数据范围

每组都是n=5000 m=5000 并且保证运算过程中的所有值都不会超过117901063

做题过程

看了一下题目,第一题可以找规律,还一不小心被我一眼看出来了;第二题毫无思路;第三题更是懵逼;第四题能用最短路。

然后就去做第一题,把规律套上去,然后就A了样例,就交上去了。

接着去刚第四题,发现只能用SPFA做,不然会超时(难受啊,我SPFA还没学会)。但为了高分,只好再打一次。

(两个小时后)

啊啊啊啊!我A了!!!莫名成功把SPFA敲了出来,然后我就交上去了。

接着,还有一点时间。
……
嗯! 水分时间到!

然后就开始用迷之水分术水第二题。

预计得分:100+0+0+100=200分。
实际得分:100+0+0+100=200分。

难得一次算对了得分。

等一下!
第二题输出样例有分!我的水分术样例是对的!那为什么……零分???
然后就发现我把 1 打成了 ‘1’ 。

该对之后还发现有40分……
……
蓝瘦啊!

总结

感觉这一次模拟赛对我来说挺值的,还A了SPFA,也取得了不错的分数。
但是,有时候还是会粗心,坏毛病还是没有改掉。

改A题目博客

青蛙跳荷叶
腾讯大战360

后续

劳资卡了五六天的 S P F A SPFA 终于A了!

猜你喜欢

转载自blog.csdn.net/weixin_43346722/article/details/88078306