This way

题意:

现在有一棵大小为n的树,你要往边上放0~n-2这n-1个数,定义mex(u,v)表示u到v路径上的第一个未出现的自然数,定义S

问你S最大是多少。

题解:

我感觉这道题绝不止23的难度…其实这种将单点加值转换为区间加值的题目在以前的DP中也遇到过,在线段树的题目中也是经常遇到,但是这次却没有想到真实不应该。
首先需要知道的一件事情就是从0开始的值应当和之前的值的链接在一起:

比如说0和1是这样放的,那么2就有两种放法,和他们粘在一起,这样构造出来的mex会尽可能的多。
那么求答案的时候就可以往下递归求,每次可以选择放在左端或者右端,然后由于只有这条包含0~链长-1的链会产生贡献,所以我们每次只需要找两个端点,然后进行记忆化搜索就行了。
那么我们怎么计算答案
∑ 1 ≤ u < v ≤ n m e x ( u , v ) \sum\limits_{1\leq u<v\le n}mex(u,v) 1≤u<v≤n∑​mex(u,v)
→ ∑ m = 1 ∑ 1 ≤ u < v ≤ n m ( m e x ( u , v ) = m ) \rightarrow \sum\limits_{m=1}\sum\limits_{1\leq u<v\le n}m(mex(u,v)=m) →m=1∑​1≤u<v≤n∑​m(mex(u,v)=m)
后面这个累加符号里的值的贡献是m,但是我们可以将一次加m转成m次加1,也就是值在<=m的时候都加上1,于是m的贡献最终还是m
→ ∑ m = 1 ∑ 1 ≤ u < v ≤ n 1 ( m e x ( u , v ) < = m ) \rightarrow \sum\limits_{m=1}\sum\limits_{1\leq u<v\le n}1(mex(u,v)<=m) →m=1∑​1≤u<v≤n∑​1(mex(u,v)<=m)
那么我们暴力地做树形DP
dp[i][j]表示点i到点j这条链的贡献
fa[i][j]表示以i为根的时候,j的父节点
siz[i][j]表示以i为根的时候,j的子树大小。
那么状态转移方程就是
dp[l][r]=siz[r][l]*siz[l][r]+max(dfs(fa[r][l],r),dfs(l,fa[l][r]));

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=3e3+5;
ll dp[N][N],fa[N][N],siz[N][N];
vector<int>son[N];
void finds(int rt,int x){siz[rt][x]=1;for(int ne:son[x]){if(ne==fa[rt][x])continue;fa[rt][ne]=x;finds(rt,ne);siz[rt][x]+=siz[rt][ne];}
}
ll dfs(int l,int r){if(l==r)return 0;if(~dp[l][r])return dp[l][r];return dp[l][r]=siz[r][l]*siz[l][r]+max(dfs(fa[r][l],r),dfs(l,fa[l][r]));
}
int main()
{memset(dp,-1,sizeof(dp));int n,x,y;scanf("%d",&n);for(int i=1;i<n;i++)scanf("%d%d",&x,&y),son[x].push_back(y),son[y].push_back(x);for(int i=1;i<=n;i++)finds(i,i);ll ans=0;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)ans=max(ans,dfs(i,j));printf("%lld\n",ans);return 0;
}

Codeforces 1293 E. Xenon‘s Attack on the Gangs —— 树上记忆化搜索,单点加改成区间加,有丶东西相关推荐

  1. Codeforces Round #614 (Div. 2) E. Xenon's Attack on the Gangs(DP记忆化搜索+思维)

    题目链接:https://codeforces.com/contest/1293/problem/E 题目大意:   给出一棵树,要求给树的每条边赋权值,使得树中所有点的 m e x ( x , y ...

  2. Codeforces Round #197 (Div. 2): C. Xenia and Weights(记忆化搜索)

    题意: 先输入一个长度为10的01串,第i个数字为1表示你有重量为i的砝码无数个,第i个数字为0表示你没有重量为i的砝码,你需要按照以下规则在一个一开始平衡的天平上放上m个砝码 第1个砝码放在天平左边 ...

  3. E. Xenon's Attack on the Gangs,Codeforces Round #614 (Div. 2),树形dp

    E. Xenon's Attack on the Gangs http://codeforces.com/contest/1293/problem/E On another floor of the ...

  4. Codeforces 1292C Xenon's Attack on the Gangs

    题目链接 Codeforces 1292C Xenon's Attack on the Gangs 题目大意 给定一棵树,将 [ 0 , n − 2 ] [0,n-2] [0,n−2]内的每个整数都仅 ...

  5. Xenon's Attack on the Gangs Codeforces Round #614 (Div. 2)

    Xenon's Attack on the Gangs 题意: 给你一棵树,将0~n-2一一赋值给n-1条边,则S最大可能取值 S = ∑ 1 ≤ u < v ≤ n m e x ( u , v ...

  6. Codeforces Round #336 (Div. 2) D. Zuma 记忆化搜索

    D. Zuma 题目连接: http://www.codeforces.com/contest/608/problem/D Description Genos recently installed t ...

  7. Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索

    A. Berzerk 题目连接: http://codeforces.com/contest/786/problem/A Description Rick and Morty are playing ...

  8. Codeforces Gym 100231G Voracious Steve 记忆化搜索

    Voracious Steve 题目连接: http://codeforces.com/gym/100231/attachments Description 有两个人在玩一个游戏 有一个盆子里面有n个 ...

  9. Codeforces 900D Unusual Sequences:记忆化搜索

    题目链接:http://codeforces.com/problemset/problem/900/D 题意: 给定x,y,问你有多少个数列a满足gcd(a[i]) = x 且 ∑(a[i]) = y ...

最新文章

  1. Sharepoint之升级篇
  2. where is argument in check callback passed by framework - SAP UI5学习笔记
  3. thinkphp5 判断数据是否存在_ThinkPHP 5.1 中间件中判断要访问的操作是否存在
  4. java文字旋转90度_菜鸟求助:在 JAVA APPLET 里如何旋转 90 度显示一个字符?
  5. 数商云汽车经销商管理系统解决方案:构建消费者、经销商企业功能体系
  6. CC呼叫中心系统源码注册机cccloud
  7. JS技能点--日期时间格式化
  8. 卡巴斯基破解版 KISV8.0.0.432 Beta 江南混混汉化特别版
  9. 阿里巴巴java_阿里巴巴提供自己的Java发行版
  10. -verbose:gc 和 -XX:+PrintGC 的区别
  11. 奇特的锡纸海鲜小吃:吃到嗨都不会发胖的辣卤海鲜!值得开一家哦!
  12. ThinkPHP5部署项目问题1
  13. 数据应用案例之“客户画像体系”
  14. 19.0 vue3 ref,reactive请求后的赋值问题以及解决方法
  15. Android八门神器(一):OkHttp框架源码解析 1
  16. 枚举算法实践3-Lucky number c++
  17. 项目实训(三)unity游戏场景的搭建
  18. BZOJ 3566: [SHOI2014]概率充电器 期望DP + 树形DP
  19. 从零构建u盘linux,从零开始构建自己的U盘Linux.doc
  20. Unity实现物体沿指定的轴向旋转

热门文章

  1. Oracle递归查询的原理
  2. 电脑找不到硬盘的解决方案
  3. 租房中介系统源码,房屋租赁管理系统源码
  4. 【Excel】绘图案例_常见复合图:簇状图+堆积图+折线图
  5. C. 点和圆 (类与对象)
  6. 可ping通外网,浏览器却访问不了外部网络
  7. 算法的时间复杂度表示
  8. 如何使用UltraISO制作U盘系统盘用于重装系统
  9. 参加网络安全培训班学习,就业有哪些方向?
  10. SAP 会计凭证带税码过账