当前位置: 首页 > news >正文

Codeforces Round #848 (Div. 2)A-C

传送门

目录

A. Flip Flop Sum

 代码:

B. The Forbidden Permutation

代码:

C. Flexible String

 代码:


A. Flip Flop Sum

题意:给你一个长度为n的数组(数组元素只为1或者-1),你要且只能进行一次操作:对于所有i(1<=i<n),使a_i=-a_i,a_i+_1=-a_i+_1,问你数组的最大和为多少.

思路:首先把所有元素和累加起来,然后直接遍历走一遍看存不存在两个相邻的负数,如果存在就把结果+4直接输出,否则去寻找是否存在一个负数,因为如果存在一个负数的时候结果并不会改变直接输出即可,否则就说明全部都是负数,那么就要输出res-4,

 代码:

void slove( )
{sc_int(n);int res=0;bool st=0;for(int i =1;i<=n;i++){sc_int(s[i]);res+=s[i];if(s[i]==-1)st=1;}for(int i =1;i<n;i++){if(s[i+1]==-1&&s[i]==-1){cout<<res+4<<endl;return ;}}if(!st)res-=4;cout<<res<<endl;
}

 

B. The Forbidden Permutation

题意:给你一个长度为n的排列,定义pos(x)为x在排列中的下标

然后对于给出的m个元素,如果存在一个序列i(1<=i<m )

,使pos(a_i)>pos(a_i+_1)或者pos(a_i+_1)>pos(a_i)+d,那么就说明它的好的

现在给你一个操作,可以使排列中的两个相邻元素交换。问你在可以保证能够使这个序列是好的的情况下,问你需要交换的最小次数是多少(可以是0)

思路 :对于每一个元素,如果要使它为好的,那么只有两种情况:a_i+_1的下标挪到a_i的左边,或者a_i+_1的下标和a_i的下标相差d+1,然后暴力取最小值就可。

代码:

void slove( )
{int p;cin>>n>>m>>p;map<int,int>q;for(int i =1;i<=n;i++){int x;sc_int(x);q[x]=i;}for(int i =1;i<=m;i++)sc_int(s[i]);int res=1e9;for(int i =1;i<m;i++){int a=q[s[i]],b=q[s[i+1]];res=min(res,b-a);if(b-a<=p){if(p<n-1)res=min(res,p-(b-a)+1);}else res=0;}res=max(res,0);cout<<res<<endl;return ;
}

 

C. Flexible String

题意:给你两个长度为n的英文字符串a,b和一个k(字符串中最多存在10种小写字母),你可以进行某次操作任意次:

使a串中的某一个字符存到一个容器Q中,同时这个字符替换成任意一个字符。但是容器中的字符中不能存在超过k种字符。

然后问你对于l,r(1<=l<=r<=n),问你有多少对(l,r),满足a[i]=b[i],(l<=i<=r).

思路: 因为a字符串中最多有10中小写字母 ,那么可以直接把这10(也有可能小于10)种字符串存入数组中,然后用dfs遍历所有的k种字符存入Q的情况,然后计算直接取最大值即可,

时间复杂度最大也就O(n*(sqrt(2,10)),刚好1e8不会超时。

 代码:


#include<cstdio>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include<vector>
#include<queue>
#include<map>
#define sc_int(x) scanf("%d", &x)
#define sc_ll(x) scanf("%lld", &x)
#define pr_ll(x) printf("%lld", x)
#define pr_ll_n(x) printf("%lld\n", x)
#define pr_int_n(x) printf("%d\n", x)
#define ll long long 
using namespace std;const int N=1000000+100;
int n ,m,h,Time,k;
char a[N],b[N],c[12];
map<int,int>q;
ll ress;void init()
{for(int i =1;i<=n;i++) a[i]=b[i]=0;for(int i ='a';i<='z';i++)q[i]=0;for(int i =1;i<=11;i++)c[i]=0;
}void  cal()
{ll res=0,sum=0;int l=0,r=0;for(int i =1;i<=n;i++){if(a[i]==b[i]||q[a[i]]){if(!l){l=i;r=i;}else r++;}else if(l) {sum=r-l+1;res+=sum*(sum+1)/2;//这边可以计算一下,对于l,r  (l,r)=(r-l+1)*(r-l+1)/2r=l=0;//更新}}sum=r-l+1;if(l)res+=sum*(sum+1)/2;  ress=max(res,ress);
}   void dfs(int i, int x )//i是dfs到了当前位置,x是标记了x个元素
{if(x==min(Time,k)){//如果所有元素都被标记到了或者到了限制cal();return ;}i++;for( i ; i <= Time ; i++){q[c[i]]=1;dfs(i,x+1);q[c[i]]=0;        }return ;
}void slove( )
{ress=0;Time=0;sc_int(n),cin>>k;cin>>a+1>>b+1;for(int i =1;i<=n;i++)    {if(!q[a[i]]){//寻找第一次出现的字符c[++Time]=a[i];q[a[i]]=1;}}for(int i ='a';i<='z';i++)q[i]=0;//map用两次先初始化一下if(k==0){//k为0直接计算cal();cout<<ress<<endl;init();return ;}for(int i =1;i<=Time;i++)//开始dfs{q[c[i]]=1;dfs(i,1);q[c[i]]=0;}cout<<ress;cout<<endl;init();//结束后初始化
}int main()
{int t;sc_int(t);while(t--)slove();return 0;
}

总结:A题做的有点粗心,脑翻以为是至少一次(结果是只要一次),b题意度太久了,c思路是对的,但是小细节有些问题,以至于卡在一个地方卡了1个钟,最后还是凑巧用另一种方法ac后反着来找bug找到的,只能说还要继续训练了。

相关文章:

Codeforces Round #848 (Div. 2)A-C

传送门 目录 A. Flip Flop Sum 代码&#xff1a; B. The Forbidden Permutation 代码&#xff1a; C. Flexible String 代码&#xff1a; A. Flip Flop Sum 题意&#xff1a;给你一个长度为n的数组&#xff08;数组元素只为1或者-1&#xff09;&#xff0c;你要且只能进行…...

机器学习笔记之近似推断(一)从深度学习角度认识推断

机器学习笔记之近似推断——从深度学习角度认识推断引言推断——基本介绍精确推断难的原因虽然能够表示&#xff0c;但计算代价太大无法直接表示引言 本节是一篇关于推断总结的博客&#xff0c;侧重点在于深度学习模型中的推断任务。 推断——基本介绍 推断(Inference\text{…...

指针的进阶

一、字符指针 int main() {char ch w;char* pc &ch;//pc就是字符指针//const char *p "abcdef";//这里其实是把字符串"abcdef"的首地址放入了指针p中//*p w;//这是错误的无法修改值&#xff08;可以看到这里绿色波浪线警告&#xff09;char arr[] …...

一元二次方程方程的类

1 问题设计一个一元二次方程的类&#xff0c;其中包括能够反映一元二次方程的属性与操作行为&#xff0c;然后再设计一个测试类&#xff0c;检测类的使用情况。2 方法使用package语句将方程的属性即计算跟的方法封装在一个有包名的类中&#xff0c;包名为tom.jiafei&#xff0c…...

Ask林曦|来回答,30个你关心的日常问题(二)

在林曦老师的线上书法直播课上&#xff0c;上课前后的聊天时间里&#xff0c;时常有同学向林曦老师提问&#xff0c;这些问题涵盖了日常生活的诸多方面&#xff0c;从身体的保养&#xff0c;到快乐的法门&#xff0c;皆是大家感兴趣的&#xff0c;也都共同关切的。   暄桐教室…...

哪款电容笔适合开学季?电容笔和Apple Pencil的区别

其实&#xff0c;市场上一般的电容笔和Apple Pencil的最大差别&#xff0c;就在于Apple Pencil与普通电容笔两者的重量和压感。然而&#xff0c;由于苹果电容笔价格过高&#xff0c;目前电容笔的市场份额逐渐转向平替电容笔&#xff0c;平替电容笔其性能也逐渐得到改善。下面&a…...

Qt之Qprocess

QProcess 可用于完成启动外部程序&#xff0c;并与之交互通信。 一、启动外部程序的两种方式   1&#xff09;一体式&#xff1a;void QProcess::start(const QString & program,const QStringList &arguments,OpenMode mode ReadWrite)     外部程序启动后&…...

为什么不愿意专升本 学历有什么用

专升本包括两种形式普通专升本和成人专升本。普通专升本毕业是全日制学历&#xff0c;考试仅有一次&#xff0c;错过不能补考所以考生不愿意选择&#xff0c;成人专升本毕业是非全日制学历&#xff0c;学历被国家承认&#xff0c;和普通高校毕业证有相同的使用效力。为何考生不…...

构造函数的使用大全

概述 在C中创建一个对象时&#xff0c;通常需要做一些数据初始化的工作&#xff0c;因此便提供了一个特殊的成员函数 —— 构造函数。一般情况下&#xff0c;并不需要程序员主动调用构造函数&#xff0c;而是在创建对象时&#xff0c;由系统自动调用。构造函数可以由程序员定义…...

ASP.NET Core MVC 项目 IOC容器

目录 一&#xff1a;什么是IOC容器 二&#xff1a;简单理解内置Ioc容器 三&#xff1a;依赖注入内置Ioc容器 四&#xff1a;生命周期 五&#xff1a;多种注册方式 一&#xff1a;什么是IOC容器 IOC容器是Inversion Of Control的缩写&#xff0c;翻译的意思就是控制反转。 …...

ARM工控机/网关- 钡铼技术

一、NXP处理器ARM控制器的介绍 NXP半导体是汽车、穿戴、消费电子等领域中智能机器解决方案的领先供应商。其产品线庞大&#xff0c;包括处理器、微控制器、快速设计平台、ARM控制器等。在物联网控制、汽车电子、安全应用等领域&#xff0c;NXP处理器ARM控制器已成为半导体行业的…...

为什么都在喊数据可视化?它究竟怎么做?

在数字化转型的浪潮中&#xff0c;不论是传统行业&#xff0c;还是新兴行业总会提到“数据可视化”这个词。那数据可视化到底是什么&#xff1f;为什么会受到那么多人追捧&#xff1f;又该怎么才能做到数据可视化呢&#xff1f; 一、数据可视化是什么&#xff1f; 首先“可视…...

nodejs+vue停车场停车位短租系统vscode

目 录前端技术&#xff1a;nodejsvueelementui 前端&#xff1a;HTML5,CSS3、JavaScript、VUE 1、 node_modules文件夹(有npn install产生) 这文件夹就是在创建完项目后&#xff0c;cd到项目目录执行npm install后生成的文件夹&#xff0c;下载了项目需要的依赖项。 2、…...

物理真机上LUKS结合TPM的测试 —— 使用随机数密钥

1. 创建磁盘空间 命令如下&#xff1a; dd if/dev/zero ofenc.disk bs1M count50 实际命令及结果如下&#xff1a; $ dd if/dev/zero ofenc.disk bs1M count50 输入了 500 块记录 输出了 500 块记录 52428800 字节 (52 MB, 50 MiB) 已复制&#xff0c;0.0587495 s&#xff…...

Linux USB 开发指南

文章目录Linux USB 开发指南1 前言1.1 文档简介1.2 目标读者1.3 适用范围2 模块介绍2.1 模块功能介绍2.2 相关术语介绍2.3 模块配置介绍2.3.1 Device Tree 配置说明2.3.2 board.dts 配置说明2.3.3 kernel menuconfig 配置说明2.4 源码结构介绍2.5 驱动框架介绍2.6 Gadget 配置2…...

FreeRTOS入门(03):队列、信号量、互斥量

文章目录目的队列&#xff08;queue&#xff09;信号量&#xff08;semaphore&#xff09;互斥量&#xff08;mutex&#xff09;互斥量递归互斥量总结目的 FreeRTOS提供给用户最核心的功能是任务&#xff08;Task&#xff09;&#xff0c;实际项目中通常会有多个任务&#xff…...

Biome-BGC在模拟过程中,如何使用Linux、Python等,完成前处理和后处理工作???

在Biome-BGC模型中&#xff0c;对于碳的生物量积累&#xff0c;采用光合酶促反应机理模型计算出每天的初级生产力(GPP)&#xff0c;将生长呼吸和维持呼吸减去后的产物分配给叶、枝条、干和根。生物体的碳每天都按一定比例以凋落方式进入凋落物碳库&#xff1b;对于水份输运过程…...

【unittest学习】unittest框架主要功能

1.认识unittest在 Python 中有诸多单元测试框架&#xff0c;如 doctest、unittest、pytest、nose 等&#xff0c;Python 2.1 及其以后的版本已经将 unittest 作为一个标准模块放入 Python 开发包中。2.认识单元测试不用单元测试框架能写单元测试吗&#xff1f;答案是肯定的。单…...

京东测开岗3+1面经+经验分享,拿到offer,月薪34k....

现在&#xff0c;招聘黄金时间已经来临&#xff0c;在网上看了很多大佬的面经&#xff0c;也加了很多交流群&#xff0c;受到了很多朋友的提点&#xff0c;今天终于轮到我来分享面经啦&#xff0c;之前面试了几家公司&#xff0c;最后拿到了京东测试岗的 offer&#xff0c;这里…...

后端接收格式为x-www-form-urlencoded的数据

1.x-www-form-urlencoded是什么&#xff1f; x-www-form-urlencoded纸面翻译即所谓url格式的编码&#xff0c;是post的默认Content-Type&#xff0c;其实就是一种编码格式&#xff0c;类似json也是一种编码传输格式。form表单中使用 form的enctype属性为编码方式&#xff0…...

机器学习可复现性危机:八大维度解析与工程实践指南

1. 项目概述&#xff1a;为什么我们需要重新审视机器学习的“可复现性”&#xff1f;如果你在机器学习领域摸爬滚打过几年&#xff0c;大概率遇到过这样的场景&#xff1a;兴冲冲地打开一篇顶会论文的GitHub仓库&#xff0c;按照README的指示安装依赖、运行脚本&#xff0c;结果…...

观测对比,接入 Taotoken 前后 API 调用的平均延迟与成功率变化

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观测对比&#xff0c;接入 Taotoken 前后 API 调用的平均延迟与成功率变化 作为一个技术团队的负责人&#xff0c;在引入新的技术组…...

ChatGPT翻译质量断崖式下滑的真相:当LLM遇上专业领域术语库缺失,这4种场景下错误率超61%——你的项目还在裸奔吗?

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ChatGPT翻译质量怎么样 ChatGPT 在翻译任务中展现出较强的上下文理解能力与语言生成流畅性&#xff0c;但其质量受输入提示&#xff08;prompt&#xff09;设计、源语言复杂度、专业领域术语密度及目标语言语…...

LayerDivider:3分钟让单张插画变可编辑图层的AI魔法

LayerDivider&#xff1a;3分钟让单张插画变可编辑图层的AI魔法 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你知道吗&#xff1f;现在有超过85%的数字…...

025、原理图库创建与管理

025 原理图库创建与管理:从一次电容封装错位说起 去年做一款工业控制板,BOM清单核对三遍,打样回来焊了十块板子,上电就炸了三块。排查到最后,发现是原理图库里一个0805电容的封装引脚间距画错了0.2mm。焊盘实际间距比标准大了一截,手工焊的时候电容歪着放,引脚搭到隔壁…...

OpenSSH ssh-agent CVE-2023-38408 漏洞修复实战指南

1. 这个漏洞不是“修个配置就能好”的那种——它藏在ssh-agent的共享库加载机制里OpenSSH-ssh-agent CVE-2023-38408&#xff0c;光看编号你可能觉得是又一个常规权限提升补丁。但实际动手前我翻了三天源码才意识到&#xff1a;这不是改几行配置、重启服务就能闭环的问题。它直…...

如何高效利用79万+医疗对话数据:中文医疗AI训练完全攻略

如何高效利用79万医疗对话数据&#xff1a;中文医疗AI训练完全攻略 【免费下载链接】Chinese-medical-dialogue-data Chinese medical dialogue data 中文医疗对话数据集 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-medical-dialogue-data 构建智能医疗问答系…...

BiliDownloader终极教程:如何轻松下载B站视频的完整指南

BiliDownloader终极教程&#xff1a;如何轻松下载B站视频的完整指南 【免费下载链接】BiliDownloader BiliDownloader是一款界面精简&#xff0c;操作简单且高速下载的b站下载器 项目地址: https://gitcode.com/gh_mirrors/bi/BiliDownloader 想要永久保存B站上的精彩视…...

从注册到第一笔消费Taotoken新手指南与核心功能全景

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从注册到第一笔消费&#xff1a;Taotoken 新手指南与核心功能全景 应用场景类&#xff0c;面向完全新接触 Taotoken 平台的用户&am…...

微信小程序wxapkg逆向解析原理与合规源码还原实践

1. 这不是“破解”&#xff0c;而是合法合规的源码审计实践微信小程序生态里&#xff0c;每天有数百万个新版本上线&#xff0c;而开发者真正能拿到手的&#xff0c;往往只有.wxapkg文件——一个经过混淆、压缩、资源内联、逻辑分包的二进制容器。很多人第一反应是&#xff1a;…...