夏令营7.18总结
Day7 模考
时间分配
$8:30\sim8:40$做T1,AC
$8:40\sim8:50$做T2,AC
$8:50\sim9:30$做T3,AC
$9:30\sim10:00$尝试T3,样例不对
$10:00\sim10:20$尝试T4,过不了
$10:20\sim10:30$T4骗分,30tps
题目
T1
比较简单。
定义$a_i$代表袋子里又$i$个标号为$a$的球。
同时额外累计一个ans
,代表当前袋子里球的数量
读入每组数据,如果是
- 放入:将下述操作完成后$a_i$加一。
- 操作:
- $a_i=0$:将
ans
加一 - 否则
ans
不变
- 取出:完成下述操作后$a_i$减一。
- 操作:
- $a_i=0$:将
ans
减一 - 否则
ans
不变
- 统计:直接输出
ans
核心代码:
1 |
|
T2
强烈怀疑是放错题目了
这题就是一个简单的判断模三。但是,当你准备把一段简单的模三代码交上去时,你会发现什么结果都没有因为时OI
赛制。但是实际上只有十分,因为你没开不对是因为你没看题面。long long
题面里明明白白地写了:$\Huge接下来每个整数的长度小于等于1000.$
那么,接下来的就很简单了。
用string
是最简单的,当然你用字符数组我也不拦着你。
简单的核心代码:
1 |
|
T3
这道题目相对来说还是比较简单的。
这里的重点不放在做法上,在一种在考试时很实用的小妙招:
一种简单的vector
去重方法:
1 |
|
注意:判断下标,所以要加一句,否则会RE
:
1 |
|
注意特殊情况,否则容易爆零。
1 |
|
还有一个vector
的使用小技巧:
1 |
|
T4
为了最大化嵌套后的结果,我们需要:
优先选择增长潜力大的函数:即每次嵌套后能带来更大增幅的函数。
$dp$优化:通过$dp$逐步构建最优解,避免暴力枚举所有可能的组合。
对每个函数计算一个关键值$K=\frac{B_i}{A_i−1}$,用于衡量函数的增长潜力。
如果$A_i=1$则$k$设为无穷大,确保这些函数优先被选中。
按照$k$从大到小排序,确保增长潜力大的函数优先被考虑。
动态规划计算最大值:
初始化动态规划数组$dp$,其中$dp[j]$表示选择$j$个函数时的最大可能值。
初始时$dp[0]=1$,因为嵌套的初始输入是$1$
对于每个函数,从$K$到$1$反向更新$dp[j]$:
计算选择当前函数后的新值:$neww=A_i\times dp[j−1]+B_i$。
如果新值比当前$dp[j]$大,则更新$dp[j]$。
T5
骗分骗30
还没搞定QwQ
。