[BZOJ4033][HAOI2015]T1(树形dp)
来源:互联网 发布:淘宝淘金币大转盘漏洞 编辑:程序博客网 时间:2024/05/20 01:38
题目描述
传送门
题解
f[i][j]表示以i为根的子树中选了j个黑点的最大获益。
考虑由子树转移到根,连接子树和根的路径的贡献为子树中所有黑(白)点和子树外所有黑(白)点的配对个数乘以边权。
代码
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define LL long longconst int max_n=2005;const int max_e=max_n*2;LL n,k,x,y,z;LL size[max_n],f[max_n][max_n];LL tot,point[max_n],nxt[max_e],v[max_e],c[max_e];inline void add(LL x,LL y,LL z){ ++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; c[tot]=z; ++tot; nxt[tot]=point[y]; point[y]=tot; v[tot]=x; c[tot]=z;}inline void treedp(LL x,LL fa){ size[x]=1; f[x][0]=f[x][1]=0; for (LL i=point[x];i;i=nxt[i]) if (v[i]!=fa) { treedp(v[i],x); size[x]+=size[v[i]]; for (LL j=size[x];j>=0;--j) for (LL l=0;l<=min(size[v[i]],j);++l) f[x][j]=max(f[x][j],f[x][j-l]+f[v[i]][l]+l*(k-l)*c[i]+(size[v[i]]-l)*(n-k-(size[v[i]]-l))*c[i]); }}int main(){ scanf("%lld%lld",&n,&k); memset(f,128,sizeof(f)); for (LL i=1;i<n;++i) { scanf("%lld%lld%lld",&x,&y,&z); add(x,y,z); } treedp(1,0); printf("%lld\n",f[1][k]);}
总结
思路:考虑每一条边的贡献。
0 0
- [BZOJ4033][HAOI2015]T1(树形dp)
- [BZOJ4033] [HAOI2015] T1 - 树形DP
- bzoj4033 HAOI2015 T1 树形DP
- [bzoj4033][HAOI2015]树上染色(树形dp)
- 【bzoj4033】 T1 树形dp
- bzoj4033 T1 树形dp
- 【HAOI2015】T1树形Dp
- bzoj 4033: [HAOI2015]T1(树形DP)
- 【HAOI2015】【bzoj4033】【T1】
- BZOJ4033: [HAOI2015]T1
- 【BZOJ4033】【HAOI2015】树上染色 树形DP
- HAOI2015[BZOJ2110] T1 【树形DP】
- bzoj4033 [HAOI2015]树上染色(树形)
- 【HAOI2015】【BZOJ4033】T1树上染色
- BZOJ 4033 HAOI2015 T1 树形DP
- T解 BZOJ-4033 树形DP HAOI2015 T1
- 【bzoj4033】树上染色 树形dp
- 4033: [HAOI2015]T1 树型DP
- SSM框架——使用MyBatis Generator自动创建代码
- Web 端 js 导出csv文件(使用a标签)
- Spring4新特性:Groovy Bean定义DSL
- ExcelUtil工具类,使用Java代码操作Excel表格
- 【TOF-3D】学习笔记(1)-上层界面的功能设计
- [BZOJ4033][HAOI2015]T1(树形dp)
- Python开发工具PyCharm个性化设置
- MySQL存储引擎总结
- java 键盘输入数据
- sql server 定期自动清理日志
- 3proxy安装及配置网络代理的流程
- LeetCode 012: Integer to Roman
- apache sqoop1.99.3+hadoop2.5.2+mysql5.0.7环境构筑以及数据导入导出
- jsp中request传递参数汉字乱码