博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4033 HAOI2015 树上染色
阅读量:7081 次
发布时间:2019-06-28

本文共 1160 字,大约阅读时间需要 3 分钟。

又是小朋友们【大雾】的题

所以不是很难啦

简单的边权贡献树形dp

边权没给 要开longlong

emm具体细节什么的可以看代码w

唯一的细节可能就是第一重循环要倒着 因为要取w-j更新

然后双向边...数组记得开两倍(

//Love and Freedom.#include
#include
#include
#include
#define ll long long#define inf 20021225#define N 2001using namespace std;struct edg{
int to,lt,v;}e[N<<1];ll f[N][N]; int cnt,in[N],k,sz[N],n;void add(int x,int y,int v){ e[++cnt].to=y; e[cnt].lt=in[x]; e[cnt].v=v; in[x]=cnt; e[++cnt].to=x; e[cnt].lt=in[y]; e[cnt].v=v; in[y]=cnt;}void dfs(int x,int fa){ sz[x]=1; memset(f[x],-1,sizeof(f[x])); f[x][0]=f[x][1]=0; for(int i=in[x];i;i=e[i].lt) { int y=e[i].to,v=e[i].v; if(y==fa) continue; dfs(y,x); sz[x]+=sz[y]; int top=min(k,sz[x]); for(int w=top;~w;w--) for(int j=0;j<=min(w,sz[y]);j++) { if(f[x][w-j]==-1) continue; f[x][w]=max(f[x][w],f[x][w-j]+f[y][j]+1ll*v*(sz[y]-j)*(n-sz[y]-k+j)+1ll*v*j*(k-j)); } }}int main(){ scanf("%d%d",&n,&k); int x,y,v; for(int i=1;i
View Code

 

转载于:https://www.cnblogs.com/hanyuweining/p/11075942.html

你可能感兴趣的文章
shell script编程小结——附带实例
查看>>
在 Laravel 项目中使用 Glup 之 Laravel-Elixir
查看>>
Nginx、CGI、FastCGI、PHP-CGI、PHP-FPM处理流程
查看>>
Tornado 4.3文档翻译: web框架-RequestHandler和Application 类
查看>>
版本控制总结
查看>>
数字证书、公私钥小记
查看>>
客户端开发流程
查看>>
Javascript基础之-Promise
查看>>
报名 | 清华方圆系列之大数据分析与可视化报告会将于下周举办
查看>>
了解 php.ini
查看>>
异地容灾方案解析
查看>>
深入理解Vue的生命周期
查看>>
WPF's Style BasedOn
查看>>
.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计
查看>>
.NET服务安装、卸载、启动、停止、判断是否存在
查看>>
基于深度学习的推荐系统综述 (arxiv 1707.07435) 译文第一、二章
查看>>
自定义抖动表单
查看>>
vue的组件通信
查看>>
iOS开发之让列表滚回最顶端最佳实践
查看>>
让开发变得更简单 | 阿里云中间件推出全新开发者服务
查看>>