Codeforces Round #956 (Div. 2) and ByteRace 2024

A. Array Divisibility

 

思路:

找出特例,发现输出 1∼𝑛 符合题意。直接输出1~n即可.

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 1000005
ll dp[N], w[N], v[N], h[N];
ll dis[1005][1005];
ll a, b, c, n, m, t;
ll ans, sum, num, minn = 1e9 + 7, maxx = 0;
struct node {ll a, b, c;
}f[N];
string s1, s2;
int main()
{cin >> t;while (t--){cin >> n;for (int i = 1; i <= n; i++){cout << i << " ";}cout << endl;}return 0;
}

B. Corner Twist

 

 思路:

关键的充要条件是 𝑎,𝑏 的每一行/列的和模 3 后相等。证明的话,首先要想到 2×2 的操作是可以完成所有大小的子矩阵操作的,手模一下可以发现是对的。接着考虑比较暴力的方式,我们遍历 𝑖,𝑗 从 1∼𝑛−1 和 1∼𝑚−1,然后把 𝑎𝑖,𝑗 按对应操作修改成 𝑏𝑖,𝑗,经过这样之后前 𝑛−1 行和 𝑚−1 列都是可以相等的,所以也就是看最后那一列是否满足。而这个遍历顺序又是可以变化的,也就是最后剩下的行列可以是任意一行一列,所以要所有行列均满足模 3 结果相等。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 1000005
ll dp[N], w[N], v[N], h[N];
char a[505][505], b[505][505];
ll x1[505], x2[505], y[505], y2[505];
ll  n, m, t;
ll ans, sum, num, minn = 1e9 + 7, maxx = 0;
struct node {ll a, b, c;
}f[N];
string s1, s2;
int main()
{cin >> t;while (t--){cin >> n >> m;memset(x1, 0, sizeof(x1));memset(x2, 0, sizeof(x2));memset(y, 0, sizeof(y));memset(y2, 0, sizeof(y2));for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> a[i][j];x1[i] += a[i][j]-'0';y[j] += a[i][j]-'0';}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> b[i][j];x2[i] += b[i][j]-'0';y2[j] += b[i][j]-'0';}}int flag = 1;for (int i = 1; i <= n; i++) {if (x1[i] % 3 != x2[i] % 3) {flag = 0;break;}}for (int j = 1; j <= m; j++) {if (y[j] % 3 != y2[j] % 3) {flag = 0;break;}}if (flag == 1)cout << "YES" << endl;elsecout << "NO" << endl;}return 0;
}

C. Have Your Cake and Eat It Too

 

 

思路:

枚举三个人的顺序,然后把序列分成三段就行了,判断可以直接 𝑂(𝑛),至于枚举顺序不需要重复粘贴六次代码,用一个 next_permutation 函数就行了。

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 1000005
typedef long long ll;
typedef unsigned long long ull;
ll n, m, t, h, k;
ll ans, num, sum, cnt;
ll dp[N], ac[4][N], a[4][N], get1[N], get2[N];
bool flag, vis[N];
struct node {ll mark, x, y;
}f[N];
bool cmp(node a, node b) {return a.mark < b.mark;
}
int main()
{cin >> t;while (t--){cin >> n;ac[1][0] = ac[2][0] = ac[3][0] = sum = 0;for (int i = 1; i <= 3; i++) {for (int j = 1; j <= n; j++) {cin >> a[i][j];if(i==1) sum += a[i][j];ac[i][j] = ac[i][j - 1] + a[i][j];}}sum = (sum + 2) / 3;for (int i = 1; i <= 3; i++) {for (int j = 1; j <= n; j++) {if (ac[i][j] >= sum) {get1[i] = j;break;}}}for (int i = 1; i <= 3; i++) {for (int j = n - 1; j >= 0; j--) {if (ac[i][n]-ac[i][j] >= sum) {get2[i] = j+1;break;}}	}ll order[3] = { 1,2,3 };flag = 1;do {for (int i = 0; i < 3; i++)f[i].mark = order[i];f[1].x = get1[order[0]] + 1, f[1].y = get2[order[2]] - 1;if (ac[order[1]][f[1].y] - ac[order[1]][f[1].x - 1] < sum)continue;f[0].x = 1, f[0].y = get1[order[0]];f[2].x = get2[order[2]], f[2].y = n;sort(f , f + 3, cmp);for (int i = 0; i < 3; i++) {cout << f[i].x << " " << f[i].y << " ";}cout << endl;flag = 0;break;} while (next_permutation(order, order + 3));if (flag)cout << -1 << endl;}return 0;
}

D. Swap Dilemma

 

思路:

首先如果元素不同直接输出"NO",如果相同,那么我们可以通过求出个两个序列的转换成相同序列的次数,也就是会改变 𝑎,𝑏 逆序对的数量,并且同时改变其数量奇偶性,所以怎么只要保证两次序列的奇偶性相同即可,但我们可以进行优化,将只对一个序列进行操作,只要将序列B映射到序列A上,那么问题就变成了只需要求映射后的序列B的逆序对个数即可.

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 1000005
typedef long long ll;
typedef unsigned long long ull;
ll n, m, t, h, k;
ll ans, num, sum, cnt;
ll temp[N], a[N], f1[N], f2[N];
bool flag, vis[N];
struct node {ll mark, x, y;
}f[N];
bool cmp(node a, node b) {return a.mark < b.mark;
}
void merge_sort(int l, int r)
{if (l == r)return;int mid = l + r >> 1;merge_sort(l, mid);merge_sort(mid + 1, r);int ll = l, st = l, rr = mid + 1;while (l <= mid and rr <= r){if (a[l] <= a[rr])temp[ll++] = a[l++];elsetemp[ll++] = a[rr++], ans += mid - l + 1;}while (l <= mid)temp[ll++] = a[l++];while (rr <= r)temp[ll++] = a[rr++];for (int i = st; i <= r; i++)a[i] = temp[i];return;
}
int main()
{cin >> t;while (t--){ans = 0,flag=1;cin >> n;map<ll, ll>mp;for (int i = 1; i <= n; i++) {cin >> f1[i];mp[f1[i]] = i;}for (int i = 1; i <= n; i++) {cin >> f2[i];}for (int i = 1; i <= n; i++) {if (mp.count(f2[i]) == 0) {flag = 0;break;}a[i] = mp[f2[i]];}merge_sort(1, n);if (flag == 0) {cout << "NO" << endl;}else {if (ans % 2==0)cout << "YES" << endl;elsecout << "NO" << endl;}}return 0;
}

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

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

相关文章

iOS 开发技巧 - 使用本地 json 文件

前言 使用本地 json 文件的场景&#xff0c;在我们开发功能的阶段&#xff0c;服务端接口字段定义好了后&#xff0c;有些接口响应很慢&#xff0c;请求到响应可能要 几十秒甚至一分钟&#xff0c;我们需要频繁调用接口来调试功能&#xff1b;还有就是调用一些我们需要付费的三…

Ubuntu20.04下修改samba用户密码

Ubuntu20.04下修改samba用户密码 在Ubuntu系统中&#xff0c;修改samba密码通常涉及到两个方面&#xff1a;更改samba用户的密码和重置samba服务的密码数据库。以下是如何进行操作的步骤&#xff1a; 1、更改samba用户密码&#xff1a; 打开终端&#xff0c;使用以下命令更改…

vue打包terser压缩去除控制台打印和断点

情况一&#xff1a; 1、vue-cli搭建 代码压缩工具terser在vue-cli里面是自动支持的&#xff0c;所以直接在vue.config.js里面加入下面配置&#xff1a; const {defineConfig} require(vue/cli-service) module.exportsdefineConfig({transpileDependencies:true,terser:{te…

看影视学英语(假如第一季第一集)

in the hour也代表一小时吗&#xff1f;等同于in an hour&#xff1f;

activemq-CVE-2022-41678

Apache ActiveMQ Jolokia 后台远程代码执行漏洞 Apache ActiveMQ在5.16.5&#xff0c;5.17.3版本及以前&#xff0c;后台Jolokia存在一处任意文件写入导致的远程代码执行漏洞。 启动环境 admin/admin 方法一&#xff1a;利用poc 这个方法受到ActiveMQ版本的限制&#xff0c;因…

Linux 创建新虚拟机的全过程图解

一、创建新虚拟机 1.选择自定义 2.直接下一步 3.选择稍后安装 4.设置虚拟机名和安装位置 5.配置处理器&#xff08;处理器数量&#xff1a;4、每个处理器的内核&#xff1a;2&#xff09; 6. 内存选择 7.网络类型 8. IO控制器类型-默认推荐 9.磁盘类型-默认推荐 10.选择虚拟磁…

JS代码动态打印404页面源码

JS代码动态打印404页面源码&#xff0c;适合做网站错误页&#xff0c;具有js动态打印效果&#xff0c;喜欢的朋友可以拿去 源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务…

Linux udp编程

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

空间计量模型及 Stata 具体操作步骤

目录 一、引言 二、空间计量模型理论原理 空间自回归模型&#xff08;SAR&#xff09;&#xff1a; 空间误差模型&#xff08;SEM&#xff09;&#xff1a;&#xff0c; 空间杜宾模型&#xff08;SDM&#xff09;&#xff1a; 三、实证模型构建 四、数据准备 五、Stata …

14-56 剑和诗人30 - IaC、PaC 和 OaC 在云成功中的作用

介绍 随着各大企业在 2024 年加速采用云计算&#xff0c;基础设施即代码 (IaC)、策略即代码 (PaC) 和优化即代码 (OaC) 已成为成功实现云迁移、IT 现代化和业务转型的关键功能。 让我在云计划的背景下全面了解这些代码功能的当前状态。我们将研究现代云基础设施趋势、IaC、Pa…

【电路笔记】-C类放大器

C类放大器 文章目录 C类放大器1、概述2、C类放大介绍3、C类放大器的功能4、C 类放大器的效率5、C类放大器的应用:倍频器6、总结1、概述 尽管存在差异,但我们在之前有关 A 类、B 类和 AB 类放大器的文章中已经看到,这三类放大器是线性或部分线性的,因为它们在放大过程中再现…

Collection 和 Collections 的区别与用法

Collection 和 Collections 的区别与用法 1、Collection 接口1.1 主要特点1.2 常见方法 2、 Collections 工具类2.1 主要特点2.2 常见方法 3、示例代码3.1 使用 Collection 接口3.2 使用 Collections 工具类 4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收…

STM32学习历程(day6)

EXTI外部中断使用教程 首先先看下EXTI的框图 看这个框图就能知道要先初始化GPIO外设 那么和前面一样 1、先RCC使能时钟 2、配置GPIO 选择端口为输入模式&#xff0c; 3、配置AFIO&#xff0c;选择我们用的GPIO连接到后面的EXTI 4、配置EXTI&#xff0c;选择边沿触发方式…

LVS实验

LVS实验 nginx1 RS1 192.168.11.137 nginx2 RS2 192.168.11.138 test4 调度器 ens33 192.168.11.135 ens36 12.0.0.1 test2 客户端 12.0.0.10 一、test4 配置两张网卡地址信息 [roottest4 network-scripts]# cat ifcfg-ens33 TYPEEthernet BOOTPROTOstatic DEFROUTEyes DEVIC…

详解平面DP(上)

前言 其实平面DP和正常的dp没有什么本质上的区别&#xff0c;只不过是在二维的面上进行DP&#xff0c;而且&#xff0c;客观的说&#xff0c;其实和递推没有什么区别&#xff0c;不要把他想的太难了 讲解 本蒻鸡思前想后&#xff0c;好像关于平面DP的理论知识好像没有什么&a…

前后端分离系统

前后端分离是一种现代软件架构模式&#xff0c;特别适用于Web应用开发&#xff0c;它强调将用户界面&#xff08;前端&#xff09;与服务器端应用逻辑&#xff08;后端&#xff09;相分离。两者通过API接口进行数据交互。这种架构模式的主要优势在于提高开发效率、维护性和可扩…

Git命令常规操作

目录 常用操作示意图 文件的状态变化周期 1. 创建文件 2. 修改原有文件 3. 删除原有文件 没有添加到暂存区的数据直接 rm 删除即可&#xff1a; 对于添加到暂存区的数据 文件或目录&#xff1a; 4. 重命名暂存区数据 5. 查看历史记录 6. 还原历史数据 恢复过程的原…

最新深度技术Win7精简版系统:免费下载!

在Win7电脑操作中&#xff0c;用户想要给电脑安装上深度技术Win7精简版系统&#xff0c;但不知道去哪里才能找到该系统版本&#xff1f;接下来系统之家小编给大家带来了深度技术Win7系统精简版本的下载地址&#xff0c;方便大家点击下载安装。系统安装步骤已简化&#xff0c;新…

设计模式8-桥模式

设计模式8-Bridge 桥模式 由来与目的模式定义结构代码推导1. 类和接口的定义2. 平台实现3. 业务抽象4. 使用示例总结1. 类数量过多&#xff0c;复杂度高2. 代码重复3. 不符合单一职责原则4. 缺乏扩展性改进后的设计1. 抽象和实现分离&#xff08;桥接模式&#xff09;2. 抽象类…

学习XDMA—20240709

概览&#xff1a; 在内部&#xff0c;子系统可以配置为实现多达8个独立的物理DMA引擎(最多4个H2C和4个C2H)。这些DMA引擎可以映射到单独的AXI4Stream接口&#xff0c;也可以将共享的AXI4内存映射(MM)接口映射到用户应用程序。在axis4 MM接口上&#xff0c;PCI Express的DMA/桥接…