E78 树上背包 P1273 有线电视网
视频链接:E78 树上背包 P1273 有线电视网_哔哩哔哩_bilibili
P1273 有线电视网 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
// 树上背包 O(n*m) #include <iostream> #include <cstring> #include <algorithm> using namespace std; int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} while('0'<=ch && ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();} return x*f; } const int N=3010; int idx,head[N]; struct E{int to,w,ne;}e[N*N]; void add(int u,int v,int w){ e[++idx]={v,w,head[u]};head[u]=idx; } int n,m; int val[N],s[N],f[N][N]; void dfs(int u){ if(u>n-m){f[u][1]=val[u]; s[u]=1; return;} for(int i=head[u];i;i=e[i].ne){ int v=e[i].to; dfs(v); s[u]+=s[v]; for(int j=s[u];j>=0;j--) for(int k=0;k<=min(j,s[v]);k++) f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]-e[i].w); } } int main(){ n=read(),m=read(); for(int u=1;u<=n-m;u++){ int k=read(); for(int j=1;j<=k;j++){ int v=read(),w=read(); add(u,v,w); } } for(int i=n-m+1;i<=n;i++)val[i]=read(); memset(f,~0x3f,sizeof(f)); for(int i=1;i<=n;i++) f[i][0]=0; dfs(1); for(int i=m;i>=0;i--) if(f[1][i]>=0){printf("%d",i); break;} }
// 树上背包 O(n*m) #include <iostream> #include <cstring> #include <algorithm> using namespace std; int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} while('0'<=ch && ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();} return x*f; } const int N=3010; int idx,head[N]; struct E{int to,w,ne;}e[N*N]; void add(int u,int v,int w){ e[++idx]={v,w,head[u]};head[u]=idx; } int n,m; int val[N],s[N],f[N][N]; void dfs(int u){ if(u>n-m){f[u][1]=val[u]; s[u]=1; return;} for(int i=head[u];i;i=e[i].ne){ int v=e[i].to; dfs(v); for(int j=s[u];j>=0;j--) for(int k=0;k<=s[v];k++) f[u][j+k]=max(f[u][j+k],f[u][j]+f[v][k]-e[i].w); s[u]+=s[v]; } } int main(){ n=read(),m=read(); for(int u=1;u<=n-m;u++){ int k=read(); for(int j=1;j<=k;j++){ int v=read(),w=read(); add(u,v,w); } } for(int i=n-m+1;i<=n;i++)val[i]=read(); memset(f,~0x3f,sizeof(f)); for(int i=1;i<=n;i++) f[i][0]=0; dfs(1); for(int i=m;i>=0;i--) if(f[1][i]>=0){printf("%d",i); break;} }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2023-11-05 C59 可持久化线段树+异或+贪心 P3293 [SCOI2016] 美味
2022-11-05 G33 整除分块(数论分块)