HDU 5673 Robot(默慈金数)

链接

Robot - http://acm.hdu.edu.cn/showproblem.php?pid=5673

分析

  • 从原点出发回到原点,且不会出现在原点左侧

  • 从开始到任意时刻,向右步数不少于向左步数,且最终向右、向左步数相等;

  • 若共 n n n步,向右和向左各 k k k步,则不动有 n − 2 k n-2k n2k步,因此, C n n − 2 k × C k , k ∈ { 0 , 1 , 2 , … , ⌊ n 2 ⌋ } C_n^{n-2k} \times C_k,k\in\{0,1,2,…,\lfloor\frac{n}{2}\rfloor\} Cnn2k×Ckk{0,1,2,2n}

  • 这是一个 ± 1 、 0 \pm1、0 ±10 模型,其中 ± 1 \pm1 ±1 满足卡特兰模型

  • 结论 M n = C n n × C 0 + C n n − 2 × C 1 + … + C n n − 2 × k × C k + … + C n n − 2 × ⌊ n 2 ⌋ × C ⌊ n 2 ⌋ M_n= C_n^n \times C_0 + C_n^{n-2} \times C_1 + … + C_n^{n-2 \times k} \times C_k+ …+ C_n^{n-2 \times \lfloor\frac{n}{2}\rfloor} \times C_{\lfloor\frac{n}{2}\rfloor} Mn=Cnn×C0+Cnn2×C1++Cnn2×k×Ck++Cnn2×2n×C2n

  • C k C_k Ck为卡特兰数, M n M_n Mn称为默慈金数(Motzkin Number)

    • 在一个圆上的n个点间画出彼此不相交的弦的全部方法的总数【允许某些或全部点不连线】

      • 4个点,9种连接方法在这里插入图片描述
      • 5个点,21种连接方法在这里插入图片描述
    • 在一个“网格”上,若限定“每步只能向右移动一格(可以向右上、右下横向向右),并禁止移动到y=0以下的地方”,则以这种走法用n步从(0,0)移动至(n,0)的可能形成的路径的总数为n的默慈金数。
      在这里插入图片描述

    • 最初的几个默慈金数如下(OEIS中的数列A001006):1, 2, 4, 9, 21, 51, 127, 323, 835, 2188, 5798, 15511, 41835, 113634, 310572, 853467, 2356779, 6536382, 18199284, 50852019, 142547559, 400763223, 1129760415, 3192727797, 9043402501, 25669818476, 73007772802, 208023278209, 593742784829

    • 递推式 M n + 1 = M n + ∑ i = 0 n − 1 M i × M n − 1 − i = 2 n + 3 n + 3 M n + 3 n n + 3 M n − 1 M_{n+1}=M_n+\sum_{i=0}^{n-1}M_i \times M_{n-1-i}=\frac{2n+3}{n+3}M_n+\frac{3n}{n+3}M_{n-1} Mn+1=Mn+i=0n1Mi×Mn1i=n+32n+3Mn+n+33nMn1

  • 此外,本题取模运算涉及费马小定理逆元

代码

默慈金数

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MXN 1000010
#define MOD 1000000007
ll mtz[MXN] =  {0, 1, 2}; // 默慈金数
ll inv(ll base, int power){ // 快速幂求逆元
	ll res = 1;
	while(power){
		if(power & 1) res = res*base%MOD;
		base = base*base%MOD;
		power >>= 1;
	}
	return res;
}
void init(){ // 打表
    for(int i = 2; i < MXN; i++){
        mtz[i+1] = (((2*i+3)*mtz[i] + 3*i*mtz[i-1])%MOD*inv(i+3, MOD-2))%MOD;
	}
}
int main(){
    int T, n;
	init();
	cin >> T;
    while(T--){
        cin >> n;
		cout << mtz[n] << endl;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jpphy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值