前言
本次飞翔杯的基础组题解,总体难度属于入门~普及的难度
T1 偷吃
题目大意
给出包含nnn个整数的序列AAA,进行kkk次操作,每次删除其中的A1A_1A1 ,并将A2A_2A2 到AnA_nAn 中的所有元素前挪一位变为A1,A2...An−1A_1,A_2...A_{n-1}A1 ,A2 ...An−1 ,末尾AnA_nAn 变为0。
题解思路
根据题目意思模拟即可,方法很多,本处选择使用数组模拟,使用数组模拟可以参考以下思路。
1. 输入nnn个数字至AAA数组当中
2. 若满足 k<nk < nk<n 则输出a[k+1]a[k+1]a[k+1]至a[n]a[n]a[n]的数字,同时补上kkk个0在末尾 。
3. 若满足 k>=nk >= nk>=n 则输出nnn个0 。
参考代码
T2 INTERNETSHOP
题目大意
给出nnn个数字,找到第一个大于hih_ihi 的数字。否则输出-1.
题解思路
在题目给出的nnn个数字之中,针对于h1h_1h1 ,for循环枚举从左往右找到比他更大的第一个hih_ihi 即,否则输出−1-1−1。
参考代码
T3 YUILICE的盛大PARTY
题目大意
给出mmm个游戏,每场游戏共有kkk名参与者,同时给出他们编号,要求你记录下每个人之间是否有共同做过游戏,最后根据所有人是否都两两做过游戏输出Yes或No。
题解思路
我们可以使用二维数组来管理第iii人与第jjj人是否参与了一个游戏,对于每一场游戏我们都可以根据参与人数的编号来更新他们之间的关系,让二维数组arr[i][j]arr[i][j]arr[i][j]记录下第iii人与第jjj人是否参与了一个游戏。
最终需要时间复杂度O(n3)O(n^3)O(n3)。
参考代码
T4 RED AND GREEN
题目大意
给定两个水桶,体积为RRR与GGG,并且RRR于GGG,可以进行三种操作
1. RRR倒空水
2. GGG倒给RRR,满或GGG为空为止
3. GGG灌满水
求解kkk次操作后,有多少水还在两个水桶当中。
题解思路
我们设定x,yx,yx,y分别代表此时两个桶的水量,其中xxx代表红色水桶, yyy代表绿色水桶,来模拟其中的操作。
如果x=Rx = Rx=R,则设置x=0x = 0x=0,同理,如果y=0y = 0y=0,则设置y=Ry = Ry=R.
如果都不满足,则执行将xxx当中的水倒入yyy当中,需要移动的毫升为yyy毫升或RRR毫升,取最小值,所以只需要让倒入的水z=min(y,R−x)z = min(y , R - x)z=min(y,R−x)即可,那么结果为 xxx增加zzz, yyy减少zzz。
因为K≤100K \leq 100K≤100,因此暴力模拟即可。
参考代码