11.14

AT_dp_x Tower - 洛谷

比较神,考虑先确定最优策略,用邻项交换,发现要满足 \(s_i+w_i<s_j+w_j\) 那么 \(i\)\(j\) 上方。接下来用这个顺序跑 \(01\) 背包就好了,在 \(s_i\sim 0\) 这个区间跑就好了。

P3203 弹飞绵羊

分块,考虑暴力能 \(O(B)\) 跳块,\(O(\frac{n}{B})\) 修改,所以平衡一下就到 \(O(n\sqrt n)\) 的复杂度了。

ak 赛错误总结:

  • 矩阵的边界处理

  • 并查集的预处理

  • 状压的编号从 \(0\) 开始

  • 复制时注意及时修改 \(i,j\)

  • 注意并查集初始化范围,否则答案问题极大

  • 矩阵的 \(i,j\) 两位对应行列错误。

ABC264Ex

题意简述:对于一棵树动态加点,求当前以 \(1\) 为根的满二叉树个数,对 \(998244353\) 取模。


发现这是一个十分模板的树形 dp,与动态 dp 相类似,但更简单。

发现一棵满二叉树的高度最多为 \(\log_2n\),于是只需要考虑高度少于 \(\log_2n\) 的节点即可。

\(dp_{x,dep,1}\) 表示以 \(x\) 为根,最深节点到 \(1\) 距离为 \(dep\) 的满二叉树个数,同时为了方便转移,设 \(dp_{x,dep,0}\) 表示 \(x\) 只有一个儿子,而那个儿子是满二叉树的方案数。

转移时:

\(dp_{x,dep,1}=dp_{x,dep,1}+dp_{x,dep,0}\times dp_{y,dep,1}\)

\(dp_{x,dep,0}=dp_{x,dep,0}+dp_{y,dep,1}\)

当一个节点深度过大,超过 \(\log_2n\) 时,就可以直接跳过。修改的时候只需要修改这个链。时间复杂度 \(O(n\log n)\)

AC 代码:

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5,M=998244353;
using ll=long long;
int qp(int a,int x=M-2){
    int res=1;for(;x;x>>=1,a=ll(a)*a%M)
        if(x&1)res=ll(res)*a%M;return res;
}
void add(int &x,int y){
    if((x+=y)>=M)x-=M;
}
int f[N],n,d[N],dp[N][22][2],ans;
int main(){
    ios::sync_with_stdio(false);
    cin>>n;int x,y,_d,nw,p,pr,dat;
    for(x=1;x<=n;++x){
        if(x>1)cin>>f[x];
        d[x]=d[f[x]]+1,_d=d[x];
        if(_d<=20){
            dp[x][_d][1]=nw=1,pr=0;
            for(y=f[x];y;y=f[y]){
                dat=nw;
                nw=(ll(dp[y][_d][0]+M-pr)*nw)%M;
                add(dp[y][_d][0],dat);
                pr=dp[y][_d][1],add(dp[y][_d][1],nw);
            }
        }
        for(p=1,ans=0;p<=20;++p)
            add(ans,dp[1][p][1]);
        printf("%d\n",ans);
    }return 0;
}

11.10 game - 题单 - 洛谷 | 计算机科学教育新生态

t3 十分巧妙,值得回味。

11.12 game - 题单 - 洛谷 | 计算机科学教育新生态

t3 值得看的结论:

\(\forall i \in [1,n],\ j \in [1,n]\ \gcd\{p_i - p_j\}\)\(\forall i \in [1,n-1]\ \gcd\{p_{i+1} - p_i\}\) 相等

神似 NOIP 2024 T4。

AT_arc076_b Built?

暴力会建出来 \(n^2\) 条边,但是根据最小生成树的删边规则来看,如果有排序后 \(x\)\(y\) 不相邻的边,替换成相邻的一定更优。所以排序后相邻的两边即可。

一些启示:

  1. 存在多个限制,应当考虑人为刻画一个限制。P2671求和
  2. 问题不好直接解决时,可以先考虑答案最终的形态,得到答案的限制。P4147 玉蟾宫
  3. 对于带 \(xor\) 的题目考虑逐位考虑。
  4. 有从 \(s\)\(t\) 的路径中最小的路径形如一个 \(DAG\)
posted @ 2025-11-14 22:01  NeeDna  阅读(10)  评论(0)    收藏  举报