专栏文章

8.21

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio790j8
此快照首次捕获于
2025/12/02 14:30
3 个月前
此快照最后确认于
2025/12/02 14:30
3 个月前
查看原文

T1

题目大意:

给定两个数l,r,每次求出l~r总共发生变化的数字位数

正解:

每次统计个位数要变几次,然后l和r都除以10直到r=0

T2

题目大意:

给定n个结构体,里面分别有两个数x,y,选若干个结构体,在x总和=y的总和的情况下,求x总和+y的总和最大值

原思路:

暴力dfs

正解:

每个数有两种选择方式,所以是01背包,dp[i][j]代表前n个结构体,x、y的差为j,最大总和 dp[i][j]可能由dp[i-1][j]直接更新,也可能是由dp[i][j-x、y的差]+x、y的和更新,找两个中的最大值。 差可能是负数,所以要偏移

T3

题目大意:

给定一个数组,相同的数为一个连通块,每次更改能更改一个连通块,算出最少次数

原思路:

无,没有想到怎么写

正解:

序列dp,先算出每个数对应的连通块,发现n只能支持双重循环,所以就枚举开头和长度,如果开头和结尾的连通块相同,那就是他们两个中间的序列的次数+1,如果不同就看开头+1~结尾和开头~结尾-1的次数+1

T4

题目大意:

给定 n 个元素和一个二维数组,有p个位置,需要各对应一个元素(每个编号对应二维中的一个值),再从剩余中选 k 个作为对应其他。求总数值的最大值

原思路:

暴力dfs

正解:

dp[i][j]:已选取i个数,选取的位置状态为j。 先按每个元素从大往小排序,枚举每个i和j,什么都不做就是dp[i-1][j],如果还能选的数+k>=i,那就做观众,枚举每种做队员的编号dp[i][j]就是最大的上一种情况(dp[i-1][j^(1<<位置)])+贡献。

评论

0 条评论,欢迎与作者交流。

正在加载评论...