怎么每次写题解都打不开CF啊qwq

题意

给一棵n个点的树,给树边加0~n-1的权,权值不重复

∑ u , v ∈ V , u ≠ v m e x ( p a t h u , v ) \sum_{u,v\in V,u\not=v}mex(path_{u,v}) u,v∈V,u​=v∑​mex(pathu,v​)
的最大值
其中 p a t h u , v path_{u,v} pathu,v​指以u,v为端点的路径上的边权组成的集合

思路

我首先考虑到了以下几点
(1)只有包含0的路径才对答案有贡献
(2)权值小的边就应该被包含于更多的路径中
本题的关键在于,每种可能的方案中一定存在一条路径,路径长为 l l l,恰好包含了0到l-1间的权值,并且使得 l l l最大
考虑到(2),我们发现,这条路径的最优情况一定是,路径的中间为0,向两侧递增的样子
于是使用dp去基于向短路径(比如l=k)两端中的一边加上权为k的边,来得到更长路径(l-k+1)的答案
然后就更新最大值就好了

代码

#include<bits/stdc++.h>using namespace std;typedef long long ll;
typedef double db;
typedef complex<double> cp;
typedef pair<ll,ll> pll;const int maxn=(int)3e3+9;
const int maxm=(int)1e6+9;
const ll mod=(ll)1e9+7;
const db pi=acos(-1);
const db eps=1e-15;#define dbg(x) cerr<<#x<<" is "<<x<<endl;vector<int> e[maxn];
ll f[maxn][maxn];
int n;
int fa[maxn][maxn];
int sz[maxn][maxn];void init(){scanf("%d",&n);for(int i=1;i<n;i++){int a,b;scanf("%d%d",&a,&b);a--,b--;e[a].push_back(b);e[b].push_back(a);}
}void dfs(int u,int f,int r){fa[r][u]=f;sz[r][u]=1;for(int x:e[u]){if(f==x)continue;dfs(x,u,r);sz[r][u]+=sz[r][x];}
}ll dp(int u,int v){if(u==v)return 0;if(f[u][v]>=0)return f[u][v];int fu=fa[v][u];int fv=fa[u][v];f[u][v]=max(dp(fu,v),dp(u,fv))+sz[v][u]*sz[u][v];f[v][u]=f[u][v];return f[u][v];
}int main(){init();memset(f,-1,sizeof(f));for(int i=0;i<n;i++){dfs(i,-1,i);}ll ans=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){ans=max(ans,dp(i,j));}}printf("%lld\n",ans);return 0;
}

【20200203】【jwh】CF 1292C DP相关推荐

  1. 【解题报告】博弈专场 (CF 2000~2200)前五题

    [解题报告]博弈专场 (CF 2000+)前五题 A:Fox and Card Game | CF388C 题意 思路 代码 B:Berzerk | CF786A 题意 思路 代码 C:Ithea P ...

  2. 【codeforces】【比赛题解】#851 CF Round #432 (Div.2)

    cf真的难-- 点我浏览丧题. [A]Arpa和她对墨西哥人浪的研究 Arpa正在对墨西哥人浪进行研究. 有n个人站成一排,从1到n编号,他们从时刻0开始墨西哥人浪. 在时刻1,第一个人站起来. 在时 ...

  3. 【codeforces】【比赛题解】#915 Educational CF Round 36

    虽然最近打了很多场CF,也涨了很多分,但是好久没写CF的题解了. 前几次刚刚紫名的CF,太伤感情了,一下子就掉下来了,不懂你们Div.1. 珂学的那场我只做了第一题--悲伤. 这次的Education ...

  4. 变种 背包问题_【朝夕的ACM笔记】动态规划-背包问题

    [朝夕的ACM笔记]目录与索引 背包问题 一.0/1背包 1.1 问题描述 有 件物品和一个大小为 的背包,以及若干物品,每种物品只有一件,大小分别为 ,其价值分别为 .问题:将哪些物品装入背包,可使 ...

  5. 【模型】【课程笔记】01+02+03 金融风险管理导论

    本文为课程<金融风险管理>第1-3章学习笔记,用于知识点总结和复习,对应教材<Quantitative Risk Management(2015)>,标号为原版书公式以便查阅. ...

  6. 【专知荟萃18】目标跟踪Object Tracking知识资料全集(入门/进阶/论文/综述/视频/专家,附查看)

    原创: 专知内容组 专知 2017-11-18 点击上方"专知"关注获取专业AI知识! [导读]主题荟萃知识是专知的核心功能之一,为用户提供AI领域系统性的知识学习服务.主题荟萃为 ...

  7. 【网络编程开发系列】好端端的MQTT-broker重新部署后居然出现TLS握手失败了

    摘要:本文通过一次真实的现网案例复盘,深度还原TLS握手问题的排查思路和方法,希望对广大读者有所启发和帮助. 文章目录 1 写在前面 2 问题描述 2.1 项目背景 2.2 现场问题 3 场景复现 3 ...

  8. 足球数据API接口 - 【足球赛事分析数据】API调用示例代码

    分享使用接口调用的示例代码,足球数据[足球赛事分析数据]接口 package com.huaying.demo.football;import java.nio.charset.StandardCha ...

  9. 【Kubernetes】k8s网络概念和实操详细说明【calico网络】【含docker不同容器网络互通配置,k8s网络互通配置】【1】

    文章目录 calico网络之间通信配置[docker容器互通流程配置] calico网络原理分析 一.Calico基本介绍 二.Calico结构组成 三.Calico 工作原理 四.Calico网络方 ...

最新文章

  1. java file_Java IO: File
  2. 如何让 Mybatis 自动生成代码,提高开发效率
  3. jboss中控制台jmx-console 登录的用户名和密码设置
  4. ajax基础学习笔记
  5. Linux系统篇-文件系统虚拟文件系统
  6. 模型独立学习:多任务学习与迁移学习
  7. ActiveMovie属性说明,使用资料。
  8. 【Android OpenGL ES 开发 (四)】纹理相关(一)
  9. JAVA进阶day07JNI(java调用c)B部分
  10. CentOS 安装VNC
  11. CSS设置背景透明字体不透明
  12. SpringBoot-spring-boot-autoconfigure模块
  13. iOS开发,导入CocoaPods常用的类库
  14. Proxmark3的Android客户端,Proxmark3 冰人原版固件及客户端
  15. GWAS相关的曼哈顿图-SNP密度图
  16. 【产品】 产品设计:工业设计之外观设计详解(形态设计和CMF设计)
  17. python时间函数纳秒_python 纳秒
  18. 【Python学习教程】数据结构与算法
  19. linux下kegg注释软件,工具篇丨GO和KEGG富集不到通路?快试试这个超赞的功能分析工具吧...
  20. linux关闭内存插槽,linux 统管理中的查看内存插槽数、最大容量和频率

热门文章

  1. 【飞思卡尔 MC9S12】PRM文件与内存映射(Flash、RAM、EEE)
  2. 数据挖掘-理论与算法 公开课笔记
  3. 语音降噪_标准谱减法(附Python源码) @Learning Speech enhancement__1
  4. python机器学习基础教程-学习笔记(一)
  5. reCaptcha去除
  6. 嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM
  7. 3. Android逆向-基于Frida的工具Objection
  8. Python基础《摄氏度与华氏度互转》
  9. truncate(截断)与delete(删除)的区别
  10. vue框架根据antd封装的走马灯组件