首页 > 其他分享 >琪露诺速冻青蛙----记忆化搜索与动态规划

琪露诺速冻青蛙----记忆化搜索与动态规划

时间:2024-09-11 19:36:12浏览次数:1  
标签:count 速冻 cout int max 露诺 ---- return id

洛谷P1725
记忆化搜索显然更简单,因为遍历了所有可能(包括无法实现的解),用时长,最后两个点会TLE

#include<bits/stdc++.h>
using namespace std;

int n,l,r;int v[300005];int f[300005];
int m(int id)
{
    if(id+l>n)return v[id];
    if(f[id])return f[id];
    int max=m(id+l);int t;
    for(int i=l+1;i<=r;i++)
    {
        t=m(id+i);
        if(t>max)max=t;
    }
    f[id]=max+v[id];
    return max+v[id];
}
int main()
{
    cin>>n>>l>>r;
    memset(f,0,sizeof(f));
    for(int i=0;i<=n;i++)
        cin>>v[i];
    cout<<m(0)<<endl;
    return 0;
}

线性动态规划法,从所以的分支中选择有可能实现的分支,有点剪枝的感觉

#include<bits/stdc++.h>
using namespace std;

int n,l,r;int v[200005];int f[200005];
int m()
{
    int i=l;f[0]=v[0];
    while(i<=n+r)
    {
        int begin=i-r>0?i-r:0;
        int max=f[begin];
        //cout<<begin<<" ";
        for(int j=begin;j<=i-l;j++)
            if(f[j]>max)max=f[j];
        if(max!=-10086)
            f[i]=max+v[i];
        //cout<<i<<" "<<f[i]<<endl;
        i++;
    }
    int count=f[n+1];
    for(int i=n+2;i<=n+r;i++)
        if(f[i]>count)count=f[i];
    return count;
}
int main()
{
    cin>>n>>l>>r;int flag=1<<31;
    memset(f,(-10086),sizeof(f));
    //cout<<f[1]<<endl;
    for(int i=0;i<=n;i++)
        cin>>v[i];
    cout<<m()<<endl;
    return 0;
}

标签:count,速冻,cout,int,max,露诺,----,return,id
From: https://www.cnblogs.com/Arc-ux/p/18408815

相关文章

  • Blazor开发框架Known-V2.0.10
    Known今天迎来了2.0的第11个版本,同时网站网址和板块也进行了一次升级改造,虽不完美,但一直在努力改变,之前一直在完善框架功能,忽略了文档的重要性,所以这次更新了文档和API。交流互动板块也在进行当中,尽请期待。官方网站:http://known.org.cn最新版本:V2.0.10下面是本次版本的更新......
  • 个人项目:论文查重
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标独立完成一个论文查重的个人项目;在项目开发中学习PSP表格的使用;学习使用Github仓库进行......
  • P10315 解题报告
    题目传送门题目大意:有\(n\)个石碑,每个石碑有\(0\simm-1\)共\(m\)种状态,击打一个石碑会带动其他的石碑。若当前石碑的状态是\(s\),则击打或被带动后的状态为\((s+1)\bmodm\)。现给定这\(n\)个石碑的初始状态\(s_i\)、每个石碑带动的石碑及末状态\(t_i\),求每个......
  • 手搓一个验证码
    importioimportosimportstringfromrandomimportchoice,randrange,samplefromPILimportImage,ImageDraw,ImageFontdefgenerate_captcha():img_width=58img_height=30font_size=16font_color=["black","dark......
  • java计算机毕业设计民宿出租管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着旅游业的蓬勃发展和人们对个性化旅行体验的追求,民宿作为一种新兴的住宿方式,在全球范围内迅速崛起。它以其独特的文化氛围、灵活的租赁方式及亲民......
  • 0基础开始Pine量化 止盈改进策略(附代码)
    0基础开始Pine量化止盈改进策略(附代码)可以先看前面文章里涉及到的策略https://www.cnblogs.com/Mephostopheles/p/18406658什么是止盈止盈的核心思想:当市场价格达到设定的目标后,投资者会卖出资产,防止市场波动将已经取得的利润变为损失。通过止盈,投资者在确保一定盈利的情况......
  • 校园安全Ai视频分析预警方案 CNN
    校园安全AI视频分析预警系统基于先进的人工智能技术,校园安全Ai视频分析预警系统通过对校园摄像头监控视频的实时分析和识别,对学生的行为进行智能监测和预警。系统可以识别学生打架斗殴、抽烟、翻墙、倒地以及异常聚集等行为,及时发出预警通知,帮助学校管理者快速做出反应。系统能......
  • 工地安全帽识别闸机联动 YOLOv5
    工地安全帽识别闸机联动系统基于人脸识别技术和安全帽反光衣穿戴识别技术,工地安全帽识别闸机联动系统通过对施工人员的人脸、安全帽和反光衣进行识别,判断是否符合安全要求。只有当人脸识别成功且安全帽、反光衣齐全时,闸机才会打开允许施工人员进入工地。工地安全帽识别闸机联动......
  • P5279
    这个故事告诉我们,要全心全意赞美太阳。题解#include<bits/stdc++.h>usingnamespacestd;constunsignedlonglongmod=998244353;structdata{ intdp[3][3]; inlineint*operator[](constint&x){ returndp[x]; } data(){for(inti=0;i<3;i++)for(intj=0;......
  • C#中抽象类和接⼝有什么区别?
    在C#中,抽象类(AbstractClass)和接口(Interface)都是用来定义一组规范,以便派生类或实现类遵循这些规范。尽管它们的用途相似,但它们之间存在一些关键的区别:声明方式:抽象类使用abstract关键字声明。接口使用interface关键字声明。成员的实现:抽象类可以包含有实现的成......