Codeforces Round #825 (Div. 2)

news/2024/5/11 4:06:22/文章来源:https://blog.csdn.net/weixin_51979465/article/details/127275656

A. Make A Equal to B

在这里插入图片描述

Sample input

5
3
1 0 1
0 0 1
4
1 1 0 0
0 1 1 1
2
1 1
1 1
4
1 0 0 1
0 1 1 0
1
0
1

Sample output

1
2
0
1
1

题意:

你有两个长度为n的数组a和b,你可以进行一次操作,将a数组的某个位置的数取反,或者将这个数组打乱成任意顺序,问将a数组变成b数组最少需要的操作次数是多少

思路:

就统计一下a数组和b数组的’0’的差值的绝对值,然后再统计a数组和b数组不同数的位置的个数,这个不同位置的个数是一定大于等于’0’的差值的绝对值的,如果相等的话那就是这个数,如果大于的话就是差值绝对值+1就行,下面看代码把

#include<bits/stdc++.h>
using namespace std;
const int N = 310;
int a[N],b[N];
void solve(){int n;scanf("%d",&n);int cnt = 0;for(int i=1;i<=n;i++) scanf("%d",&a[i]),cnt += a[i];for(int i=1;i<=n;i++) scanf("%d",&b[i]),cnt -= b[i];int butong = 0;for(int i=1;i<=n;i++){butong += a[i] != b[i];}cnt = abs(cnt);if(butong == cnt){printf("%d\n",cnt);}else{printf("%d\n",cnt+1);}
}
int main(){int _;scanf("%d",&_);while(_--) solve();return 0;
}

B. Playing with GCD

在这里插入图片描述

Sample input

4
1
343
2
4 2
3
4 2 4
4
1 1 1 1

Sample output

YES
YES
NO
YES

题意:

给你一个长度为n的数组a,问你能不能构造出一个长度为n+1的数组b,使得任意的 i , gcd(b[i],b[i+1]) = a[i]

思路:

gcd(b[i],b[i+1]) = a[i] , gcd(b[i-1,b[i]) = a[i-1],所以说b[i]至少为lcm(a[i-1],a[i]),也可以是lcm(a[i-1],a[i])的倍数,但是越大的话不如越小优,因为越大的话他和他相邻的数的gcd可能会变大,那就可能导致答案错误,思路就是这个,下面看代码吧:

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int a[N],b[N];
void solve(){int n;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);b[1] = a[1],b[n+1] = a[n];for(int i=2;i<=n;i++) b[i] = a[i-1]*a[i]/__gcd(a[i-1],a[i]);for(int i=1;i<=n;i++){if(__gcd(b[i],b[i+1]) != a[i]){puts("NO");return;}}puts("YES");
}
int main(){int _;scanf("%d",&_);while(_--) solve();return 0;
}

C1. Good Subarrays (Easy Version)

在这里插入图片描述

Sample input

3
3
1 2 3
3
1 1 1
4
2 1 4 3

Sample output

6
3
7

题意:

一个数组是好的就意味着这个数组的所有元素值都大于等于它在这个数组中的相对位置,现在给你一个长度为n的数组a,问你它有多少个子数组是好的。

思路:

我想的是dp,f[i]表示的是以第i个数为结尾,最左边能扩展到的位置,如果当前的数为a[i],代表它最大能当a[i]个数的数组的最后一个,转移的时候就只看前一个能扩展到什么位置就行,下面看代码吧

#include<bits/stdc++.h>
using namespace std;
const int N = 200010;
int a[N],f[N];
void solve(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);f[i] = 0;}f[1] = 1;for(int i=2;i<=n;i++){f[i] = i;if((i-f[i-1]) < a[i]) f[i] = f[i-1];else f[i] = max(f[i-1] + 1,i - a[i] + 1);}long long ans = 0;for(int i=1;i<=n;i++) ans += i + 1 - f[i];printf("%lld\n",ans);
}
int main(){int _;scanf("%d",&_);while(_--) solve();return 0;
}

D. Equal Binary Subsequences

在这里插入图片描述

Sample input

4
2
1010
3
100010
2
1111
2
1110

Sample output

0
1 2
2 3 5
1 2 5
3 2 3 4
1 4
-1

题意:

给你一个长度为2*n的01串,你可以选择一些位置,组成一个子序列,然后将这个子序列循环右移,问你能不能通过最多一次这种操作分出两个长度为n的相同的子序列

思路:

如果1的个数是奇数,那么一定不可能,如果1的个数是偶数,那么一定能构造出来,借鉴了一位大佬的思路,成对的看,下面咱们看一个例子:
1 0 1 0 1 0 1 0
将这个序列循环右移之后的结果就是
0 1 0 1 0 1 0 1
这不就相当于是两两交换吗
然后做法就是两个两个的看,如果主01串相邻两个位置的值不一样就记录一下,都记录的是10这个串的位置,最后两两交换就行,做法就是奇数位置的10的1和偶数位置10的0进行交换,那么这两个位置的值就变成了00和11,那么最后这2n个数的答案就是奇数位置,这个思路非常妙,下面看代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 200010;
char s[N];
void solve(){int n;scanf("%d%s",&n,s+1);n <<= 1;vector<pair<int,int> > q;for(int i=1;i<=n;i+=2){if(s[i] != s[i+1]){if(s[i] == '1') q.push_back({i,i+1});else q.push_back({i+1,i});}}if(q.size()&1){puts("-1");return;}printf("%d ",q.size());for(int i=0;i<q.size();i++){if(i & 1) printf("%d ",q[i].first);else printf("%d ",q[i].second);}puts("");for(int i=1;i<=n;i++) if(i & 1) printf("%d ",i);puts("");
}
int main(){int _;scanf("%d",&_);while(_--) solve();return 0;
}

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

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

相关文章

LVM与磁盘配额

分区的缺点: 1、一旦建立无法修改 想修改得重新格式化 数据丢失 2、不够灵活 空间只能来自一块硬盘,且必须是连续的空间 3、没有备份冗余功能 需要工程师手动备份如果没有lvm可以下载:yum install lvm2 -y LVM的管理命令 主要命令:LVM为我们提供了逻辑概念上的磁盘,使得文…

usb sop and eop

USB包(packet)由SOP,SYNC,Packet内容和EOP组成. SOP信号-------------瞬态信号 协议中的描述&#xff1a;7.1.7.4.1 The start of a packet (SOP) is signaled by the originating port by driving the D and D- lines from the Idle state to the opposite logic level (K …

实验六:倾斜开关实验

OK,周一周二一共10节课,比较辛苦,昨天下午还有咨询师模拟演练,很累,就早早休息了 今天早上就想写一个实验指导书 也就是现在的实验六 一会十点有《C语言程序设计》的课,不过,今天好在就只有两节课(课时,一次大课2个课时,习惯说2节课) 感觉又是我最喜欢和擅长的C…

JSON——简介

JSON——简介 JSON——基础语法 JSON——json数据与java对象的转换// 将java对象转为json字符串User user = new User(1,"zahngsan","123");// 转换String jsonString = JSON.toJSONString(user);System.out.println(jsonString);// 将json字符串转为jav…

java基于vue+springboot 的体育用品销售购物网站 多商家 nodejs

用户在打开网站之后首先打开的是首页部分&#xff0c;在首页部分可以看到一些推荐的信息 环境需要 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;这是目前最稳定的JDK也是被使用最多的JDK版本。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse都可以。推荐IDEA; 3.to…

移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架&#xff0c;超轻量级、高度提炼&#xff0c;一套API优雅支持UDP 、TCP 、WebSocket 三种协议&#xff0c;支持iOS、Android、H5、标准Java平台&#xff0c;服务端基于Netty编写。 工程开源地址是&…

分治法实现二分查找(python)

问题描述&#xff1a; 改写二分查找算法&#xff1a;设a[1…n]是一个已经排好序的数组&#xff0c;改写二分查找算法: 当搜索元素x不在数组中时&#xff0c;返回小于x的最大元素位置i&#xff0c;和大于x的最小元素位置j&#xff1b; (即返回x的左、右2个元素) 当搜索元素x在…

系动词使役动词

系动词 系动词的作用就是赋值 I am a rabbit 把 a rabbit赋值给i我 我是一只兔子 The rabbit is smart 这兔子是聪明的 smart赋值给兔子 系动词连系的方式,就是简简单单把它前后的概念含义连起来而已 所以系动词又叫连系动词 (Linking Verb) 就是把前后两端连起来(link)就好…

基于侧影轮廓的三维模型构建

建模过程 图像的获取 由于待建模物体具有较多细节,因此选择在同一个方向拍摄两个角度的照片(手机倾斜角大约为60度和45度,如下图所示),以及顶部细节照片,最终拍摄的有效照片为35张。模型构建 新建项目,并导入所有拍摄的照片照片掩饰 可以先采用自动掩饰工具将物体轮廓从…

kotlin koin

介绍 Koin是一个面向Android developer的依赖注入框架使用场景 为什么要用依赖注入框架? 比如我们有一个下载器对象Downloader,需要下面三个对象才能完成构造。但是这个下载器对象在各个活动中使用频繁val executor = Executor() val client = HttpClient() val request = Re…

使用 Zpan 搭建低成本个人私有网盘,还不限速

摘要&#xff1a;本文就介绍一个不限速的低成本个人网盘——ZPan&#xff0c;相较于老牌的私有网盘 OwnCloud 等&#xff0c;Zpan 有一个独有的优势&#xff1a;不限速。本文分享自华为云社区《使用 Zpan 搭建低成本个人私有网盘》&#xff0c;作者&#xff1a; 云存储开发者支…

甘特图:制定项目计划的三个要点

任何事情都要有计划&#xff0c;这样才能保证自己的事情按照既定的目标和轨迹推进 制定计划首先要明确以下三点&#xff1a; 1、目标明确&#xff1a;做这个项目是做什么的要达成什么目标。 2、任务明确&#xff1a;达成这个目标要做哪些事&#xff0c;有具体的实施推进步骤。…

MP-SPDZ详细介绍

基础知识概述 隐私计算底层协议包括两种&#xff1a;其一是基础的加密传输协议&#xff0c;用于信息分发&#xff0c;包括不经意传输、秘密分享、同态加密、零知识证明等。其二是加密计算协议&#xff0c;包括乱码电路、同态加密、零知识证明等。 不经意传输是所有隐私计算协…

python 运行错误收集

目录global全局声明错误 global全局声明错误 SyntaxError: name is_login is used prior to global declaration 解决办法:global is_login 放在 if is_login:的上面 is_login = Falsedef login_auth(func_name):def inner(*args, **kwargs):if is_login:res = func_name(*arg…

AlphaZero强化学习模型

搬来了DeepMind的AlphaTensor DeepMind前不久发在Nature上的论文Discovering faster matrix multiplication algorithms with reinforcement learning引发热议。 这篇论文在德国数学家Volken Strassen「用加法换乘法」思路和算法的基础上&#xff0c;构建了一个基于AlphaZero…

[GWCTF 2019]我有一个数据库

打开题目是乱码&#xff0c;好奇怪 御剑扫一下 扫到了phpmyadmin 版本为4.8.1 这个版本是有漏洞的&#xff08;CVE-2018-12613&#xff09;&#xff0c;复现一下 部分源码&#xff1a; $target_blacklist array (import.php, export.php ); ​ // If we have a valid target…

SpringBoot统一处理返回格式

在对接第三方接口的时候&#xff0c;第三方接口返回格式形式为{"result":null,"status":1010}&#xff0c;虽然返回了状态码&#xff0c;但是状态码对应的描述信息并没有携带&#xff0c;前端在使用的时候需要根据状态码返回一个友好的提示&#xff0c;如此…

刘韧:我每时每刻都会注意管理自己的知识

1. 担心总能让我积极行动起来。2. 要提早主动求变&#xff0c;不要等到被迫地、见招拆招地应变。3. 很多愚蠢的念头&#xff0c;都源于自己分内的事&#xff0c;却老想让别人负责&#xff0c;比如将自己的愿望寄托在子女身上。4. 推卸责任的同时&#xff0c;多少会对等地给予一…

ShardingSphere 5.2.0:分片审计功能拦截多分片场景下的不合理请求

一、背景Apache ShardingSphere 基于用户的实际使用场景&#xff0c;为用户打造了多种实用功能&#xff0c;包括数据分片、读写分离等。在数据分片功能中&#xff0c;我们发现有些用户涉及到的分片较多&#xff0c;一个分片逻辑表可能对应后端 1000 个物理表&#xff0c;这给用…

猿创征文 | 国产数据库实战之TiDB 数据库快速入门

猿创征文 | 国产数据库实战之TiDB 数据库快速入门一、系统检查1.检查系统版本2.查看本地IP地址3.TiDB集群介绍二、快速部署本地测试集群1.安装 TiUP工具2.声明全局环境变量3.快速部署TiDB 集群三、连接 TiDB 数据库1.新开一个session 以访问 TiDB 数据库2.通过Mysql客户端连接T…