忿惺噱 发表于 2025-6-7 13:48:35

2025/2/15课堂记录

目录


[*]数字转换
[*]皇宫看守


[*]数字转换
这是一道树的直径题。
首先,树的直径定义是:树上两个结点之间的最短(加权)路中最长的一条路径(和二分答案没关)
但由于贪心思想,这个路径一定起点终点是两片叶子结点

如图,这棵树的直径就是5,即节点3和节点4之间的最短路径
那么,求树的直径有啥方法?
方法一:找每个节点的最长链与次长链之和的最大值
这是代码  //树的直径 dp实现; //https://blog.csdn.net/qq_42211531/article/details/86579115//dp: 结点u的最长儿子链//dp: 结点u的次长儿子链 #include #include #include using namespace std;int const MAX = 100005;int head, dp;int n, s, cnt, ans; struct EDGE{    int v, w, next;}e; void Add(int u, int v, int w){    e[++cnt].v = v;    e.w = w;    e.next = head;    head = cnt;}//   利用孩子的最长链去更新父亲的最长链和次长链 void DFS(int u, int fa){        //dp:最长子链; dp:次长子链   dp = dp = 0;    for(int i = head; i ; i = e.next)    {      int v = e.v;      int w = e.w;      if(v != fa)      {            DFS(v, u);            if(dp < dp + w)   //    父亲u的最长 < 孩子v的最长 + (u,v)边长             {                dp= dp;                dp = dp + w;            }            else                           if(dp < dp + w)                  dp = dp + w;      }    }    //枚举经过每个节点的长链,是否最大?   ans = max(ans, dp + dp);} int main(){    memset(head, 0, sizeof(head));    scanf("%d", &n);    for(int i = 1; i 4这条</p>可见,树的直径不一定经过根节点!
方法二:先找距离根节点最远的点,再找距离这个点最远的点(2次dp)
这是代码  //https://blog.csdn.net/Rainfoo/article/details/105290837//图论-树-最长链(树的直径) #include#include#include#include#includeusing namespace std;#define ll long longconst int maxn=2e5+5;int d,head,f_num,ans,tot;struct E{        int to,next,w;}edge;void add(int u,int v,int z){        edge.to=v;        edge.w=z;        edge.next=head;        head=tot++;}void dfs(int x,int fa){        if(ans>n>>m;        for(int i=1;i>u>>v;                //cin>>w;                add(u,v,w);add(v,u,w);        }        dfs(1,0);        ans=0;        d=0;        dfs(f_num,0);        coutf2])                           f2]=f1+1;    }    int ans=-1;    for(int i=1;i让孩子的孩子看守孩子的花费)</p>          这时候必须要强制把一个孩子拉出来干活,即fake
这是代码 // 皇宫看守 loj 10157 //https://www.cnblogs.com/Forever-666/p/11234958.html #include#include#include#includeusing namespace std;const int MAXN=2200;struct E{int x,y,next;}mm[MAXN

舒菀菀 发表于 2025-11-4 20:44:54

喜欢鼓捣这些软件,现在用得少,谢谢分享!

凶契帽 发表于 2025-11-20 07:51:20

谢谢楼主提供!

讹过畔 发表于 2025-12-12 15:44:52

感谢分享

碣滥 发表于 2026-1-4 16:50:48

东西不错很实用谢谢分享

全阳霁 发表于 2026-1-16 03:34:55

感谢,下载保存了

肿抢 发表于 2026-1-17 20:21:43

用心讨论,共获提升!

聚怪闩 发表于 2026-1-18 15:38:37

懂技术并乐意极积无私分享的人越来越少。珍惜

左优扬 发表于 2026-1-19 09:41:34

用心讨论,共获提升!

坪钗 发表于 2026-1-22 08:36:49

这个有用。

窖咎 发表于 2026-1-22 21:06:43

收藏一下   不知道什么时候能用到

咫噎 发表于 2026-1-23 09:28:21

感谢分享,下载保存了,貌似很强大

勺缓曜 发表于 2026-1-26 09:16:42

喜欢鼓捣这些软件,现在用得少,谢谢分享!

豌畔丛 发表于 2026-1-28 05:19:51

yyds。多谢分享

慎气 发表于 2026-1-30 06:40:34

很好很强大我过来先占个楼 待编辑

糙昧邵 发表于 2026-2-4 07:11:13

感谢,下载保存了

寇油 发表于 2026-2-6 04:22:53

喜欢鼓捣这些软件,现在用得少,谢谢分享!

佴莘莘 发表于 2026-2-9 15:31:54

懂技术并乐意极积无私分享的人越来越少。珍惜

裴竹悦 发表于 2026-2-9 22:11:49

谢谢楼主提供!

翱龟墓 发表于 2026-2-10 11:21:49

谢谢分享,辛苦了
页: [1] 2
查看完整版本: 2025/2/15课堂记录