暑假嗨三训练总结

一.题意

A.现在有两个字符串,我们每次操作需要在每个字符串都选择出长度为len的一个区间,两个区间位置不一定相同,然后将这个区间的字符都进行翻转。求进行若干次操作后,两个字符串能变成一样的吗?

B.给n组样例,每组样例都包含一个由0和1组成的字符串和它的长度,并把字符串变化k次,变化为每次都把0往前挪一位,求最后字符串的样子。

C.给n组数据,每组数据包括a,b,n,s四个数字,s为花钱的总数,有两种钱币你可以用来付钱,一种是一块的有b张,一种是n元的有a张,问你可不可以给商家准确的钱,而不用找。

D.将 n 个数分组,每组的至少有 3 个数,求如何分组才能使分组之后各组的极差(最大值 - 最小值)之和最小。

E.定三个数m,n,d分别表示河的长度,木板的数量,人能跳跃的最大距离。接下来m个数,表示编号为i的木板的长度。要求能否通过给定数量的木板,人能从0跳到n+1的位置,若能实现,输出这n个数。

F.给n组样例,每组样例是一个长度为n的排列,然后我们每次可以选择一个位置i和i+1的数字进行交换,但是每个位置只能交换一次,交换结束后,求这个排列最小是多少。

二.非水题AC过程

B:字符串从左到右遍历,每个数都判断一下,遇到第一个0便把它向左移动到第一位,然后继续判断遇到第二个0便移动到第二位,以此类推。每次移动0的时候,都要判断一下能否移动到最前面,并分一下情况。

C:首先排除极端情况a*n+b<s的情况,然后s%n取余,判断余数是不是小于等于a,如果成立则说明可以付清。PS:数据类型为long long int,long long超时。

F:建立三个数组,a数组用来输入开始的排列,b数组用来对a数组进行编号,c数组用来判断数字与数字之间是否交换过,然后就是对a数组中的数据从左到右遍历,对每两个数字之间进行判断、交换,最后得出最小的排列。

三、补题情况

A:看的时候花了许多时间,属于没有思路的那种,补题时看了网站上的讲解和ac了的代码,算是补充学习。

D:看懂了题意,但比赛时没信心可以做出来,所以略过了,课下重新进行了思考,自己AC过了这道题。

E:比赛最后的时间都花在了这道题上面,因为f题浪费了太多的时间,导致这道题没写完,只好课下补全了程序。

四、感想

比赛做题时紧迫感有点严重,开始的时候B题浪费了许多时间,后面做题时就更慌了,结果超时和wrong出现了许多次,这个以后好好反省,在全部补题了后个人感觉还是状态转移方程这部分不行,得抽时间回顾一下之前学的那些了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值