20260307 模拟测 总结
Preface
???我觉得 T3 比 T4 简单啊,为啥过 T4 的人更多哦哦哦。
好在是 AK 了 /oh
T1
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
水题,不难发现如果原数字 \(n\) 本来就是一个质数,那么答案为 \(0\),否则一定只需要一次操作就可以把 \(n\) 变成质数。于是 \(O(\sqrt{n})\) 判一下质数就做完了。
T2
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
维护数组 \(a\) 所对应的桶 \(t\),具体地,\(t_x\) 表示存在多少个不同的 \(i\) 使得 \(a_i = x\)。定义 \(m_i = \min_{1 \le j \le i} \{ t_j \}\),不难发现答案就是 \(\sum \{m\}\)。
T3
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
考虑把数组拆成 \([1,pos]\) 和 \([pos,n]\) 两段,对每段分别 \(O(n \log n)\) 求出其最长不下降(不上升)子序列长度,然后用 \(n+1\) 减去即可得到答案。
但是这两段有一个重合部分,也就是 \(pos\),怎么处理?分讨 \(pos\) 是否修改即可,若要修改则将 \(a'_{pos} = \infty\),这样一定是最优策略。
T4
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
谁懂我想了一个世纪的贪心然后会 \(O(n)\) 了准备写代码一看数据范围发现 \(n\) 只有 \(1000\) 直接平方做 DP 就行了的救赎感。。。
定义 \(dp_{i,j,0/1}\) 表示当第一只青蛙跳到了它的第 \(i\) 个石头,第二只青蛙跳到了它的第 \(j\) 个石头,并且助跳器目前在哪只青蛙手里,时的最少的传递助跳器的次数。初始化 \(dp_{0,0,0} = 0\),最终答案就是 \(\min(dp_{n,n,0},dp_{n,n,1})\)。
转移比较复杂,主要是情况数比较多,限制条件(\(m,k,q\))也不少,注意不要漏了或重了。
贴一下本人 DP 部分的代码,写的比较史。
memset(dp,0x3f,sizeof(dp));dp[0][0][0]=0;
for(int i=0;i<=n;i++)for(int j=0;j<=n;j++){
if(i)dp[i][j][0]=min(dp[i][j][0],dp[i-1][j][0]);
if(j)if(b[j]-b[j-1]<=m)
dp[i][j][0]=min(dp[i][j][0],dp[i][j-1][0]);
if(i)if((abs(b[j]-a[i-1])<=q)||(abs(b[j]-a[i])<=q&&a[i]-a[i-1]<=m))
dp[i][j][0]=min(dp[i][j][0],dp[i-1][j][1]+1);
if(j)if((abs(a[i]-b[j])<=q)||(abs(a[i]-b[j-1])<=q&&b[j]-b[j-1]<=m))
dp[i][j][0]=min(dp[i][j][0],dp[i][j-1][1]+1);
if(i)if(a[i]-a[i-1]<=m)
dp[i][j][1]=min(dp[i][j][1],dp[i-1][j][1]);
if(j)dp[i][j][1]=min(dp[i][j][1],dp[i][j-1][1]);
if(i)if((abs(a[i]-b[j])<=q)||(abs(a[i-1]-b[j])<=q&&a[i]-a[i-1]<=m))
dp[i][j][1]=min(dp[i][j][1],dp[i-1][j][0]+1);
if(j)if((abs(a[i]-b[j-1])<=q)||(abs(b[j]-a[i])<=q&&b[j]-b[j-1]<=m))
dp[i][j][1]=min(dp[i][j][1],dp[i][j-1][0]+1);
if(abs(a[i]-b[j])<=q)
dp[i][j][0]=min(dp[i][j][0],dp[i][j][1]+1),
dp[i][j][1]=min(dp[i][j][1],dp[i][j][0]+1);
}cout<<min(dp[n][n][0],dp[n][n][1])<<"\n";
Summary
还算是比较简单的一场吧。AK 了也挺开心的 /cy
继续加油喵 > < qwq

浙公网安备 33010602011771号