Jzoj4876 基因突变(红警系列)

关于红色警戒2不能在Win10&64位系统上运行的问题的解决 博主前两天去准姐夫家做客,中间我问他学生时代喜欢玩的游戏是什么,让他一个80后那么激动是这款经典到家的游戏,红警,临走的时候还跟我要我下次去的时候带着电脑跟他打一局。。。 回来的时候也没有太在意,今天突发奇想下载下来重温一下,可是发现Win10的系统运行不了,总之就是出现各种问题,这款游戏就这么被Windows抛弃了,对于我这种怀旧的人怎么能受得了,搜索了很多种办法,最后在Google上找到了一种 阅读详情
邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类!
    但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的基因进行研究从而达到他的目的。
    707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为“源头基因”人类身上与源头基因完全匹配的片段越多,这个人就越容易被控制。于是707就开始了他邪恶的计划……

    作为人类卫士的射手ZMiG自然不会让707得逞,他决定拯救人类,现在他拿到了其中一个人被改造后的基因,他想请你统计一下它的基因中究竟有多少基因片段是可以与源头基因相匹配的

是这样的,我们要做的事情就是拿着原串和原串做扩展KMP

然而扩展KMP早就忘得一干二净

这种题目,显然是可以用SAM做的,跑出sam和parent树,让后直接在自动机上跑原串累加size就是答案(未完!下面还有)

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1000010
using namespace std;
char str[N];
int s[N][26],mx[N],sz[N],f[N];
int n,cnt=1,lst=1,ans=0,v[N],r[N];
inline int extend(char c){
	int p=lst,np=lst=++cnt,q,nq;
	c-='a'; mx[np]=mx[p]+1; sz[np]=1; 
	for(;p&&!s[p][c];p=f[p]) s[p][c]=np;
	if(!p) return f[np]=1;
	q=s[p][c];
	if(mx[p]+1==mx[q]) f[np]=q;
	else {
		nq=++cnt;
		mx[nq]=mx[p]+1;
		f[nq]=f[q]; f[q]=f[np]=nq;
		memcpy(s[nq],s[q],26<<2);
		for(;p&&s[p][c]==q;p=f[p]) s[p][c]=nq;
	}
}
int main(){
	freopen("gene.in","r",stdin);
	freopen("gene.out","w",stdout);
	scanf("%s",str+1); n=strlen(str+1);
	for(int i=1;i<=n;++i) extend(str[i]);
	for(int i=1;i<=cnt;++i) ++v[mx[i]];
	for(int i=1;i<=n;++i) v[i]+=v[i-1];
	for(int i=cnt;i;--i) r[v[mx[i]]--]=i;
	for(int i=cnt;i;--i) sz[f[r[i]]]+=sz[r[i]];
	for(int i=1,x=1;i<=n;++i){
		x=s[x][str[i]-'a']; ans+=sz[x];
	}	
	printf("%d\n",ans);
}
但是问题就是: Memory Limits: 131072 KB

这就十分尴尬了

于是不得不换一种方法

我们有hash!(下面还有)

#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1000010
#define L long long
using namespace std;
char s[N]; int n;
L ans=0,b[N]={1},h[N];
inline L gH(int l,int r){ return h[r]-h[l-1]*b[r-l+1]; }
int dijk(int x){
	int l=-1,r=n-x;
	for(int m;l<r;){
		m=l+r+1>>1;
		if(gH(1,m+1)==gH(x,x+m)) l=m;
			else r=m-1;
	}
	return l+1;
}
int main(){
	freopen("gene.in","r",stdin);
	freopen("gene.out","w",stdout);
	scanf("%s",s+1); n=strlen(s+1);
	for(int i=1;i<=n;++i){
		b[i]=b[i-1]*27;
		h[i]=h[i-1]*27+s[i]-'a';
	}
	for(int i=1;i<=n;++i) ans+=dijk(i);
	printf("%lld\n",ans);
}
这样可以卡过去了但是效率比较低啊

正解:动态规划

我们跑出kmp的next数组,计f[i]表示以i结尾的,符合条件的子串个数

转移十分显然:f[i]=f[next[i]]+1

答案:Σf[i]

优美而简洁

#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[1000010]; long long ans=0;
int n,nt[1000010],f[1000010];
int main(){
	freopen("gene.in","r",stdin);
	freopen("gene.out","w",stdout);
	scanf("%s",s); n=strlen(s);
	for(int i=1,j;i<n;++i)
		for(j=i;j>0;) 
			if(s[j=nt[j]]==s[i]){ nt[i+1]=j+1; break; }
	for(int i=1;i<=n;++i) f[i]=f[nt[i]]+1,ans+=f[i];
	printf("%lld\n",ans);
}

使用bat 在win10环境下Lua开发环境的配置 1、在菜鸟教程上找到环境配置章节,下载luadist 2、下载下来的Lua为绿色版,这里随便放到哪里  。我的目录是:E:\Game\PatrickLua\Binaries-LuaDist-batteries-0.9.8-Windows-x86 3、配置环境变量,环境变量其实是操作系统遍历的一个全局变量,操作系统会在这些环境变量中遍历找到你输入的程序名称。 百度上是这么说的:当要求系 阅读详情

相关推荐

红警科技建筑-素材包

红警科技建筑-素材包,里面有45度的3渲2建筑图、图标等,有升级进阶效果,可以作为游戏设计参考或者方案图素使用

win10安装红警运行出现FATALString Manager failed to initilaized properly

win10安装红警运行出现***FATAL***String Manager failed to initilaized properly 说明 如果你下载安装的版本和我的一样,在安装目录下就会有Ra2md.exe和Ra2.exe 我的是因为没有启动兼容 Xp系统导致的。 解决,开启Xp系统兼容 如果和我一样就选择Ra2md.exe文件右键,然后点击属性 然后按下面设置兼容性,其他选项可以自行尝试。 如果只有Ra2.exe同样设置一下,这个可能有效吧! exe`同样设置一下,这个可能有效吧! ...

集电极 17万+

红警制作素材

这是红色警戒mod大师不吐皮制作的一个非常经典的素材-圣战建造厂

【JZOJ4876】【NOIP2016提高A组集训第10场11.8】基因突变

题目描述 邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的基因进行研究从而达到他的目的。 707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度...

weixin_30311605的博客 147

别再为模糊的3D重建头疼了!手把手教你用3DSlicer处理DICOM数据,搞定医学影像三维可视化

本文详细解析了医学影像三维重建中常见的模糊问题,并手把手教你使用3DSlicer处理DICOM数据,实现精准的三维可视化。从层厚设置到数据格式转换,再到重建算法选择和渲染参数微调,提供了一套完整的优化方案,特别适合临床医生和医学影像处理人员提升工作效率。

weixin_28693447的博客 246

SAGA GIS英文版进行地形分析,计算常用的地形因子等

SAGA GIS中文版是一款专业的自动化地球科学分析系统软件。SAGA GIS最新版界面简洁,操作简便,用户使用时输入要分割的影像,选择要计算特征的影像或者波段,设置越大,得到的斑块越大;反之,则越小,点击Okay,得到分割影像图。SAGA GIS中文版主要通过选择适合你影像的格式,加载影像。 SAGA GIS全称是System for Automated Geoscientific Analyses,是一种用于编辑空间数据的地理信息系统(GIS)计算机程序,它是免费的开源软件,SAGA GIS旨在为科学家

qq_35794085的博客 5640

JZOJ2017.08.20B组

T1Description邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的基因进行研究从而达到他的目的。 707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为

Brute♂force 594

国产PLC实战:用汇川Easy320搞定TCP通信,手把手教你网口转串口控制设备

本文详细解析了如何使用汇川Easy320 PLC实现TCP通信与串口控制,解决工业自动化中设备间通信协议差异问题。通过实战案例和代码示例,展示了Easy320在协议转换、数据解析和串口转发中的高效应用,帮助工程师快速掌握网口转串口控制技术。

weixin_31774841的博客 497

[jzoj 4876] 基因突变

Description邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的基因进行研究从而达到他的目的。 707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为“源

HownoneHe的博客 781

毕设别再硬肝了:我用 GPT + Codex 做项目、写论文,效率直接起飞

这个也是神器。你项目做完之后,最怕的是老师一问就懵。这时候你直接把你的项目发给它,让它模拟老师提问。这是我的毕业设计题目和项目简介,请你站在答辩老师角度,提出20个高频问题,并给出简洁好背的回答。要求:问题尽量贴近计算机专业本科毕业答辩。为什么选这个题目?技术选型为什么这样定?你的创新点是什么?系统难点是什么?数据库怎么设计的?你的模型为什么选这个?如果继续优化,下一步怎么做?这个对答辩真的帮助很大。说实话,如果没有 GPT + Codex,

m0_74100417的博客 1841

【新华三】通过路由复制实现Public与VRF路由互通

如上图所示,S6900设备里有两张表,一张是public路由表,默认所有的路由都存放在public路由表里;除此之外还创建了VRF test,因此此设备还有VRF test路由表。通过路由复制实现Public路由和VRF路由互通,默认情况下VRF里的路由单独一张路由表,默认情况下与public路由表相互隔离,两张表之间不可互访。此时的public路由表里面并没有test的路由表。public路由表与VRF路由表之间相互隔离。此时VRF test里的路由也没有其他VRF或Public里的路由,相互隔离。

五大连池的镜子 5277

字符串系列——EXKMP

前言 我好菜啊现在才会 EXKMP跟KMP并没有多大关系,相比之下更像Manacher 信息量略大 例题 jzoj4876. 【NOIP2016提高A组集训第10场11.8】基因突变 Description 邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的...

某司机的黑车 649

FlightStream实战:如何用面元法在笔记本电脑上完成无人机气动分析(附NASA案例)

本文详细介绍了如何利用FlightStream面元法在笔记本电脑上高效完成无人机气动分析,包括其核心技术优势、NASA D8案例实战解析及高效工作流建立。FlightStream作为快速CFD分析工具,显著提升了早期设计阶段的迭代速度,适用于概念设计验证和多气动构型比较。

weixin_28363123的博客 256

VC8.0编译的程序出现The application failed to initialize properly (0xc0000005)

最近开发了一个系统,在简体中文和繁体中文下都可以正常运行,但是到了英文版本下一打开会出现The application failed to initialize  properly (0xc0000005)这个错误,可能是因为英文版本的系统太低了,还没有更新所导致的,因为我尝试把源码用VC6.0编译的不会出 现这个错误,但是用VC8.0编译以后拿过去测试还是会错,于是我开始寻找解决

独爱糕 4916

百度智能云训练图像分割模型+python调用模型并分割图像

目录 训练模型阶段 发布图像分割API 调用图像分割API 创建应用后显示以下两个代码 在pycharm中可以调用API mask解码 依赖库pycocotools安装步骤: 依赖库urllib2的安装 源码下载: 最近上课听老师介绍了一个训练图像分割模型的网站,把数据集上传之后做图像标注,然后进行训练就能得到准确率等指标。 训练模型阶段 图像分割:https://ai.baidu.com/easydl/vision/ 图像分割-->创建模型-->上传数据--&gt

icecreamdinner的博客 1388

嵌入式工程师成长之路(10)——项目举例

送给大学毕业后找不到奋斗方向的你(每周不定时更新)

云轩阁 5万+

String literal is not properly closed by adouble-quote

今天eclipse编译的时候出现错误提示:String literal is not properly closed by adouble-quote 按照网上找的方法没能解决,最后直接将工程clean,重新编译,解决了。 在这里做一下备忘。

yedeerzi的专栏 1152

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

红警外挂--刷钱

<br />首先要找到内存地址,使用CE 5.4,载入进程GAME,查找游戏的钱,会找到3个地址,最后一个是我们要的,查看跟踪代码,可以找到偏移量为0x24C,然后记录EBX值,用HEX搜索,第一个地址就是要找的地址。<br /> <br />            IntPtr intPtr = WIN32API.OpenProcess(0x1f0fff, 0, Process.GetProcessesByName("Game")[0].Id);<br />            Console.Writ

三国曹的专栏 1483

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Win10 initluictrl failed问题

问题描述 启动win10之后,所有的软件、快捷方式无法访问,双击之后没有响应但联网正常。 解决方法 win键+S弹出选项框,选择cmd(管理员)。 键入命令:netsh winsock reset catalog,重启socket网络编程接口,之后重启电脑。 关于WINSOCK netsh 是从windows xp sp2开始提供的功能强大的网络配置命令行工具。 是一个能够通过命令行操作几乎所有网...

weixin_33819479的博客 5487

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Win10完美运行红色警戒2的安装包和补丁

Windows10中完美运行红色警戒2的安装版本: 链接:https://pan.baidu.com/s/1EbHiujwf4xrDJ760kAEwTw 密码:qkm9 一、安装完成之后,避免出现:***FATAL***String manager failed to initilaized properly,需要修改其兼容属性: 二、如果网络选项卡中,看不到别人: ...

maxma的博客 2万+

【140817】类似红警画面的VC游戏源码,一个模块

主要使用了以下知识、技术。  1. 加入了游戏角色的自动寻路的算法。游戏中的主角和动物都可以自动寻路。    2. 加入了其它动物在场景中随机活动的方法。    3. 加入了选择地图的功能。    4. 加入了图形光标。        操作方法:    A、在场景内点任意点,指挥主角移动。    B、将鼠标移到场景外,可以移动地图。    C、在微缩地图上点一下,可以快速定位

资源小站 2340

ORA-01756: quoted string not properly terminated问题

对于这个问题,网上有一大堆的解决方法,然并卵,千篇一律的抄,我就不信他们遇到的问题的解决方法是一样的,尼玛,连数据库的字符编码都没看过,即使偶然蒙对了也是 知其然而不知其所以然,对于这种答案我只能呵呵了。下面说一下我的问题:首先从我本地导出一张表,名字为aa.sql,编码什么的从导出到导出完成,完全没有设置过。然后 直接上传到服务器,sqlplus a/b 进去之后,使用@/x/y/aa.sq

跟我一起去征服 2万+

红警2(红色警戒)之尤里的复仇 局域网对战联机方法

1、在安装目录下,确定拥有Woldata.key和ra2.reg两个文件,并使用记事本修改一下,保证其内的数值在局域网内不重复即可。两个文件内的数值没有关联关系,随意修改,只要不和其他人重复即可。2、运行ra2.reg导入到注册表中。3、注销或重启计算机。注:如果没有ra2.reg,复制并修改下面的内容,并保存为ra2.reg文件。然后执行即可。////////////////ra

狂※痴(zhangleixp) 3万+

Win10下如何配置Qt环境变量

操作系统:Win10 Qt版本:5.6.0 Qt Creator版本:3.6.1 在Debug和release文件下运行时候出现错误: 解决方法:

观望叔叔的小屋 1万+

ORA-01756: quoted string not properly terminated报错

在代码执行部署的时候经常会遇到编码格式问题导致的报错,问题如下: ERROR: ORA-01756: quoted string not properly terminated insert into table values(....'鎶ユ枃鐢熸垚鏃堕棿'...) * ERROR at line 1: ORA-02291: 违反完整约束条件 (TLOANDATA.FK_LN_

shwanglp的专栏 3万+
上一篇: Jzoj4846 行走
下一篇: Jzoj4877 力场护盾(红警系列)
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值