Codeforces Round 930 (Div. 2)

substr时间复杂度O(N),不能一遍遍找,会超时  

#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
const int N=5e5+10;
map<string,int>mp;
vector<string>v[N];
int main()
{int t;cin>>t;while(t--){int n;cin>>n;string s1,s2;cin>>s1>>s2;mp.clear();string ss;for(int i=0;i<=n;i++){ss+="1";}for(int i=0;i<n;i++){string x=s1[0]+s1.substr(1,i)+s2.substr(i);mp[x]++;//out<<s1.substr(0,i)<<" "<<s2.substr(i)<<endl;if(x<ss) ss=x;}cout<<ss<<endl<<mp[ss]<<endl;}return 0;
}

 

#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
const int N=5e5+10;
map<string,int>mp;
vector<string>v[N];
int main()
{int t;cin>>t;while(t--){int n;cin>>n;string s1,s2;cin>>s1>>s2;string x=s1+s2[n-1];int num=n-1;int flag=0;//substr时间复杂度O(n) 不可一一查询会超时 for(int i=0;i<n;i++){//找到这个点时就是最佳的拐点 if(s1[i]=='1'&&s2[i-1]=='0'){x=s1.substr(0,i)+s2.substr(i-1);num=i-1;break;}}int cnt=1;for(int j=num;;j--){//倒着走不相等 就不可以了 如果相等说明向下向右都可以即++ 一定是连续的交叉相等//一旦出现不相等 就结束 即方案数 if(s1[j]!=s2[j-1]) break;cnt++;}cout<<x<<endl<<cnt<<endl;}return 0;
}

 DP

#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
const int N=5e5+10;
map<string,int>mp;
vector<string>v[N];
int main()
{int t;cin>>t;while(t--){int n;cin>>n;int arr[2][n];int dp[2][n];for(int i=0;i<=1;i++){string s;cin>>s;for(int j=0;j<n;j++){arr[i][j]=s[j]-'0';//首先预处理 dp[i][j]=0;//dp值预处理 }}dp[0][0]=1;//初始点唯一,一个方案 string ans;ans+=(char)(arr[0][0]+'0');//然后初始点也要在路径字符串上算上 for(int i=0;i<=n-1;i++)//总共移动步数 {int tmp=1;//第一部分 看后面能不能转移到0 for(int j=0;j<=1;j++)//向下几次 {//枚举当前可能的点 走不了 不可能转移次数大于移动次数if(j>i) continue; int x=j,y=i-j;//找出枚举的点 if(dp[x][y]==0) continue;//如果这个点不能被走到 就continue if(x==0)//否则能向下 {if(arr[x+1][y]==0)//看向下能不能走到0 {tmp=0;}}if(y<=n-2)//能向右 {if(arr[x][y+1]==0){tmp=0;//看向右能不能走到0}}}//把目前添加的字符添加进去 if(tmp==0) ans+='0';else ans+='1';//第二部分,我们再把应该转移的去转移一下 for(int j=0;j<=1;j++){if(j>i) continue;int x=j ,y=i-j;if(dp[x][y]==0)continue;if(x==0){if(arr[x+1][y]==tmp){dp[x+1][y]+=dp[x][y];}}if(y<=n-2){if(arr[x][y+1]==tmp){dp[x][y+1]+=dp[x][y];}}}} cout<<ans<<endl;cout<<dp[1][n-1]<<endl;}return 0;
}

 

 

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

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

相关文章

[C++]AVL树怎么转

AVL树是啥 一提到AVL树&#xff0c;脑子里不是旋了&#xff0c;就是悬了。 AVL树之所以难&#xff0c;并不是因为结构难以理解&#xff0c;而是因为他的旋转。 AVL树定义 平衡因子&#xff1a;对于一颗二叉树&#xff0c;某节点的左右子树高度之差&#xff0c;就是该节点的…

5、云原生安全之falco的规则解读(部分)(上)

文章目录 1、自定义规则测试1.1、自定义检测定时任务的规则2、自带规则详解部分2.1、意外的出站连接源(类似的还有入站连接)2.2、检测目录穿越攻击2.3、rpm数据库被修改2.4、数据库派生新的进程2.5、特权容器启动2.6、启动容器挂载到敏感路径2.7、匹配所有在pod内启动、并连接…

音视频数字化(数字与模拟-照相机)

目录 1、模拟/数字 2、第一台照相机 3、照相机原理 4、取景方式 5、底片 6、数码相机 7、数码相机指标 8、数码相机分类 (1)单反相机 (2)单电相机 (3)无反相机

2024.03.02蓝桥云课笔记

1.scanf与printf取消分隔符的限制方法 示例代码&#xff1a; int main() { char s[10];scanf("%d[^\n]",s);printf("%s",s);return 0; } 运行&#xff1a; 输入&#xff1a;Hello World 输出&#xff1a;Hello World 注&#xff1a;其中[]中是一个正则…

(UE4升级UE5)Selected Level Actor节点升级到UE5

本问所用工具为&#xff1a;AssetDeveTool虚幻开发常用工具https://gf.bilibili.com/item/detail/1104960041 在UE4中 编辑器蓝图有个节点为 Get Selected Level Actors 但在UE5中&#xff0c;蓝图直接升级后&#xff0c;节点失效&#xff0c;如图&#xff1a; 因为在UE5中&am…

Vue3中Vuex状态管理库学习笔记

1.什么是状态管理 在开发中&#xff0c;我们会的应用程序需要处理各种各样的数据&#xff0c;这些数据需要保存在我们应用程序的某个位置&#xff0c;对于这些数据的管理我们就称之为状态管理。 在之前我们如何管理自己的状态呢&#xff1f; 在Vue开发中&#xff0c;我们使用…

大厂面试经验:如何对加密后的数据进行模糊查询操作

加密后的数据对模糊查询不是很友好&#xff0c;本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路。 为了数据安全我们在开发过程中经常会对重要的数据进行加密存储&#xff0c;常见的有&#xff1a;密码、手机号、电话号码、详细地址、银行卡号、信用卡验证码等信息…

YoloV5改进策略:主干网络改进|MogaNet——高效的多阶门控聚合网络

文章目录 摘要论文:《MogaNet——高效的多阶门控聚合网络》1、简介2、相关工作2.1、视觉Transformers2.2、ViT时代的卷积网络3、从多阶博弈论交互的角度看表示瓶颈4、方法论4.1、MogaNet概述4.2、多阶门控聚合4.3、通过通道聚合进行多阶特征重新分配4.4、实现细节5、实验5.1、…

Vue 3 中的 setup 函数是如何工作的?

Vue 3 中的 setup 函数是一个新的组件选项&#xff0c;用于使用组合式 API 定义组件的逻辑。这个函数的引入是为了解决 Vue 2 中随着组件复杂度的增长&#xff0c;选项式的 API 可能导致代码难以维护和理解的问题。通过 setup 函数&#xff0c;开发者可以更加灵活地组织和共享代…

Python光速入门 - Flask轻量级框架

FlASK是一个轻量级的WSGI Web应用程序框架&#xff0c;Flask的核心包括Werkzeug工具箱和Jinja2模板引擎&#xff0c;它没有默认使用的数据库或窗体验证工具&#xff0c;这意味着用户可以根据自己的需求选择不同的数据库和验证工具。Flask的设计理念是保持核心简单&#xff0c…

布隆过滤器实战

一、背景 本篇文章以解决实际需求的问题的角度进行切入&#xff0c;探讨了如果使用布隆过滤器快速丢弃无效请求&#xff0c;降低了系统的负载以及不必要的流量。 我们都知道布隆过滤器是以占用内存小&#xff0c;同时也能够实现快速的过滤从而满足我们的需求&#xff0c;本篇…

Matlab偏微分方程拟合 | 源码分享 | 视频教程

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

反编译代码格式处理

反编译代码格式处理 背景解决方案程序跑之后idea格式化 总结 背景 想看看公司里一个工具的代码实现&#xff0c;手里只有一个jar包&#xff0c;只能通过jd-gui反编译代码。但是呢&#xff0c;源码是有了&#xff0c;但是看的很难受。 解决方案 /*** 替换 {code searchDir}中…

LeetCode 100231.超过阈值的最少操作数 I

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一次操作中&#xff0c;你可以删除 nums 中的最小元素。 你需要使数组中的所有元素都大于或等于 k &#xff0c;请你返回需要的 最少 操作次数。 示例 1&#xff1a; 输入&#xff1a;nums [2,11,10,1,3], k 10 输…

Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

用Java语言创建的Spring Boot项目中,如何传递数组呢??

问题&#xff1a; 用Java语言创建的Spring Boot项目中&#xff0c;如何传递数组呢&#xff1f;&#xff1f; 在这个思路中&#xff0c;其实&#xff0c;Java作为一个后端开发的语言&#xff0c;没必要着重于如何传入&#xff0c;我们主要做的便是对传入的数组数据进行处理即可…

解决虚拟机启动报错:“End kernel panic - not syncing: attempted to kill the idle task”

原本能正常运行的虚拟机&#xff0c;很长一段时间没用后&#xff0c;今天再次启动&#xff0c;然后就出现下面的问题&#xff1a; 然后走了一些弯路&#xff0c;比如说删除该虚拟机然后新建一个虚拟机&#xff08;问题未解决&#xff09;、直接删除VitualBox重新安装&#xff0…

感染了后缀为.faust勒索病毒如何应对?数据能够恢复吗?

导言&#xff1a; 在网络安全领域&#xff0c;.faust勒索病毒是近期备受关注的一种恶意软件。这种病毒采用高度复杂的加密算法&#xff0c;将受感染计算机上的文件全部加密&#xff0c;并要求受害者支付赎金以获取解密密钥。.faust勒索病毒的攻击方式通常是通过电子邮件附件、…

快递平台独立版小程序源码|带cps推广营销流量主+前端

源码介绍&#xff1a; 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序&#xff0c;接入云洋/易达物流接口&#xff0c;支持选择快递公司&#xff0c;三通一达&#xff0c;极兔&#xff0c;德邦等&#xff0c;功能成熟 如何收益: 1.对接第三方平台成本大约4元…

Python基本数据类型介绍

Python 解释 Python是一种高级编程语言&#xff0c;以其简洁、易读和易用而闻名。它是一种通用的、解释型的编程语言&#xff0c;适用于广泛的应用领域&#xff0c;包括软件开发、数据分析、人工智能等。python是一种解释型&#xff0c;面向对象、动态数据类型的高级程序设计…