bzoj1002 分类: bzoj 2015-...

本文介绍了一种使用动态规划(DP)解决特定数列问题的算法实现,通过递推公式fi=3*fi-1-2*fi-2+2进行计算。代码中定义了BigNum结构体用于处理大整数运算,实现加、减、乘操作,并通过主函数读取输入n,计算并打印出数列的第n项。

DP , fi=3fi12fi2+2。我并不会证明呢。。。


#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<cstring>
#include<map>
#include<string>
#include<stack>
#include<queue>
#include<vector>
#include<utility>
#include<iostream>
#include<algorithm>

const int maxl = 30, maxn = 105, Base = 1e4;

struct BigNum
{
    int num[maxl], l;
#define adj(x) ((-num[x])/Base + 1)

    void digit(int t)
    {
        if(num[t] < 0)
            num[t+1] -= adj(t), num[t] += adj(t)*Base;
        if(num[t] > Base)
            num[t+1] += num[t]/Base, num[t] %= Base;

    }
    BigNum operator *(const int b)
    {
        BigNum ret = (*this);
        if(!l || !b){ret.l = 0; return ret;}
        for(int i = 1; i <= l; i++) ret.num[i] *= b;
        for(int i = 1; i <= l; i++) ret.digit(i);
        while(ret.num[ret.l+1]) ++ret.l, ret.digit(ret.l);   
        return ret;     
    }
    void operator +=(const BigNum add)
    {
        l = std::max(l, add.l);
        for(int i = 1; i <= l; i++) num[i] += add.num[i];
        for(int i = 1; i <= l; i++) digit(i);
        if(num[l+1]) l++;   
    }
    void operator +=(const int add)
    {
        num[1] += add;
        for(int i = 1; i <= l; i++)
        {
            if(num[i] >= Base)
                digit(i);
            else
                break;  
        }
        if(num[l+1]) l++;   
    }
    void operator -=(const BigNum mus)
    {
        int nl = 0;
        l = std::max(l, mus.l);
        for(int i = 1; i <= l; i++) num[i] -= mus.num[i];
        for(int i = 1; i <= l; i++) {digit(i); if(num[i]) nl = i;}
        l = nl;
    }
    void prt()
    {
        printf("%d",num[l]);
        for(int i = l-1; i >= 1; i--)
            printf("%04d", num[i]);
    }
}emp, dp[maxn];

int n;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("bzoj1002.in","r",stdin);
    freopen("bzoj1002.out","w",stdout);
#endif

    std::cin >> n;

    dp[1].num[1] = dp[1].l = dp[2].l = 1, dp[2].num[1] = 5;
    for(int i = 3; i <= n; i++)
        dp[i] += dp[i-1]*3, dp[i] -= dp[i-2], dp[i] += 2;

    dp[n].prt();

#ifndef ONLINE_JUDGE
    fclose(stdin);
    fclose(stdout);
#endif
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/dashgua/p/4722981.html

胚胎实例分割数据集 一、基础信息 • 数据集名称:胚胎实例分割数据集 • 图片数量: 训练集:219张图片 验证集:49张图片 测试集:58张图片 总计:326张图片 • 训练集:219张图片 • 验证集:49张图片 • 测试集:58张图片 • 总计:326张图片 • 分类类别: 胚胎(embryo):表示生物胚胎结构,适用于发育生物学研究。 • 胚胎(embryo):表示生物胚胎结构,适用于发育生物学研究。 • 标注格式:YOLO格式,包含实例分割的多边形标注,适用于实例分割任务。 • 数据格式:图片来源于相关研究领域,格式为常见图像格式,细节清晰。 二、适用场景 • 胚胎发育AI分析系统:构建能够自动分割胚胎实例的AI模型,用于生物学研究中的形态变化追踪和量化分析。 • 医学与生物研究:在生殖医学、遗传学等领域,辅助研究人员进行胚胎结构识别、分割和发育阶段评估。 • 学术与创新研究:支持计算机视觉与生物医学的交叉学科研究,推动AI在胚胎学中的应用,助力高水平论文发表。 • 教育与实践培训:用于高校或研究机构的实验教学,帮助学生和从业者掌握实例分割技术及胚胎学知识。 三、数据集优势 • 精准与专业性:实例分割标注由领域专家完成,确保胚胎轮廓的精确性,提升模型训练的可靠性。 • 任务专用性:专注于胚胎实例分割,填补相关领域数据空白,适用于细粒度视觉分析。 • 格式兼容性:采用YOLO标注格式,易于集成到主流深度学习框架中,简化模型开发与部署流程。 • 科学价值突出:为胚胎发育研究、生命科学创新提供关键数据资源,促进AI在生物学中的实际应用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值