pku1734 Musical Theme

从零到一:基于Docker的Web应用全栈部署实战指南 在现代软件开发中,服务器环境搭建与容器化部署是构建稳定、可扩展线上服务的关键技术。Docker作为主流的容器化技术,通过将应用及其依赖打包成标准化的镜像,从根本上解决了开发、测试与生产环境的一致性问题,实现了高效的依赖隔离与资源管理。这一技术为微服务架构、持续集成/持续部署(CI/CD)等工程实践提供了坚实基础,极大地提升了软件交付效率与系统可靠性。本文以典型的Web应用为例,结合服务器环境搭建与Docker容器化部署两大核心环节,详细演示了从云服务器初始化、Docker环境配置、应用容器化编排,到Ngin 阅读详情

Description


我们用N(1 <= N <=5000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,每个数表示钢琴上的一个键。很不幸这种表示旋律的方法忽略了音符的时值,但这项编程任务是关于音高的,与时值无关。

许多作曲家围绕一个重复出现的“主题”来构建乐曲。在我们的乐曲表示法中,“主题”是整个音符序列的一个子序列,它需要满足如下条件:

长度至少为5个音符
在乐曲中重复出现(可能经过转调,见下)
重复出现的同一主题不能重叠
“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值。
给定一段乐曲,计算其中最长主题的长度(即音符数)。

Input
输出文件的第一行包含整数N。下面的每一行(最后一行可能除外)包含20个整数,表示音符序列。最后一行可能少于20个音符。

Output
30
25 27 30 34 39 45 52 60 69 79 69 60 52 45 39 34 30 26 22 18
82 78 74 70 66 67 64 60 65 80

Sample Input
输出文件应只含一个整数,即最长主题的长度。如果乐曲中没有主题,那么输出0。
Sample Output
5
HINT
(这个长度为5的主题是输入文件中第一行的最后5个音符和第二行开头5个音符)



思路:根据题目意思,先求出每两个音符之间的差,然后就可用后缀数组做了。题目意思就变为:给定一个字符串,求它的最长不可重叠子串的长度



还是二分,按height分组像这样,对于字符串aabaaaab,要保证每组间的后缀两两之间的最长公共前缀的长度大于等于二分的长度,即当height[i]>lim时

就把i和i-1分成不同的组


然后就要保证一个组里至少有两个公共子串位置不重叠。那么只要求出每个组最大的sa和最小的sa,如果他们的差超过lim,即该子串的长度,那么他们在原串中就是不重叠的,return true

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxl=10000;
int rank[maxl+10],trank[maxl+10],sa[maxl+10],tsa[maxl+10],sum[maxl+10],n,s[maxl+10],last,now,ans=-1,h[maxl+10];

void sorts(int j){
	memset(sum,0,sizeof(sum));
	for (int i=1;i<=n;i++) sum[rank[i+j]]++;
	for (int i=1;i<=n;i++) sum[i]+=sum[i-1];
	for (int i=n;i;i--) tsa[sum[rank[i+j]]--]=i;
	
	memset(sum,0,sizeof(sum));
	for (int i=1;i<=n;i++) sum[rank[tsa[i]]]++;
	for (int i=1;i<=n;i++) sum[i]+=sum[i-1];
	for (int i=n;i;i--) sa[sum[rank[tsa[i]]]--]=tsa[i];
}

void getsa(){
	for (int i=1;i<=n;i++) trank[i]=s[i];
	for (int i=1;i<=n;i++) sum[trank[i]]++;
	for (int i=1;i<=200;i++) sum[i]+=sum[i-1];
	for (int i=n;i>=1;i--) sa[sum[trank[i]]--]=i;
	rank[sa[1]]=1;
	for (int i=2,p=1;i<=n;i++){
		if (trank[sa[i]]!=trank[sa[i-1]]) p++;
		rank[sa[i]]=p;
	}
	for (int j=1;j<=n;j*=2){
		sorts(j);
		trank[sa[1]]=1;
		for (int i=2,p=1;i<=n;i++){
			if (rank[sa[i]]!=rank[sa[i-1]]||rank[sa[i]+j]!=rank[sa[i-1]+j]) p++;
			trank[sa[i]]=p;
		}
		memcpy(rank,trank,sizeof(rank));
	}
}

void geth(){
	for (int i=1,j=0;i<=n;i++){
		if (rank[i]==1) continue;
		while (s[i+j]==s[sa[rank[i]-1]+j]) j++;
		h[rank[i]]=j;
		if (j) j--;
	}
}

bool check(int lim){
	int maxs=0,mins=100000000;
	for (int i=2;i<=n;i++){
		if (h[i]<lim) {maxs=0,mins=100000000;}
		//printf("%d %d\n",i,sa[i]);
		maxs=max(maxs,sa[i]);
		mins=min(mins,sa[i]);
		if (maxs-mins>=lim) return true;
	}
	return false;
}

int main(){
	scanf("%d",&n);
	scanf("%d",&last);
	n--;
	for (int i=1;i<=n;i++){
		scanf("%d",&now);
		s[i]=now-last+88;
		last=now;
	}

	getsa();
	geth();	
	/*for (int i=1;i<=n;i++) printf("%d ",s[i]);
	printf("\n");
	for (int i=1;i<=n;i++) printf("%d\n",h[i]);
	printf("\n");*/

	int l=4,r=2500,mid=(l+r)>>1;
	while (l<=r){
		//printf("%d\n",mid);
		if (check(mid)){
			ans=mid;
			//printf("ans%d\n",ans);
			l=mid+1;
		}
		else r=mid-1;
		mid=(l+r)>>1;
	}
	printf("%d\n",ans+1);
	//for (;;);
	return 0;
}

Python RPA 流程自动化快速上手 阅读详情

相关推荐

深入AutoSar诊断协议栈:当ECU报故障时,FiM模块是如何悄悄“阉割”功能的?

本文深入解析AutoSar诊断协议栈中FiM模块的工作原理,揭示ECU报故障时如何通过Inhibition Counter和位运算技术实现功能静默降级。探讨FiM在故障处理链中的关键角色,包括功能权限仲裁、降级策略执行和系统安全兜底,并分享实战调试技巧与进阶应用案例。

weixin_30673611的博客 174

Docker

Docker 1. Docker概述 1.1 Docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻 量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker应用场...

Naker_的博客 760

告别臃肿!保姆级教程:用NTLite深度精简Win10,打造你的专属纯净系统(附完整组件移除清单)

本文提供了一份详细的NTLite教程,帮助用户深度精简Windows10系统,移除冗余组件并优化性能。从准备工作到组件移除清单,再到系统配置优化和无人值守安装,逐步指导用户打造专属纯净系统。附完整组件移除清单和实战经验,确保系统稳定高效运行。

weixin_30945039的博客 850

docker容器部署web应用

docker容器部署web应用 文章目录docker容器部署web应用前言一、构建web产品的镜像包1.1web部署文件准备1.2Centos基础镜像准备1.3Dockerfile的编写1.4打包镜像并导出1.5导入镜像二、docker容器下web日常应用以及维护2.1运行2.2其他有关docker的命令行 前言 本文仅仅是针对我司web产品进行部署思路说明 一、构建web产品的镜像包 查看docker版本 [root@shigj V80sp2Seeyon]# docker --version

海贼王的博客 2935

Tesseract OCR 字库训练教程:提高识别率进阶版

通过 Tesseract 字库训练,你可以提高 OCR 对特定文本或字体的识别能力。训练过程包括准备训练数据、生成标签文件、运行训练工具,以及将训练结果集成到实际项目中。虽然训练过程需要一些时间和精力,但对于需要高精度文本识别的场景来说,字库训练是非常有效的提升识别率的方法。

小蜗牛的珍贵百宝箱 1865

Voicebox本地部署:模型下载与离线模式实战指南

在本地语音处理场景中,模型下载失败和离线运行需求是开发者最常遇到的两大难题。理解语音工具的本地推理原理,关键在于掌握模型文件与程序逻辑的分离管理:模型独立下载,程序负责推理,输出留在本机。这种架构带来显著的技术价值——数据不出本地、不依赖公网、批量任务不中断。无论是语音识别转写、语音合成,还是集成到自动化脚本中,本地离线模式都能在隐私敏感或网络不稳定环境下稳定运行。对开发者而言,先解决模型文件的完整获取,再验证离线启动流程,就能绕过“无法下载模型”的常见坑。本文从环境准备、模型放置、服务启动到接口调用,提供

weixin_29048309的博客 305

Docker学习笔记

docker是一个用来装应用的容器,任何程序都可放在docker中。 1.1 docker思想 1.1.1 集装箱 没有集装箱之前运输货物,东西零散容易丢失,有了集装箱之后货物不容易丢失,有了docker的集装箱可以保证我们的程序不管运行在哪不会缺东西. 1.1.2 标准化 运输方式 docker运输东西有一个超级码头,任何地方需要货物都由鲸鱼先送到超级码头,然后再由鲸鱼从超级码头把货物送到目的地去.对应的技术来说,比如我们要把台式机的应用部署到笔记本上,我们可能选择用QQ发过去或者用U盘拷过去,doc

zhouxuan612的博客 483

CosyVoice语音合成使用教程

CosyVoice是一款开源的语音合成工具,它基于深度学习模型,能够生成高度逼真的语音内容。该工具支持多种语言的语音生成,包括中文、英文、日文、粤语和韩语。CosyVoice的亮点在于它对生成语音情感和韵律的精细控制,通过富文本或自然语言输入,可以显著提升合成语音的情感表达能力。CosyVoice提供了多种预训练模型,用户可以根据需求选择合适的模型。:基底模型,适用于一般语音合成任务。:经过SFT微调的模型,适用于特定音色和情感的语音合成。:支持Instruct微调的模型,适用于自然语言控制的语音合成。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 4442

超详细的docker部署Web应用

使用docker搭建web环境 拉取镜像 $ docker pull ubuntu:18.04 创建容器 创建容器并挂载共享文件夹。 $ docker run -v /run/media/duapple/Data/project:/media/shared -itd --name web_server ubuntu:18.04 /bin/bash 启动镜像 $ docker exec -it web_server /bin/bash 创建普通用户 # useradd -d /home/duapple

duapple的博客 2858

基于Cesium实现,动态水面+大坝排水动画

一、绘制面状水域,使用水波纹理,进行渲染,水体透明,可以看到底色。三、使用粒子系统,将喷泉改变方向,加上重力设置,实现排水动画。二、绘制线状三维体,用作模拟大坝拦截效果。四、最后,模拟水位上升,进行淹没分析,

一醉千秋的专栏 1418

使用 MATLAB/Simulink 构建一个 核电站汽轮机与发电机协调控制系统 的仿真模型

在核电机组中,汽轮机-发电机系统是将核能最终转化为电能的关键环节。与火电机组不同,核反应堆的热惯性大、功率调节慢,因此汽轮机的控制策略需与反应堆特性相匹配,实现安全、稳定、高效的能量转换。维持发电机输出功率/频率稳定(响应电网调度)调节汽轮机进汽压力(匹配一回路蒸汽供应)实现“堆-机协调控制”保障机组在启停、变负荷、甩负荷等工况下的安全性本教程将带你使用构建一个核电站汽轮机与发电机协调控制系统汽轮机调速系统(调门控制)建模发电机与电网接口建模(同步机)

xiaoheshang_123的博客 188

基于Docker容器的web应用系统部署

模块 使用技术 备注gpmall.sql Mysql 网站的数据库dist目录 Nginx 网站的前端项目gpmall-shopping web项目 8081端口,商品/购物车/首页渲染等交互gpmall-user 8082端口,提供用户相关的交互,如登录、注册、个人中心等user-provider 后端服务 提供用户相关服务shopping-provider 提供购物车、推荐商品、商品等服务。

cbc_19的博客 1610

ROS入门教程(七)—— Gazebo与RViz联合仿真

通过Gazebo与RViz联合仿真实现机器人运动。

吾门的博客 1万+

PKU1743(Musical Theme)求不可重叠最长重复子串(后缀数组+二分)

/********************************************** 题目大意: 给出一个旋律,用n个数字[1,88]表示其音符,求它的最长的主题长度; 一个旋律的主题是一段至少出现过两次的不重叠音乐片段; 重复出现也包括一段音乐全体加上某个数后再次出现(如1 2 3 4 5和5 6 7 8 9为同一个音乐片段,全部+4); 主题长度至少为5,无解输出0; 算法分析:

始往流离,终彼成章。 2336

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

poj 1743 Musical Theme (不可重叠最长重复子串)

Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 19171   Accepted: 6575 Description A musical melody is represented as a sequence of N (1<=N<=2000

u013023344的专栏 391

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

如何用 Docker 轻松部署你的 Web 应用——从零到云端的完整指南

本文是一篇面向初学者的Docker技术指南,通过生动比喻和实操演示,介绍如何使用Docker部署Web应用。文章首先解释Docker的核心概念(镜像与容器),然后详细展示从编写Dockerfile到构建镜像、运行容器的完整流程,并提供了阿里云部署的实践示例。文中强调高质量技术文档应具备准确性、易读性和实用性三大要素,最后附有术语对照表和Dockerfile指令速查表,帮助读者快速掌握容器化技术,解决"环境不一致"的部署难题。

2401_85390585的博客 606

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

从零开始Docker部署Web服务

从零开始部署Docker部署Web服务 工作中遇到了需要docker部署一个web服务,供内部调用,而自己以前没有接触过docker,自己研究学习一天搭建成功。现在自己在本地VM虚拟机上, 通过Flask做个helloworld的项目,记录下完整的操作步骤。 准备工作 一. 下载安装docker, 我使用的Ubuntu18.04的虚拟机 # 国内daocloud一键安装命令 curl -sSL https://get.daocloud.io/docker | SH 二. 后期我们要拉取一些镜像,设置一个镜

Melon_LPC的博客 2402

保姆级教程:用Docker Compose一键部署你的第一个Web应用(附常见错误排查)

本文提供了一份详细的Docker Compose教程,指导开发者如何一键部署第一个Web应用,包括环境准备、Dockerfile编写、服务编排及常见错误排查。特别针对端口冲突、权限问题等常见问题提供了解决方案,帮助开发者快速掌握容器化部署技术。

weixin_33737774的博客 346

Java Web 应用 Docker 化部署全流程指南

如果您使用的是云服务器(如 AWS、Azure 或阿里云),许多云平台都提供了预装 Docker 的镜像,您可以直接选择这些镜像以节省安装时间。这一步骤不仅可以验证应用本身的正确性,还能帮助您发现潜在的问题,从而避免在容器化过程中遇到不必要的麻烦。:如果您的项目依赖于外部库或资源文件(如配置文件、静态资源等),请确保这些文件也被正确打包到最终的 JAR 文件中。:Docker 是整个流程的核心工具,请确保您的开发环境或服务器上已正确安装 Docker。为了减小最终镜像的大小,可以使用多阶段构建。

1578

Docker 部署 web 项目

本篇文章主要介绍将一个完整的 Web 项目(数据库、后端、前端)部署到 Docker 中的流程和步骤项目是前后端分离的,后端使用 SpringBoot + JKD17+MySQL 8;前端使用 Vue + webpack。服务器是跑在 WSL2 上的 Ubuntu 20.04.5。

持续学习,稳中求进,努力输出高质量内容, 所有文章都会维护更新。 4510

【Docker进阶】基于Docker部署Web应用

【Docker最终篇】基于Docker部署Web

llg___的博客 3976

Docker-实战:使用 Docker 部署一个完整的 Web 应用(Nginx + MySQL)

本文介绍了使用 Docker 部署一个完整的 Web 应用(Nginx+MySQL+Flask)的实战教程。通过创建自定义 Docker 网络实现容器互联,逐步完成了 MySQL 容器(带数据持久化)、Flask 应用容器和 Nginx 反向代理容器的部署。关键点包括:使用容器名称作为服务发现、数据卷持久化、Nginx 代理配置等。整个部署链路为:浏览器访问 Nginx(80端口)→ 转发到 Flask(5000端口)→ 查询 MySQL(3306端口)。文章还提供了常见问题排查指南,最终实现了通过 loc

DreamLife&Yaothos 1347

Docker安装以及使用Docker部署简单的web应用

Docker安装以及使用Docker部署简单的web应用 1. 关于Docker 1.1 Docker是什么 ​ docker按照通俗易懂的理解来说就是一个用来装应用的容器,就像可以把水装到杯子里,把饭装到碗里,把钱装到钱包里,可以把网站放在docker中,可以把任何想得到的程序放在docker中。 1.2 Docker的三个概念 ​ 分别是镜像(image),容器(container),仓库(Repository)。 ​ 镜像与容器的关系就像是面向对象中类和对象的关

bdfa655的博客 2139

docker部署web应用

1.安装mysql容器    docker run --name mysqlname -v /home/ubuntu/*/data0:/var/lib/mysql -p 3302:3306 -e MYSQL_ROOT_PASSWORD=root -t index.csphere.cn/microimages/mysql:latest             其中--name 用来确定容器的名字

gongdaxuesheng的博客 2371

Docker部署web应用

一、准备 下载jdk、tomcat; 准备好应用war包:sample.war 启动脚本start_tomcat.sh #!/bin/bash #Desc: # Start tomcat with docker containerstart. echo "Start Tomcat ..." # Export java path export PATH=$P

yanjunlu的专栏 1286

利用Docker容器技术部署发布web应用程序

Docker是什么? docker 是一个开源的应用容器引擎,可以帮助开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。简而言之,就是可以在任何Linux镜像上使用的这么一个容器 Docker容器的组成 docker有三大部分组成: 1.仓库:仓库里有镜像(image),这个镜像就是具体服务器的镜像,比如mysql,这个很好理解,类似于装系统的系统镜像。仓库有共有的仓库和私有仓库 2.服务器:有

不积跬步,无以至千里;不积小流,无以成江河。 2695
上一篇: [Usaco2006 Dec]Milk Patterns
下一篇: Pku3080 Blue Jeans
thy_asdf
博客等级 码龄12年 16粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值