8.6考总

分数

一期的最后一次总结,写好点吧

T1 T2 T3 T4 T5 T6 总分
28pts 50pts 56pts 100pts 0pts 0pts 234pts(bushi

T1

我的思路:

用三个前缀和数组统计出将第一行到第i行分别涂成白色,红色,蓝色所需的价值,然后枚举前两个颜色,剩下的全涂成第三种颜色,用前缀和计算求出最大值即可。

考时记录:https://www.luogu.com.cn/record/171021045

错误原因:

纯属眼瞎

AC记录:https://www.luogu.com.cn/record/171024003

T2:

我的思路:

枚举每一秒的时间,用两个指针lt和rt记录A和B吃到哪了,枚举即可。

错因:

T飞了︿( ̄︶ ̄)︿

枚举的效率显然太慢了。

考时记录:https://www.luogu.com.cn/record/171021096

正解:

实际上可以一个一个元素枚举,这样可以大大优化。

AC记录:https://www.luogu.com.cn/record/171029606

T3:

我的思路:

前缀和预处理一遍,暴力枚举左右端点,求maxi。

错因:

显然的

考时记录:<https://www.luogu.com.cn/record/171021370

正解:

能发现,如果一个区间能被7整除,那么左端点的前缀和鱼右端点的前缀和一定同余,所以在前缀和的时候统计余数,再用lt和rt枚举出每个余数最左和最右出现在哪里,求maxi。

AC记录:https://www.luogu.com.cn/record/171021358

T4

我的思路:

用vector存储每艘船的成员信息,用队列存储船,在用map统计,每次来一艘新船之后将超时的船全部弹出,减掉他的贡献后输出。

AC记录:https://www.luogu.com.cn/record/171023921

T5

没写

正解

dp[i][j]:将a的前i个字符转为b的前j个字符的最小步数。

答案dp[a.len][b.len]

状态转移方程:

ifcase:a[i]==b[j]:

dp[i][j]=dp[i-1][j-1](不用改)

else

dp[i][j]=min:

dp[i-1][j-1]+1(改一个)

dp[i-1][j]+1(删一个)

dp[i][j-1]+1(加一个)

边界

将a的前i位改成b的前0位要i步

将a的前0位改成b的前i位要i步

AC记录:https://www.luogu.com.cn/record/171026503

T6

同上没写

一种比较新奇的思路:

递归实现:

可以发现这是一个二进制问题,因为任何数都能拆解成2的幂次方所以有了如下思路

如果x=1, 则添加一个1即可,结束

如果x=2,则添加两个1,合并,结束

若x mod 2=0,则x可以通过两个数相加,递归x/2,输出一次复制,一次相加

其他情况则只能+1得到x,递归x-1,输出一个1和一个合并。

AC记录:https://www.luogu.com.cn/record/171266614

THE END\Huge{}\color{red}T\color{orange}H\color{yellow}E\ \color{green}E\color{blue}N\color{purple}D

posted @ 2024-08-07 22:11  KK_SpongeBob  阅读(11)  评论(0)    收藏  举报  来源