线性dp P4310-绝世好题/P4933 大师【日记】

1.绝世好题(P4310)

绝世好题icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P4310

比较考验思维的一道题目,码量和理解难度都不大,重在思维。

一开始看错题,以为是求子串(还在想为啥考的纯位运算+枚举,where is dp

后面发现是求子序列,犯难,只能想到n方的方法

于是乎只好打开题解,这不是传统dp!

代码如下(这是我开始的写法,洛谷能AC,但是用一组 1 1 2 2 数据我感觉就能hack掉,在这组代码里,我并没有更新k,导致后面会出错)

//时间复杂度:O(An) A=31
#include<iostream>
using namespace std;
int f[35];//奇怪的选择了这样一种dp方式,存在前后的比较,但不是f[N] (N=1e5+10)int main(){int n;cin>>n;int b;int k=0;for(int i=1;i<=n;++i){cin>>b;for(int j=0;j<=30;++j){//注意不能用31 不然会爆intif(((1<<j)&b)) k=max(f[j]+1,k);}for(int j=0;j<=30;++j){if(((1<<j)&b)) f[j]=max(k,f[j]);//这里要判断是否符合的原因是 如果}}cout<<k<<endl;//题解是在每一步比较了ans,我想了想把这一步也优化掉了,因为k每次都是会被更新到最大return 0;
}

下面是正解,在每一次遍历都重置了k,避免了k对后方的影响,同时,可以模拟得知,在前面的状态如能能与后面串联,将会通过k=max(f[j]+1,k)的形式,将这个最大值传下来,共同使用这个最大值

#include<iostream>
using namespace std;
int f[32];int main(){int n;cin>>n;int b,k,ans=0;for(int i=1;i<=n;i++){scanf("%d",&b);k=1;for(int j=0;j<=30;j++)if((1<<j)&b) k=max(f[j]+1,k);for(int j=0;j<=30;j++)if((1<<j)&b) f[j]=max(f[j],k);ans=max(ans,k);}printf("%d\n",ans);return 0;
}

2.P4933 大师

传送门icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P4933这道题我想了好一会儿,想到用创建一个f[1000][40000]大小的数组用来存每一个位置的差,这样一来,用一个n方复杂度的算法就可以全部遍历一遍。这种想法在我看到数据后戛然而止,于是直到最后我都没有再出现其他的思路。但是没有想到,f[1000][40000]占用内存并不多。

写题的时候学习了一下空间大小的计算方式

(图示样例来自csdn的某个博客保存的,有一定时间了想不太起来)

但大致就是这个计算方式,这里512MB的容量明显是绰绰有余的

代码如下:

#include<iostream>
#include<vector>
using namespace std;
int f[1005][40000+10];
const int k=1e4;
const int p=998244353;int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;vector<int> a(n+1);for(int i=1;i<=n;++i) cin>>a[i];int ans=0;for(int i=1;i<=n;++i){ans+=1;for(int j=1;j<=i-1;++j){f[i][a[i]-a[j]+k]+=f[j][a[i]-a[j]+k]+1;
//先理解下面的,这里就好理解了,就是连续相同数字,给后面的是不相同的,因为种类只跟下标有关f[i][a[i]-a[j]+k]%=p;ans+=f[j][a[i]-a[j]+k]+1;
//这一行单独拿出来加的含义就是不受相同数字的影响,因为f[i][a[i]-a[j]+k]时刻变化。
//举个例子
//1 1 2是前提,现在加上一个3则,可以得到 1 2 3   1 2 3   2 3。f[i][a[i]-a[j]+k]就是以2为结束点,的12  补充上的1其实就是前面不存在的单独拉出来一个2(因为单独2在for的第一行久单独讨论了)ans%=p;}}cout<<ans<<endl;return 0;
}

这里用一个比较典型的例子来助于理解

例子:0 1 1 2 3

只对每一个位置的公差1做讨论,可以发现是 0 1 1 4 5(解释在代码里)

多模拟模拟,该题还是有思维难度的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue iis 配置

下载安装两个IIS模块 1). 传送门&#xff1a;URL Rewrite 2). 传送门&#xff1a;Application Request Routing 注 : 只有在 服务器的主页 有Application Request Routing 部署VUE网站 生成网站 在VUE项目打包生成出发布文件,即文件夹 dist,此处忽略 复制到你需要存放网站的…

Skywalking官方的实战模拟项目Live-Demo

Skywalking 官方的实战模拟项目Live-Demo Live-Demo 是 Skywalking 官方的实战模拟项目&#xff0c;其中包含4个子模块项目 projectA访问projectB、projectC两个SpringBoot项目 projectB访问本地的H2数据库 projectC访问www.baidu.com并同时向一台Kafka消息队列写入数据 proje…

入门指南:使用uni-app构建跨平台应用

入门指南&#xff1a;使用uni-app构建跨平台应用 &#x1f31f; 前言 欢迎来到我的小天地&#xff0c;这里是我记录技术点滴、分享学习心得的地方。&#x1f4da; &#x1f6e0;️ 技能清单 编程语言&#xff1a;Java、C、C、Python、Go前端技术&#xff1a;Jquery、Vue.js、R…

六、软考-系统架构设计师笔记-软件工程基础知识

1、软件工程 软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护&#xff0c;即将工程化应用于软件并对上述方法的研究。 软件要经历从需求分析、软件设计、软件开发、运行维护&#xff0c;直至被淘汰这样的全过程&#xff0c;这个过程称为软件的生…

Android使用OpenGL和FreeType绘制文字

Open GL主要是渲染图形的&#xff0c;有时候需要绘制文字&#xff0c;网上搜了一下&#xff0c;基本思路都是把文字转成位图&#xff0c;再使用Open GL纹理进行渲染。加载纹理在特定阶段才能成功&#xff08;在onSurfaceCreated中加载&#xff09;&#xff0c;这样就无法动态的…

[论文笔记] Open-Sora 1、sora复现方案概览

GitHub - hpcaitech/Open-Sora: Unofficial implementation of OpenAIs Sora Open-Sora已涵盖: 提供完整的Sora复现架构方案,包含从数据处理到训练推理全流程。 支持动态分辨率,训练时可直接训练任意分辨率的视频,无需进行缩放。 支持多种模型结构。由于Sora实际模型结构未…

部署LVS负载均衡架构

目录 一、ipvsadm 工具 二、NAT模式下部署LVS负载均衡 1、部署NFS共享存储服务器 1.1 安装NFS软件 1.2 新建共享目录和站点文件 1.3 设置共享策略 2、部署节点服务器1 2.1 安装并启动nginx软件 2.2 挂载共享目录到网页站点目录 2.3 修改网关 3、部署节点服务器2 3.…

Python爬虫入门教程

一、爬虫的概念 爬虫是模拟浏览器发送请求&#xff0c;获取响应 二、爬虫的流程 url—>发送请求&#xff0c;获取响应—>提取数据—》保存发送请求&#xff0c;获取响应—>提取url 爬虫要根据当前url地址对应的响应为准 &#xff0c;当前url地址的elements的内容和…

在ABAP中创建一个简单的守护进程

原文地址&#xff1a;Create a simple Daemon in ABAP 目录 一、ABAP语言中的守护进程是什么&#xff1f;二、ABAP 守护进程框架 (ADF)三、ABAP 守护进程类四、创建一个简单的ABAP守护进程步骤1&#xff1a;创建一个新的ABAP Daemon类步骤2&#xff1a;实现ON_ACCEPT方法第三步…

「滚雪球学Java」:GUI编程(章节汇总)

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

Kosmos-1: 通用接口架构下的多模态大语言模型

Kosmos-1: 通用接口架构下的多模态大语言模型 FesianXu 20230513 at Baidu Search Team 前言 在大规模语言模型&#xff08;Large Language Model, LLM&#xff09;看似要带来新一番人工智能变革浪潮之际&#xff0c;越来越多尝试以LLM作为通用接口去融入各种任务的工作&#…

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复&#xff0c;初步分析是vue发布3.4版本以后引起的兼容性问题。 问题截图&#xff1a; 1.isFucntion is not function&#xff0c;是由于vue升级后众多插件版本不匹配造成的问题 2.弹框…

计算机中msvcp140.dll,丢失怎么修复与解决

一、msvcp140.dll20个软件环境 msvcp140.dll文件是许多软件运行环境的组成部分&#xff0c;通常与Microsoft Visual C Redistributable关联。以下是可能使用该文件的软件环境&#xff1a; 微软办公软件&#xff1a;如Microsoft Office套件&#xff0c;包括Word、Excel、Power…

Python给图片加水印

受到“手动给证件加文字太麻烦”的感触&#xff0c;想用Python来实现给图片加水印&#xff0c;这不方便多了。 这里使用PIL模块&#xff1a; from PIL import Image from PIL import ImageFont from PIL import ImageDrawimg_t Image.open(cat.jpg) img_size_t img_t.size…

OJ:循环队列

622. 设计循环队列 - 力扣&#xff08;LeetCode&#xff09; 思路 思路&#xff1a;首先循环队列的意思是&#xff1a;空间固定&#xff0c;就是提前开辟好&#xff0c;满了就不能插入了&#xff0c;但是删除数据后仍有空间&#xff0c;删除循环队列里面的数据后&#xff0c;保…

Apache ECharts数据可视化技术

介绍 官方地址:Apache ECharts 快速入门案例echarts.init //初始化方法 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件 --><script src"echart…

基于JavaWEB SpringBoot婚纱影楼摄影预约网站设计和实现

基于JavaWEB SSM SpringBoot婚纱影楼摄影预约网站设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

《The Art of InnoDB》第二部分|第5章:深入结构-内存结构-缓冲区Buffer Pool

5.1 缓冲区Buffer Pool 目录 5.1 缓冲区Buffer Pool 5.1.1 Buffer Pool 结构 5.1.2 LRU List 5.1.3 Page Hash 5.1.4 Flush List 5.1.5 Change Buffer 5.1.6 小结 5.1.1 Buffer Pool 结构 Buffer Pool(缓冲池)在InnoDB存储引擎中是一个包罗万象的概念。它主要用于缓…

Java Swing游戏开发学习8

内容来自RyiSnow视频讲解 上一节提到的bug&#xff0c;不知道有没有人发现&#xff1f; 在播放音乐和音效的时候使用的是同一个clip对象&#xff0c;播放背景音乐在前&#xff0c;后续播放音效&#xff0c;clip对象就被覆盖了&#xff0c;因此导致调用停止播放背景音乐的时候&a…

计算机组成原理之机器:总线

计算机组成原理之机器 笔记来源&#xff1a;哈尔滨工业大学计算机组成原理&#xff08;哈工大刘宏伟&#xff09; Chapter2&#xff1a;总线 2.1 总线的基本概念 1.为什么需要总线&#xff1f;有几百个部件需要连接进行信息传输 2.什么是总线&#xff1f;总线是连接各个部件…