P5597 【XR-4】复读

server/2024/9/23 9:33:52/

[题目通道](【XR-4】复读 - 洛谷)

#include<bits/stdc++.h>
#define inf 2147483647
using namespace std;struct ed{int ls,rs,f,sz,dd;
}p[3000],c[3000];
string s;
int st,lq,ans=inf/2;int build(int fa,int poi){p[poi].f=fa; p[poi].sz=1; p[poi].dd=p[fa].dd+1; if (s[poi]=='3') {p[poi].ls=build(poi,poi+1), p[poi].sz+=p[p[poi].ls].sz;p[poi].rs=build(poi,poi+p[poi].sz), p[poi].sz+=p[p[poi].rs].sz;}if (s[poi]=='2') p[poi].rs=build(poi,poi+1), p[poi].sz+=p[p[poi].rs].sz;if (s[poi]=='1')p[poi].ls=build(poi,poi+1), p[poi].sz+=p[p[poi].ls].sz;return poi;
}int gd(int now,string t)
{	int l=t.size();for (int i=0;i<l;i++) now=((t[i]=='L')?p[now].ls:p[now].rs);return now;
}int merge(int now,int cs,int sp){	if (!now) return cs;if (!cs) cs=++st; c[cs].sz=1;if (now==sp) return cs;c[cs].ls=merge(p[now].ls,c[cs].ls,sp); c[cs].sz+=c[c[cs].ls].sz;c[cs].rs=merge(p[now].rs,c[cs].rs,sp); c[cs].sz+=c[c[cs].rs].sz;return cs;
}int find(string rep)
{int now=1,last=0;while (now){ last=now , now=gd(now,rep); merge(last,1,now);}return c[1].sz;
}void search(int now,string rep){  int cnt=0;if (now==0) return;if (now!=1) {memset(c,0,sizeof(c)); st=1; cnt=find(rep);ans=min(ans,2*(cnt-1)-p[now].dd+1);}search(p[now].ls,rep+'L');search(p[now].rs,rep+'R');
}int main()
{cin>>s; lq=s.size(); s='.'+s; build(0,1);search(1,"");cout<<ans<<endl;
}


http://www.ppmy.cn/server/111346.html

相关文章

pycharm怎样关联anaconda虚拟环境.conda executable not found

刚下载的pycharm和anaconda怎样进行关联。 打开pycharm时&#xff0c;点击右侧的conda环境时&#xff0c;出现anaconda.conda executable not found&#xff0c;说明你的anaconda和pycharm没有进行关联。 第一步&#xff1a;重启电脑 第二步&#xff1a;点击圆圈中的文件夹按…

Docker安装及验证,小白必备

Docker安装 本教程以centos系统为例 1、Docker安装前准备工作 切换国内源 cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak #备份设置为华为云的yum wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository…

全志Linux磁盘操作基础命令

磁盘操作 fdisk命令 fidsk是一个用来创建和维护磁盘设备分区的一个实用工具。 [ubuntubook:~]$ fdisk -l //列出当前系统所有的磁盘设备 [ubuntubook:~]$ fdisk /dev/sdc //操作设备节点为 /dev/sdc的一个设备。p : 显示所有的分区。d: 删除分区。n: 创建一个新的分区。t : …

ChatGPT能取代老师吗?浅谈ChatGPT 对教育领域的影响

近日&#xff0c;ChatGPT 这一人工智能技术在教育界引发了广泛的讨论与关注&#xff0c;焦点集中在它是否能够取代老师这一问题上。 ChatGPT 作为一种强大的人工智能&#xff0c;拥有诸多令人瞩目的能力。它可以通过学习和理解人类语言&#xff0c;与用户进行流畅的对话&#x…

请解释Java中的装箱拆箱操作对性能的影响,并讨论其最佳实践。什么是Java中的值传递和引用传递?它们在函数调用中的表现有何不同?

请解释Java中的装箱拆箱操作对性能的影响&#xff0c;并讨论其最佳实践。 在Java中&#xff0c;装箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09;操作是Java自动类型转换机制的一部分&#xff0c;主要用于基本数据类型&#xff08;如int, double, c…

信息打点-系统篇端口扫描CDN服务负载均衡WAF防火墙

知识点&#xff1a; 1、获取网络信息-服务厂商&网络架构 2、获取服务信息-应用协议&内网资产 3、获取阻碍信息-CDN&WAF&负载均衡&防火墙 演示案例&#xff1a; 1、网络信息获取-服务厂商&网络架构 访问外网80端口&#xff0c;转发到内网80端口 2…

【论文阅读】语义通信安全研究综述(2024)

摘要 语义通信系统架构 笔记 内容概述 引言&#xff1a;介绍了语义通信技术的背景、发展和重要性&#xff0c;以及它在无线通信系统中面临的安全挑战。 语义通信系统架构及安全攻击&#xff1a;描述了一个端到端的深度学习语义通信系统的基本架构&#xff0c;包括语义编解码…

Qt: QComboBox

示例1&#xff1a;隐藏某一个下拉选项&#xff0c;并不改变索引序号 //QComboBox::view() 方法返回的是 QListView 类型的指针&#xff0c;表示 QComboBox 中下拉列表的视图部分。 QListView* listView static_cast<QListView*>(ui->combo_box_initial_guess->vi…