20250120 T1 binary题解

news/2025/1/21 18:50:30/文章来源:https://www.cnblogs.com/kkxacj/p/18684225

A. 二进制(binary)

给定 \(01\)\(S, T\),你可以进行如下操作若干次:选定 \(S\) 中相邻两个字符并交换。

你需要最大化操作结束后,\(T\)\(S\) 中的「出现次数」,同时你还需要回答,在达到这个最大的出现次数的情况下,最少需要的操作次数。

字符串 \(T\)\(S\) 中的「出现次数」,即为能选出最大 \(i\) 的数量,使得 \(S[i, i + |T| - 1]\)\(T\) 完全相同。

思路

先想一下如何求第一问。

直接设 \(f_{i,j,k}\) 表示前 \(i\) 个数填了 \(j\)\(0\),在 KMP 自动机上走到 \(k\) 的位置最大能匹配多少。

#include<bits/stdc++.h>
using namespace std;
const int N = 510;
int n,m,g[N][2],st[N],cnt,o;
pair<int,int>f[2][N][N],ans,x;
string s,t;
signed main()
{cin >> s >> t; n = s.size(); m = t.size();s = ' '+s; t = ' '+t;for(int i = 0;i <= m;i++)//填到第i个数,下一个填0/1,最多能匹配到t的那一段 {//枚举最长匹配 for(int j = i+1;j;j--) if(t[j] == '0'){o = 1; for(int k = j-1;k;k--) o &= (t[i-j+1+k] == t[k]); if(o){g[i][0] = j; break;}}  //匹配成功就break for(int j = i+1;j;j--) if(t[j] == '1'){o = 1; for(int k = j-1;k;k--) o &= (t[i-j+1+k] == t[k]); if(o){g[i][1] = j; break;}} }for(int i = 1;i <= n;i++)if(s[i] == '0') st[++cnt] = i;for(int i = 0;i <= 1;i++)for(int j = 0;j <= cnt;j++)for(int z = 0;z <= m;z++)f[i][j][z] = make_pair(-1e9,0);f[0][0][0] = make_pair(0,0); ans = make_pair(-1e9,0);for(int i = 0;i < n;i++){for(int j = 0;j <= cnt;j++)for(int z = 0;z <= m;z++)f[!(i&1)][j][z] = make_pair(-1e9,0);for(int j = 0;j <= cnt;j++)for(int z = 0;z <= m;z++){x = f[(i&1)][j][z]; x.first += (g[z][1] == m);f[!(i&1)][j][g[z][1]] = max(f[!(i&1)][j][g[z][1]],x);if(j < cnt) {x = f[i&1][j][z]; x.second = x.second-abs(i+1-st[j+1]); x.first += (g[z][0] == m);f[!(i&1)][j+1][g[z][0]] = max(f[!(i&1)][j+1][g[z][0]],x);}}}for(int i = 0;i <= m;i++) ans = max(ans,f[(n&1)][cnt][i]);cout << ans.first << " " << -ans.second << '\n';return 0;
}
/*
对于一个串S和新串S1,并且S1是由S每次交换两个相邻位置转移的
则操作次数为abs(a_i-b_i),a_i 为S中0第i次出现的位置,b_i 为S1中0第i次出现的位置
这个很显然,因为只有0/1两种值,0的位置摆好了,1的位置也就自动摆好了,这样也一定是最优的,可以自己画图证,也可以归纳证明。 
*/

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

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

相关文章

《操作系统真象还原》第九章 线程(一) 在内核中实现线程

本文是对《操作系统真象还原》第九章(一)学习的笔记,欢迎大家一起交流。第九章 线程(一) 在内核中实现线程 本文是对《操作系统真象还原》第九章(一)学习的笔记,欢迎大家一起交流。 我们在本节的任务:创建并初始化PCB 模拟pthread_create函数创建线程并执行线程函数首…

1.21 javaweb学习

今天学习了html中onsubmit的使用 onsubmit事件处理器是专门用于表单(form)的提交事件,所以要注意div标签是不能直接使用onsubmit的 今天在作业项目中出现了这样的问题,将onsubmit放在了div标签中,导致数据无法被正常处理,上传数据有误,修改至form后问题解决 修改前数据提…

思通数科舆情系统的分析报告主要内容及其市场价值探析

思通数科舆情系统的分析报告广泛应用于以下几个领域: (1) 企业品牌管理与危机预警:系统能够自动发出警报,为企业的公关部门提供应对策略和决策依据,帮助企业迅速做出反应,避免危机的进一步扩展。 (2) 政府舆情监管与社会治理:政府部门能够利用该系统的热点事件排名、舆情…

北汇信息致客户的一封感谢信

北汇信息致客户的一封感谢信尊敬的客户:感谢您选择北汇信息!2024年是不平凡的一年,中国汽车产量再创新高,出海与内卷挑战不断。北汇信息作为汽车电子测试领域的服务商,秉承“价值创造、共享成功”的理念,一直致力于为国内外汽车客户提供优质的产品和服务,共同面对这些挑…

001 修改博客园侧边栏的顺序

打开配置页:https://i.cnblogs.com/settings在“博客侧边栏公告”添加代码<script> $(document).ready(function(){//returnvar list=[sidebar_recentcomments,//最新评论sidebar_categories,//随笔分类、随笔档案sidebar_toptags,//我的标签sidebar_shortcut,//常用链接…

销售进阶:三步提问法,掌握客户心理

在销售行业,时间就是金钱,我们必须争分夺秒地搞定客户。但也不能盲目行动,而要稳扎稳打。关键在于快速抓住客户需求,而客户往往不会主动透露他们的需求,甚至自己都不清楚自己想要什么。这就需要我们通过巧妙的提问来破局,否则忙活半天也只是白费力气。 最让人头疼的是,跟…

寒假集训笔记 | | 第一课

C++STL --第一课 C标准库常用函数<cstring>memset() 暴力清空 char str[10]; memset(str,0,sizeof(str));<cmath>三角函数、指数函数、浮点取整函数<cstdlib>qsort() C语言快排 rand() 随机数 malloc() free() C语言动态内存分配<cctype>isdigit()…

Svelte 最新中文文档翻译(1)—— 概述与入门指南

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

平面二连杆机构的动力学方程

动力学研究物体的运动和作用力之间的关系。机器人动力学问题有两类:一是已知机器人各关节的驱动力或力矩,求解机器人各关节的位置、速度和加速度,这是动力学正问题;二是已知各关节的位置、速度和加速度,求各关节所需的驱动力或力矩,这是动力学逆问题。机器人的动力学正问…

【红队】C2框架:Covenant

一、项目介绍 Covenant是一个.NET开发的C2(command and control)框架,旨在突出.NET的攻击面,并充当红队成员的协作命令和控制平台,该工具不仅支持Linux,MacOS和Windows,还支持docker容器,最特别的地方是支持动态编译,能够将输入的C#代码上传至C2 Server,获得编译后的文…

3. 使用sql查询csv/json文件内容,还能关联查询?

1. 简介 我们在前面的文章提到了calcite可以支持文件系统的数据源适配, 其实官方已经提供了相应的能力, 其支持csv和json的查询适配, 废话不多说, 直接展示. 2. Maven <!-- calcite文件系统支持 --> <dependency><groupId>org.apache.calcite</groupId>…

一文搞懂 APP 算法备案

今天来给大家好好科普一下超重要的 APP 算法备案,这可是和我们日常使用 APP 以及 APP 运营都息息相关的知识点哦! 什么是算法备案 简单来讲,算法备案就相当于 APP 运营者要把自家 APP 里使用的算法详情,向有关部门进行申报登记。这就如同给算法这个 “幕后大脑” 办一张正式…