做题打卡第八天

这篇博客记录了作者在做题打卡第八天时,练习贪心算法解决了一道关于最近公共祖先(LCA)的游戏题目。题目要求在给定的树结构中,对于系统选择的一组点,计算每对点的最近公共祖先与指定点的关系,并对答案取模。作者虽然学习过LCA,但仍然求助于他人来解答这个问题。

今天练了贪心算法
发道难题
Imakf 是一个小蒟蒻,他最近刚学了 LCA,他在手机 APPstore 里看到一个游戏也叫做 LCA 就下载了下来。

题目描述
这个游戏会给出你一棵树,这棵树有 NN 个节点,根结点是 RR ,系统会选中 MM 个点 P_1,P_2…P_MP
1

,P
2

…P
M

,要Imakf 回答有多少组点对 (u_i,v_i)(u
i

,v
i

) 的最近公共祖先是 P_iP
i

。Imakf 是个小蒟蒻,他就算学了 LCA 也做不出,于是只好求助您了。

Imakf 毕竟学过一点 OI,所以他要求您把答案模 (10^9+7)(10
9
+7)。

输入格式
第一行 N , R , MN,R,M

此后 N-1N−1 行 每行两个数 a,ba,b 表示 a,ba,b 之间有一条边。

此后 11行,共 MM 个数,表示P_iP
i

题面链接:https://www.luogu.com.cn/problem/P5002

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define maxn (100000+3)
#define mod (1000000007)

long long head[maxn],tot;
struct edge {
    long long node,next;
} h[maxn<<1];
void addedge(long long u,long long v) {
    h[++tot].next=head[u];
    head[u]=tot;
    h[tot].node=v;
}
long long n,r,m;
long long son[maxn],fa[maxn],ans[maxn];
void dfs(long long now,long long f) {	//树剖常规操作,预处理size,fa,son
    fa[now]=f;
    son[now]=1;
    for(register long long i=head[now]; i; i=h[i].next) {
        long long d=h[i].node;
        if(d==f) continue;
        dfs(d,now);
        son[now]+=son[d];
    }
}
long long solve(long long now) {
	if(ans[now])	return ans;
    long long sigma=0,chengji=0;
    for(register long long i=head[now]; i; i=h[i].next) {
        long long d=h[i].node;
        if(d==fa[now]) continue;
        sigma+=son[d];
        sigma%=mod;
        chengji+=son[d]*son[d];
        chengji%=mod;
    }
    return ans[now]=(son[now]*2%mod-1+sigma*sigma%mod-chengji+mod)%mod;
}
int main() {
    scanf("%lld%lld%lld",&n,&r,&m);
    for(register long long i=1,u,v; i<n; ++i) {
        scanf("%lld%lld",&u,&v);
        addedge(u,v);
        addedge(v,u);
    }
    dfs(r,0);
    for(register long long i=1,p; i<=m; ++i) {
        scanf("%lld",&p);
        printf("%lld\n",solve(p));
    }
    return 0;
}
本课题设计了一种利用Matlab平台开发的植物叶片健康状态识别方案,重点融合了色彩与纹理双重特征以实现对叶片病害的自动化判别。该系统构建了直观的图形操作界面,便于用户提交叶片影像并快速获得分析结论。Matlab作为具备高效数值计算与数据处理能力的工具,在图像分析与模式分类领域应用广泛,本项目正是借助其功能解决农业病害监测的实际问题。 在色彩特征分析方面,叶片影像的颜色分布常与其生理状态密切相关。通常,健康的叶片呈现绿色,而出现黄化、褐变等异常色彩往往指示病害或虫害的发生。Matlab提供了一系列图像处理函数,例如可通过色彩空间转换与直方图统计来量化颜色属性。通过计算各颜色通道的统计参数(如均值、标准差及主成分等),能够提取具有判别力的色彩特征,从而为不同病害类别的区分提供依据。 纹理特征则用于描述叶片表面的微观结构与形态变化,如病斑、皱缩或裂纹等。Matlab中的灰度共生矩阵计算函数可用于提取对比度、均匀性、相关性等纹理指标。此外,局部二值模式与Gabor滤波等方法也能从多尺度刻画纹理细节,进一步增强病害识别的鲁棒性。 系统的人机交互界面基于Matlab的图形用户界面开发环境实现。用户可通过该界面上传待检图像,系统将自动执行图像预处理、特征抽取与分类判断。采用的分类模型包括支持向量机、决策树等机器学习方法,通过对已标注样本的训练,模型能够依据新图像的特征向量预测其所属的病害类别。 此类课题设计有助于深化对Matlab编程、图像处理技术与模式识别原理的理解。通过完整实现从特征提取到分类决策的流程,学生能够将理论知识与实际应用相结合,提升解决复杂工程问题的能力。总体而言,该叶片病害检测系统涵盖了图像分析、特征融合、分类算法及界面开发等多个技术环节,为学习与掌握基于Matlab的智能检测技术提供了综合性实践案例。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值