求优化常数
查看原帖
求优化常数
798144
SukiYuri楼主2024/8/4 17:54

rt,代码不开O2会TL

#include<bits/stdc++.h>
using namespace std;
int t;
int tim[205],w[205],dp[205][6005],son[2][205],cnt=1;
void read(int cu) {
    int x,y;
    scanf("%d%d",&x,&y);
    tim[cu]=x<<1;
    if(y!=0) {
        w[cu]=y;
        return;
    }
    read(son[0][cu]=++cnt);
    read(son[1][cu]=++cnt);
}
void dfs(int cu) {
    // cout<<cu<<" "<<tim[cu]<<" "<<w[cu]<<endl;
    if(w[cu]!=0) {
        for(int i=tim[cu]+5;i<t;++i) {
            dp[cu][i]=min(w[cu],dp[cu][i-5]+1);
        }
        return;
    }
    dfs(son[0][cu]);
    for(int i=tim[cu];i<t;++i) 
        dp[cu][i]=dp[son[0][cu]][i-tim[cu]];
    dfs(son[1][cu]);
    for(int i=t-1;i>tim[cu];--i) {
        for(int j=0;j<i-tim[cu];++j) {
            dp[cu][i]=max(dp[cu][i],dp[cu][i-j]+dp[son[1][cu]][j]);
        }
    }
    return;
}
int main() {
    scanf("%d",&t);
    read(1);
    dfs(1);
    cout<<dp[1][t-1];
    return 0;
}

事Track Lost (确信

2024/8/4 17:54
加载中...