Codeforces Round #658 (Div. 2) C2 Prefix Flip (Hard Version)【构造匹配】[规定步数内达成目标的题目]

Codeforces 1381A2 Prefix Flip (Hard Version) 题目大意 给定两个只含 0 和 1 字符串 a , b ,在下面这种变换规则下,a 经过多少变换次数得到 b,输出该次数并输出每次变换的位置,并且变换次数不超过2∗n2 * n2∗n。 变换规则:选择字符串 a 的一个前缀,同时反转前缀中的位( 0 变成 1 , 1 变成 0 ),并反转前缀中位的顺序。例:a=01011a = 01011a=01011, 从第2个位置进行操作,先反转位,得到a=10011a = 10011a=10011,再逆序该前缀,得到 a=01011a = 01011a=01011。 阅读详情

题目

一种操作,可以选择前缀长度为k,翻转前k的01值然后顺序再倒一下。
要求在2n步内把给定a串变成b串

做法:
a:01101 01001
b:10000 10001
以这个为例,因为要求是2n步内,很容易就想到每个点搞最多两次搞出来,于是就可以2步之内缩小一次问题规模,从n一直缩小到0;

a[1]和b[n]要对上,直接前k翻转.
现在变成谁和谁对上?b[n]和a[n]现在都可以不用管了,于是来到了b[n-1],那b[n-1]和谁对上了,当然还是a[1],a[1]可不就是上一个a[n]吗?可是我们还要用一个值记录全体翻转了几次,(a[1]+i)%2才是真正的值。然后我们发现这个a[1]在原序列中跳跃是这样的
pos=: 1 n 2 n-1 3 …一直到n/2;

于是代码就出来了:
code

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <climits>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <iomanip>
//
using namespace std;
const int INF = 0x3f3f3f3f;//1.06e9大小
const int mod = 1e9 + 9;
const int mod2 = 998244353;
const int mod3 = 1e9;
const double PI = 3.14159265;
const double eps =1e-8;
typedef unsigned long long ULL;
typedef long long LL;
const int sq5=616991993;
#define ms(x, n) memset(x,n,sizeof(x))
#define debug printf("***debug***\n")
#define pii pair<int ,int>
#define X first
#define Y second
#define pb push_back
//以下define不能在团队赛中使用
#define rep(i,from,to) for(int i=from;i<=to;++i)
#define per(i,from,to) for(int i=from:i>=to;--i)
/*
*/
const int MAXN = 1e5+10;
int a[MAXN];
int b[MAXN];
int ans[2*MAXN];
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;++i){scanf(" %c",&a[i]);a[i]-='0';}
        for(int i=1;i<=n;++i){scanf(" %c",&b[i]);b[i]-='0';}
        int cnt=0;//0表示相向匹配,1为同比较
        int pos=1;
        for(int i=1;i<=n;++i)
        {//a的pos和b的n-i+1位
            if(b[n-i+1]==(a[pos]+i-1)%2)ans[cnt++]=1;
            ans[cnt++]=n-i+1;
            if(pos<=n/2)pos=n-pos+1;
            else pos=n-pos+2;
        }
        printf("%d ",cnt);
        for(int i=0;i<cnt;++i)printf("%d ",ans[i]);
        printf("\n");
    }

    return 0;
}


C2. Prefix Flip (Hard Version)(逆序思维) 有两个长度为n的二进制字符串a和b(二进制字符串是由符号0和1组成的字符串)。在一个操作中,您选择一个前缀a,同时将前缀中的位数颠倒(0变为1,1变为0),并将前缀中的位数颠倒。每个测试用例的第一行包含一个整数n (1 < n < 105)——二进制字符串的长度。接下来的两行包含两个长度为n的二进制字符串a和b。可以保证所有测试用例的n的和不超过105。输出对于每个测试用例,输出一个整数k (0 阅读详情

相关推荐

UDS $27服务DLL文件生成

UDS 27算法 DLL文件生成

hkj8808的博客 1282

A2. Prefix Flip (Hard Version)(思维+构造)

https://codeforces.com/problemset/problem/1381/A2 思路:2*n肯定是能一个n次变成一个特殊序列。这样两个串都变成一样的特殊序列就好了。 构造发现总能变成全0或全1.往这个方向去构造。然后B串用一个stack逆序输出就好 #include<iostream> #include<vector> #include<queue> #include<cstring> #include<cmath> #

代码笔记本 380

树上柑橘检测实战:自制数据集与YOLO训练全流程复盘

目标检测模型的性能上限往往由训练数据决定,尤其在农业视觉这样的复杂场景中,公开数据集与真实环境的差异常导致模型漏检、误检频发。高质量的标注数据是模型泛化的基础,从采集、清洗到统一标注规范,每一步都直接影响最终效果。对于检测任务而言,VOC与YOLO两种主流标注格式的转换是工程落地的常见环节,理解坐标归一化原理并做好校验,能有效避免训练事故。在模型训练阶段,合理划分数据集、谨慎选择数据增强策略,并结合切片推理解决小目标漏检,是果园场景下提升精度的关键。这套基于2511张果树图像的单类别检测流程,不仅支撑了柑橘

weixin_29057163的博客 231

codeforces1381A2 Prefix Flip (Hard Version)

https://codeforces.com/contest/1381/problem/A2 从高到低位考虑,如果b[i]=当前的a[i],就可以不用换,否则需要把变换前缀i,还要考虑当前的a[1]符不符合,否则先变换1次1 可以知道我们当前的a[1]---a[i]一定在原a[i]序列是连续的,所以我们维护l,r,表示a[1]和a[i]对应的下标,由于区间会翻转,所以维护一个ldir和rdir表示方向,再维护一个cnt表示这段区间翻转了多少次,就能知道当前的a[l]和a[r]是什么数字。 #incl

binarycopycode 439

在Unity3d使用yolov8的onnx模型

输出OUTPUTS是float32[1,35,8400],表示它会输出一个大小为[1, 35, 8400]的浮点数张量。这个输出张量的维度表示了检测到的目标的数量、每个目标的预测参数以及网格单元的数量。输出张量的第一个维度1表示检测到的目标数量。每个目标由35个值组成,表示目标的类别、置信度、边界框的坐标及10个特定点的位置。要取得8400个数据中置信度最高的数据,然后获取该数据其他channel的数据。运行结果:(蓝色是检测手的边框,红点是自定义的点),其中的四个数字分别表示不同的维度。

shenqingyu0605202324的博客 5603

【深度学习基础】Temporal Fusion Transformer

从下向上看:全连接(Dense) → ELU(指数线性激活函数(比relu好点,有利于模型收敛)) → 全连接(Dense) → 门控线性单元(Gate)(Gated Linear Units (GLUs)) → Layernorm。:一方面,它可以进行静态上下文变量和动态变量的融合,另一方面,通过门控进行了特征选择操作,门控体现在GLU(门控线性单元)中,用了sigmoid控制信息的通过程度,具有良好的适应性,能够自动选择有效信息,自适应地调整网络复杂性。输入:主输入,可选的上下文向量c。

weixin_41838721的博客 1227

Codeforces Round #658 (Div. 1) A2. Prefix Flip (Hard Version)

Codeforces Round #658 (Div. 1) A2. Prefix Flip (Hard Version) 题目链接 There are two binary strings a and b of length n (a binary string is a string consisting of symbols 0 and 1). In an operation, you select a prefix of a, and simultaneously invert the bits i

旺崽的博客 2675

DaVinci Configurator BswM模块配置

BswM是AUTOSAR(Automotive Open System Architecture)系统架构中的模块之一,它是基础软件模块(BSW)之一。BswM全称为Basic Software Module Manager(基础软件模块管理器),它负责管理和协调其他BSW模块的行为和交互,以实现整个系统的功能。BswM可以被看作是一个状态机,通过监控系统的状态和事件触发,来控制其他BSW模块的运行状态和互相配合,以达到整个系统的预期行为。

qq_59258431的博客 3948

[codeforces 1382C2] Prefix Flip (Hard Version) 翻转的利器双指针(构造)

Codeforces Round #658 (Div. 2) 参与排名人数14674 [codeforces 1382C2] Prefix Flip (Hard Version) 翻转的利器双指针(构造) 总目录详见https://blog.csdn.net/mrcrack/article/details/103564004 在线测评地址https://codeforces.com/contest/1382/problem/C2 Problem Lang Verdict ...

mrcrack的博客 351

【Unity】Pico VR 开发实战:从环境搭建到交互实现

本文是一份详细的Unity Pico VR开发实战指南,涵盖从环境搭建到核心交互实现的全流程。详细讲解了如何集成Pico Unity Integration SDK与XR Interaction Toolkit,配置开发环境,并重点解析了手柄输入处理、射线交互以及VR UI操作三大核心模块的代码实现与优化技巧,帮助开发者快速上手Pico VR应用开发。

rice5的博客 1176

Rstudio安装org.Hs.eg.db

自己也是个小白,初次安装org.Hs.eg.db碰到好多问题,步骤总结如下: 第一,instal.packages()安装,不行则换 BiocManager::install() 第二,如BiocManager不成,说明不是最新版本,可按提示安装最新版 BiocManager::install(version = '3.13') #由于R版本较新,按照提示中的相关信息,安装最新版本的 第三,再次安装 BiocManager::install("org.Hs.eg.db") 第四,之后每个人.

ZH_DDong的博客 2万+

Codeforces C2. Prefix Flip (Hard Version)(二进制串 / 模拟) (Round #658 Div.2)

传送门 题意: 其实这就是C1题的加强版,只不过C1的字符长度是1000且操作次数不得 > 3n,而C2的字符长度是1e5且操作次数不得 > 2n,且T都是一样为1000. 思路: 现在的时间复杂度为O(n * t) = 1e8,堪堪能过,因此实际的翻转操作便不再可取了。 我们先将a全部翻转成同一字符(当然就是a的最后一个字符),由于同一字符取反后还是一致的,所以取反便不再有意义。 因为答案只需要进行操作的位置,所以再按照b字符串从后往前开始匹配对a的前缀进行取反,当然过程中并不用真正的取

Satur9的博客 247

STM32cubemx配置驱动DHT11模块

本篇文章将带大家学习使用DHT11湿温度模块,使用这个模块可以获取当前的温度和湿度数据。DHT11可以用于智能家居,蔬菜大棚等项目当中适用范围广。DHT11 是一种数字式温湿度传感器,由杜邦公司推出。它可以测量环境中的温度和湿度,并将测量结果以数字形式传输给微控制器或其他电子设备,适用于通过数字信号读取环境温湿度的应用场景。DHT11 传感器使用单总线数据交换协议,可以通过一个 I/O 引脚进行控制和数据传输。

m0_49476241的博客 5912

Codeforces Round #658(Div.2) B-C2 Prefix Flip(Hard Version)

C1 / C2 Prefix Flip 暴力模拟/思维 题意:给定字符串长度为len的01字符串 a串,b串 定义操作 取一个num ,每次将a串的前num个字符取反并倒置 经过若干次操作最终使a串与b串完全一致 Easy Version 和 Hard Version的区别在于字符串长度n的范围和允许操作数分别为3n和2n Easy版本 O(n^2)暴力模拟即可 Hard版本 O(n)做法 参考博客:https://blog.csdn.net/Joker_He/article/details/1075158

weixin_49572079的博客 107

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

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Codeforces Round #658 (Div. 2) C2. Prefix Flip (Hard Version)

C2. Prefix Flip (Hard Version) time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output This is the hard version of the problem. The difference between the versions is the constraint on n and the required num

张洪基 231

IDEA的使用指南

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

Codeforces 1382C2 - Prefix Flip (Hard Version)(思维)

C2. Prefix Flip (Hard Version) time limit per test1 second memory limit per test256 megabytes input standard input output standard output This is the hard version of the problem. The difference between the versions is the constraint on n and the required n

在读NLP硕士 401

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Codeforces 1382C2. Prefix Flip (Hard Version)(翻转)

This is the hard version of the problem. The difference between the versions is the constraint on ???? and the required number of operations. You can make hacks only if all versions of the problem are solved. There are two binary strings ???? and ???? of l

tomjobs的博客 669

C2. Prefix Flip (Easy&Hard Version) (思维)

Easy version 字符串长度n<=1000,可操作次数k<=3*n Hard version 字符串长度n<=100000,可操作次数k<=2*n 题意: 给你两个二进制串a,b,每次对a操作你可以选择一个长度任意的前缀,在这个区间取反并且反转(0->1 1->0,再reverse),最后让a==b,输出步数及每一步选择的前缀长度,不用最大或最小化操作次数。 思路: easy version可以直接暴力,因为每次取前缀,所以优先匹配后面的,那么以后就不用管后面已

Joker_He的博客 753

C2. Prefix Flip (Hard Version)

题目大致意思:给你一个字符串ab,每次你都可以选择前缀n,然后将前n个位翻转(从’0’变为‘1’),然后再整体反转,比如0111 =》1110,让你在2*n步里面从a变到b然后让你输出方案。 解题思路:可以让a先变为全0或者全1,然后我们发现最后是1还是0取决于最后一位是0还是1,然后让b也变为全0或者全1,然后把路径反转,比如b从1-》3-》5 变为全0,这个是可逆的,全0从5—》3-》 1能变回b。 #include<iostream> #include<cstring> usi

goto_1600的博客 609

C1. Prefix Flip(easy到hard巧妙地构造)

其实本来想讲从easy−>hard的其实本来想讲从easy->hard的其实本来想讲从easy−>hard的 但是自己的算法可以过两个版本?那就只讲这种方法好了 构造题,每次可以选前缀位运算取反,然后翻转这个前缀构造题,每次可以选前缀位运算取反,然后翻转这个前缀构造题,每次可以选前缀位运算取反,然后翻转这个前缀 相信棘手的就是这个翻转前缀,使得我们的操作变得复杂,不可控 但是这是一道构造题,只需要在2n的步骤内完成即可但是这是一道构造题,只需要在2n的步骤内完成即可但是这是一道构造题,只需

jziwjxjd的博客 1385

#658 (Div. 2) C2.Prefix Flip (Hard Version)

题目描述 This is the hard version of the problem. The difference between the versions is the constraint on n and the required number of operations. You can make hacks only if all versions of the problem are solved. There are two binary strings a and b of leng

li_wen_zhuo的博客 523

codeforces D2. Prefix-Suffix Palindrome (Hard version)

题目 题意: 你有一个序列sss,还有一个序列ttt,ttt的组成是有s ss的前缀和后缀组成的,但是要保证ttt最后是个回文串,前缀或者后缀可以为空字符串。 思路: #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <...

忘梦心的博客 615

Prefix Flip (Easy Version)/(Hard Version)

题目 思路 做法:先把a全部变为1,或者变为0,做法是从前完后遍历,如果an和an+1不相同,就把前an做一次反转,这样就和an+1相同了,这样最多做n次,然后再从后往前遍历b和a,如果bi≠ai,就把ai前缀反转即可,这样最多n次,所以总共2n次 代码 #include<stdlib.h> #include<iostream> #include<stdio.h> #include<string.h> using namespace std; char a

萌新的博客 468

Codeforces Global Round 7 D2. Prefix-Suffix Palindrome (Hard version)

原题链接 本文同步发布于个人博客 题意简述 给定一个字符串sss,找到字符串的前缀aaa和后缀bbb合成为t(t=a+b)t(t=a+b)t(t=a+b),aaa和bbb可以为空,求出长度最长的ttt 数据范围 s≤106s\leq 10^6s≤106 题解 呜呜呜,这题现场想了半天还是只会easy 其实这题主要瓶颈在于求最长前缀回文串,我们首先可以用双指针扫一遍,具体来说就是一开始i=1,j=n...

songhn的博客 371

CF Round #658 (Div. 2) C2. Prefix Flip (Hard Version)

题目 题目链接 思路 2n的操作是,对b数组从后往前遍历,如果当前位置与a匹配,继续下一个,如果不匹配,看a第一个元素是否匹配,如果不相同,直接对当前位置的前缀做操作,如果相同,则对a的第一个元素做一次操作,然后再对当前位置的前缀做操作。这样能保证在2n内完成。 不过t<=1e3 n <=1e5,对执行操作的区间进行线性更新会TLE。 所以找一个更快的维护方式。 记录当前区间L R,flag标记当前方向是正还是反。 从后往前跑一遍b数组,不断更新L R,记录信息即可。 这里代码写麻烦了,实际可以

Authur_gyc 264

C2. Skyscrapers (hard version)--------------------------------------思维(单调栈)

This is a harder version of the problem. In this version n≤500000 The outskirts of the capital are being actively built up in Berland. The company “Kernel Panic” manages the construction of a resident...

qq_43690454的博客 656
上一篇: 杭电多校第一场05 杭电6755:Fibonacci Sum【斐波那契通项公式】
下一篇: 【板子库(没有解释,萌新绕路)】全局第k小,权值线段树做法+离散化解决带修改问题的离线做法【待验证,不保证代码无误】
DevourPower
博客等级 码龄7年 52粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值