这个代码为何会RE。。。
查看原帖
这个代码为何会RE。。。
756179
so_find_skind楼主2023/8/19 19:47
#include<bits/stdc++.h>
using namespace std;
int n,k,gg,a[305];
map<int,int>f;
std::vector<int>g[305];
int dp(int u,int k,int r){
    if(f[u*1000+k*50+r]!=0)
        return f[u*1000+k*50+r];
    if(g[u].size()==0){
        if(!k)
            return 0;
        return f[u*1000+k*50+r]=a[u];
    }
    if(!k)
        return 0;
    if(g[u].size()==1)
        return f[u*1000+k*50+r]=a[u]+dp(g[u][0],k-1,0);
    int ans=0;
    for(int i=0;i<k;i++){
        ans=std::max(ans,dp(g[u][r],i,0)+dp(u,k-i,r+1));
    }
    return f[u*1000+k*50+r]=ans;
}
int main(){
    std::cin>>n>>k;
    for(int i=1;i<=n;i++){
        std::cin>>gg>>a[i];
        g[gg].push_back(i);
    }
    k++;
    std::cout<<dp(0,k,0);
    return 0;
}

QWQ,P2014的树形DP(正好用的也是c++14)

2023/8/19 19:47
加载中...