暑假嗨九训练总结

一、题意

A. 剧院有n种剑,每种都有x把, y 个人来到剧院拿了相同的剑(每个人拿的剑的种类相同),只有1种剑没有被拿过,然后给出每种剑剩余的个数,求最少有多少个人,拿了多少把剑?

B. 给一个字符串(只包含字符 'a', 'b'),要求a 和 b 相邻,求最少改变多少次以及改变后的字符串是什么。

C. 射击一排瓶子,射倒第一个罐子需要 1 次,击倒之后的需要 a[i] * x + 1 次,顺序自选,x从1递增,求共需多少次。

D. 给定三个矩形的左下角坐标和右上角坐标,第一块是白色矩形,第二第三都是黑色矩形,问白色矩形是否被黑色矩形完全覆盖。

E.给n个数(每个数都是2的次幂),相同的两个数可以合成一个数(两个 4 可以合成 一个 8),问最终是否会出现 2048

F.多组样例,有三类人,一类是coder,一类是mathematician, 一类是 have no specialization,然后三个人一队,要求队中至少有一个coder,一个mathematician,另外一个任意,求最多能组成多少队.

G. 输入n,构造一个n*n的矩阵,矩阵只包含两种字母 ' B' ,'W' ,如果B在蓝色位置,W在红色位置时,B和W将打架,问打架次数最多的情况应该怎样放.

H.对于n个栅栏,对于每个i,有高度a[i],对于任意2<=i<=n,有a[i]!=a[i−1],则称该组栅栏为好栅栏,每个栅栏可花费b[i]提升1个高度(可无限提升)。给一组栅栏,问最少花费多少可以将这组栅栏变为好栅栏。

二、非水题AC过程

A.因为只有一种没有被拿过,所以x直接等于没被拿的那把剑,而要求拿的人最少,拿的剑还相同,因而我们可以直接求差值的最大公约数,最大公约数即是拿走的剑数。

B.从头遍历判断只要两个相同,就变第二个,然后继续判断。

C.直接排序,从大到小,最大的a[i] 乘最小的x。

E.直接排序,然后从最大的数开始累加(累加的数进行判断,是2048的倍数就加并要求累加总数小于2048),每次累加后的结果进行判断,好像有点暴力。

F.首先考虑x和y中的最小数min,设s为第三队的人数,判断s是否大于min,大于等于的话组成的队伍就是min个,小于的话我们就可以确定有了已经s个队伍,接着我们把另外两队比第三队多的人计算出来重新分配成三对,即(m-s)*2/3再加上s得到结果。

三、补题情况

D.这道题直接让我想到新生赛时候的一道题,也是这样判断矩形覆盖的题目,原理的话其实也并不复杂,不外乎是分类讨论:1.白色矩形包含在某个黑色矩形内;2.白色矩形被两个黑色矩形一起遮住,其中一块遮住它的上部分,另外一块遮住它的下部分;3.白色矩形被两个黑色矩形一起遮住,其中一块遮住它的左部分,另外一块遮住它的右部分;分清楚了情况挨个判断就好。

G.题目比较多,当时没怎么看这道题,课下看了一会感觉像是找规律的题目,但花了一段时间找到的规律好像是错的,就溜走看了看题解,结果好像奇数行奇数列放 B,偶数行偶数列放B,其余放W就是答案。

H.这道题好像真的没啥思路,呆呆地看来好长时间啥也没写出来,放弃。

四、感悟

今天的题目好像大多比较水,找规律的找规律,遍历数据的遍历,需要拐的弯少点,所以写起来比较顺畅,最多对题目的数据范围注意一点,有一段时间电脑网页崩了用手机写的,结果头文件一直不全,渣心。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值