Luogu P3040 贝尔分享Bale Share

题目传送门:https://www.luogu.org/problem/show?pid=3040

主要思路:这道题开始我是写的爆搜,后来T了4个点,我就开始思考能不能写DP.
然后我写了一个四维的记搜,想着用空间来换时间,结果很操蛋的MLE了.
爱思考的我又开始想:能不能压一下维度呢?
我们可以发现:因为每次必须要放干草,所以我们只要知道前两个牧场的干草总数,就能求出第3个牧场的干草数.
这样空间复杂度低了不少.PS:比我基友读秒的深搜还要跑的快!
我们可以用一个数组来储存每一秒的干草总数.
状态转移方程就很舒服的出来了:
又PS:step是现在的时间,x是第一个牧场的干草数,y是第二个的.
DP[step][x][y]=max(DP[step][x+w[step]][y],DP[step][x][y+w[step],DP[step][x][y]);

附上代码:

#include <iostream>  

#define MAXN 50  
#define MAXM 510  

using namespace std;  

int w[MAXN],sum[MAXN],dp[MAXN][MAXM][MAXM];  

int n;  

int minx(int x,int y,int z)  
{  
    return min(x,min(y,z));  
}  

void init()  
{  
    int i;  
    cin>>n;  
    for(i=1;i<=n;i++)  
    {  
        cin>>w[i];  
        sum[i]=sum[i-1]+w[i];  
    }  
    return;  
}  

int search(int step,int x,int y,int z)  
{  
    z=sum[step-1]-x-y;  
    if(step==n+1)  
    {  
        return max(x,max(y,z));  
    }  
    if(dp[step][x][y]!=0)  
    {  
        return dp[step][x][y];  
    }  
    dp[step][x][y]=minx(search(step+1,x+w[step],y,z),search(step+1,x,y+w[step],z),search(step+1,x,y,z));  
    return dp[step][x][y];  
}  

void out()  
{  
    cout<<dp[1][0][0];  
    return;  
}  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值