Codeforces Round 1024 (Div.2)

比赛链接:CF1024

A. Dinner Time

只有当 n n n p p p 的倍数而且 n ⋅ q p ≠ m \frac{n \cdot q}{p} \not= m pnq=m 时输出 NO,其余情况均满足条件。

时间复杂度: O ( 1 ) O(1) O(1)

#include <bits/stdc++.h>
using namespace std;const int N = 105;
int n, m, p, q, a[N], sum[N];void solve() {cin >> n >> m >> p >> q;if (n % p == 0 && n / p * q != m) cout << "NO\n";else cout << "YES\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

B. The Picky Cat

  • 首先, a 1 a_1 a1 是否进行操作变成 − a 1 -a_1 a1 并不影响最后答案是否存在。
  • 所以,可以先把 a 1 a_1 a1 先变成整数,然后找是否至少有 ⌈ n 2 ⌉ \lceil \frac{n}{2}\rceil 2n a i ( 1 ≤ i ≤ n ) a_i (1 \le i \le n) ai(1in) 大于等于 a 1 a_1 a1 即可。
  • 如果有超过 ⌈ n 2 ⌉ \lceil \frac{n}{2}\rceil 2n a i ( 1 ≤ i ≤ n ) a_i (1 \le i \le n) ai(1in) 大于等于 a 1 a_1 a1,将其中一部分设为负数即可。

时间复杂度: O ( n ) O(n) O(n)

#include <bits/stdc++.h>
using namespace std;const int N = 1e5 + 10;
int n, a[N];void solve() {cin >> n;for (int i = 1; i <= n; i++) cin >> a[i], a[i] = abs(a[i]);int tot = 1;for (int i = 2; i <= n; i++)tot += (a[1] <= a[i]);if (tot >= (n + 1) / 2) cout <<"YES\n";else cout << "NO\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

C. Mex in the Grid

构造题。

  • 可以发现只要不包含 0 0 0 的子数组的 M E X MEX MEX 都是 0 0 0,因此,为了让 0 0 0 这个数尽可能多地在子数组中出现我们要把 0 0 0 放在 a n 2 , n 2 a_{\frac{n}{2}, \frac{n}{2}} a2n,2n
  • 为了最大化 M E X MEX MEX 的和,我们要一层一层的往外放数字,因为这样能让所有以 0 0 0 为中心的大小为 i ⋅ i i \cdot i ii 的子数组的 M E X MEX MEX 的和最大。
  • 在每一层放数字的时候,我们可以按照逆时针的顺序放置,这样在以 0 0 0 为中心的正方形子数组中,能让有一些只包含某一块区域的子数组的 M E X MEX MEX 更大。

时间复杂度: O ( n 2 ) O(n^2) O(n2)

#include <bits/stdc++.h>
using namespace std;constexpr int N = 505;
int n, a[N][N], cnt = 0;
constexpr int dx[4] = { 0, 1, 0, -1 }, dy[4] = { 1, 0, -1, 0 };void solve() {cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) a[i][j] = 0;cnt = 1;int step = 1, d = 0;int x = (n + 1) / 2, y = (n + 1) / 2;while (cnt < n * n) {for (int i = 1; i <= step; i++) {x += dx[d], y += dy[d];a[x][y] = cnt++;}d = (d + 1) % 4;if (d == 0 || d == 2) step++;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) cout << a[i][j] << " ";cout << "\n";}
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

D. Quartet Swapping

法一:奇偶性

  • 根据操作的性质,位于奇数位的数字只能交换到奇数位,位于偶数位的数字只能交换到偶数位。
  • 最小的子序列一定是所有奇偶位置上的数字都分别从小到大排列。
  • 但由于操作的最小长度是 4 4 4,只有 [ 1 , n − 3 ] [1, n - 3] [1,n3] 里面的数字能够保证满足这个性质,最后 3 3 3 位数字可能无法满足这个条件。
  • 进一步观察交换操作可以得知,最后 3 3 3 位数字,能否满足第二个条件,与奇偶位置上所有数字的逆序对的奇偶是否相同有关。如果两者逆序对数量的奇偶相同,那么最后 3 3 3 位也能满足第二个条件;否则,无法满足条件。

时间复杂度: O ( n log ⁡ n ) O(n \log n) O(nlogn)

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;
int n, a, ans[N], t[N];void add(int x, int k) {while (x <= n) {t[x] += k;x += (x & (-x));}
}int query(int x) {int res = 0;while (x) {res += t[x];x -= (x & (-x));}return res;
}void solve() {cin >> n;vector<int> odd, even;for (int i = 1; i <= n; i++) {cin >> a;if (i & 1) odd.push_back(a);else even.push_back(a);}for (int i = 0; i <= n; i++) t[i] = 0;int num = 0;for (int i = odd.size() - 1; i >= 0; i--) {num += query(odd[i]);add(odd[i], 1);}for (int i = 0; i <= n; i++) t[i] = 0;for (int i = even.size() - 1; i >= 0; i--) {num -= query(even[i]);add(even[i], 1);}sort(odd.begin(), odd.end()), sort(even.begin(), even.end());for (int i = 0; i < (int)odd.size(); i++) ans[2 * i + 1] = odd[i];for (int i = 0; i < (int)even.size(); i++) ans[2 * i + 2] = even[i];if (num & 1) swap(ans[n - 2], ans[n]);for (int i = 1; i <= n; i++) cout << ans[i] << " "; cout << "\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

法二:贪心

  • 进行题目中的操作的本质是为了将后面较小的数字依次往前移,操作结果等价于 ( i i i, i + 1 ) i + 1) i+1), ( j j j, j + 1 j + 1 j+1) 位置上的数字分别对应交换。
  • 利用 s e t set set 分别维护后面奇偶位置上的数字,从前往后分别将后面对应奇偶位置上最小的数字往前移动到当前位置即可。

时间复杂度: O ( n log ⁡ n ) O(n \log n) O(nlogn)

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;
int n, a[N], vis[N];void op(int x, int y) {swap(a[x], a[y]), swap(a[x + 1], a[y + 1]);vis[a[x]] = x, vis[a[y]] = y;vis[a[x + 1]] = x + 1, vis[a[y + 1]] = y + 1;
}void solve() {cin >> n;set<int> odd, even;for (int i = 1; i <= n; i++) {cin >> a[i], vis[a[i]] = i;if (i & 1) odd.insert(a[i]);else even.insert(a[i]);}for (int i = 1; i <= n - 3; i++) {if (i & 1) {int num = *odd.begin();odd.erase(odd.begin());if (vis[num] == n) op(n - 3, n - 1);op(i, vis[num]);} else {int num = *even.begin();even.erase(even.begin());if (vis[num] == n) op(n - 3, n - 1);op(i, vis[num]);}}for (int i = 1; i <= n; i++) cout << a[i] << " ";cout << "\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

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

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

相关文章

【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;LeetCode 热题 100 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 二叉树的中序遍历二叉树的最大深度翻转二叉树对称二叉树二叉树的直径二叉树的层序遍历将有序数组转换为二叉搜索树验…

Tomcat发布websocket

一、tomcal的lib放入文件 tomcat-websocket.jar websocket-api.jar 二、代码示例 package com.test.ws;import com.test.core.json.Jmode;import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.util.concurrent.CopyOnWriteArraySet; imp…

LLM笔记(二)LLM数据基础-分词算法(2)

文章目录 1. 分词算法概述1.1 基于词典的&#xff08;或基于规则的&#xff09;分词算法1.2 基于统计的&#xff08;或基于机器学习的&#xff09;分词算法1.3 基于深度学习的分词算法1.4 子词&#xff08;Subword&#xff09;分词算法1.5 混合分词算法1.6 针对不同语言的特点 …

Uniapp开发鸿蒙应用时如何运行和调试项目

经过前几天的分享&#xff0c;大家应该应该对uniapp开发鸿蒙应用的开发语法有了一定的了解&#xff0c;可以进行一些简单的应用开发&#xff0c;今天分享一下在使用uniapp开发鸿蒙应用时怎么运行到鸿蒙设备&#xff0c;并且在开发中怎么调试程序。 运行 Uniapp项目支持运行到…

数据湖与数据仓库融合:Hudi、Iceberg、Delta Lake 实践对比

在实时与离线一体化的今天,数据湖与数据仓库边界不断融合,越来越多企业选用如 Hudi、Iceberg、Delta Lake 等开源方案实现统一的数据存储、计算、分析平台。本篇将围绕以下关键点,展开实战对比与解决方案分享: ✅ 实时写入能力 ✅ ACID 保证 ✅ 增量数据处理能力 ✅ 流批一…

Python爬虫(29)Python爬虫高阶:动态页面处理与云原生部署全链路实践(Selenium、Scrapy、K8s)

目录 引言&#xff1a;动态爬虫的技术挑战与云原生机遇一、动态页面处理&#xff1a;Selenium与Scrapy的协同作战1.1 Selenium的核心价值与局限1.2 Scrapy-Selenium中间件开发1.3 动态分页处理实战&#xff1a;京东商品爬虫 二、云原生部署&#xff1a;Kubernetes架构设计与优化…

数据结构(十)——排序

一、选择排序 1.简单选择排序 基本思想&#xff1a;假设排序表为[1,…,n]&#xff0c;第i趟排序即从[i,…,n]中选择关键字最小的元素与L[i]交换 eg&#xff1a;给定关键字序列{87&#xff0c;45&#xff0c;78&#xff0c;32&#xff0c;17&#xff0c;65&#xff0c;53&…

小结:jvm 类加载过程

类加载过程 是Java虚拟机&#xff08;JVM&#xff09;将字节码文件&#xff08;.class文件&#xff09;加载到内存中&#xff0c;并转换为运行时数据结构的过程。这个过程可以分为多个步骤&#xff0c;每个步骤都有其特定的任务和目的。根据你提供的信息&#xff0c;以下是类加…

2024 山东省ccpc省赛

目录 I&#xff08;签到&#xff09; 题目简述&#xff1a; 思路&#xff1a; 代码&#xff1a; A&#xff08;二分答案&#xff09; 题目简述&#xff1a; 思路&#xff1a; 代码&#xff1a; K&#xff08;构造&#xff09; 题目&#xff1a; 思路&#xff1a; 代…

turn.js与 PHP 结合使用来实现 PDF 文件的页面切换效果

将 Turn.js 与 PHP 结合使用来实现 PDF 文件的页面切换效果&#xff0c;你需要一个中间步骤将 PDF 转换为 Turn.js 可以处理的格式&#xff08;如 HTML 页面或图片&#xff09;。以下是实现这一功能的步骤和示例代码&#xff1a; 步骤 1: 安装必要的库 首先&#xff0c;你需要…

Python实现NOA星雀优化算法优化卷积神经网络CNN回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 在当今数据驱动的时代&#xff0c;卷积神经网络&#xff08;CNN&#xff09;不仅在图像分类任务中…

(面试)View相关知识

1、View绘制流程 onMeasure() 确定View的测量宽高。onLayout() 确定View的最终宽高和四个顶点的位置。onDraw() 将View 绘制到屏幕上。 2、MeasureSpec有三种测量模式&#xff1a; 2.1. EXACTLY&#xff08;精确模式&#xff09; 含义&#xff1a;父容器明确指定了子View的精…

数组名既可作为指针也可作为变量名

在C语言中&#xff0c;数组名在不同的上下文中既可以作为指向数组首个元素的指针&#xff0c;也可以代表整个数组&#xff0c;这是由C语言的设计和语法规则决定的&#xff0c;下面我来详细解释一下。 1. 数组名作为指向首元素的指针 在大多数情况下&#xff0c;当数组名出现在…

Java异常、泛型与集合框架实战:从基础到应用

在Java编程的世界里&#xff0c;异常处理、泛型和集合框架是构建高效、健壮应用的关键技术。通过掌握这些技术&#xff0c;我们可以更好地管理程序运行时的错误&#xff0c;提高代码的复用性和类型安全性。今天&#xff0c;我将通过一系列实验&#xff0c;分享如何在Java中使用…

Spring源码之解决循环依赖 三级缓存

目录 三级缓存核心原理 循环依赖的解决过程 1. Bean A创建过程中提前曝光工厂 2. Bean B创建时发现依赖A&#xff0c;从缓存获取 3. Bean A继续完成初始化 三级缓存的作用总结 二级缓存为何不够解决缓存依赖&#xff1f; 三级缓存如何解决&#xff1f; 为什么不直接在…

K8S Ingress 实现AB测试、蓝绿发布、金丝雀(灰度)发布

假设有如下三个节点的 K8S 集群&#xff1a; ​ k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、场景分析 阅读本文&#xff0c;默认您已经安装了 Ingress Nginx。 1&#xff09;A/B 测试 A/B 测试基于用户请求的元信息将流量路由…

深入理解构造函数,析构函数

目录 1.引言 2.构造函数 1.概念 2.特性 3.析构函数 1.概念 2.特性 1.引言 如果一个类中什么都没有&#xff0c;叫作空类. class A {}; 那么我们这个类中真的是什么都没有吗?其实不是,如果我们类当中上面都不写.编译器会生成6个默认的成员函数。 默认成员函数:用户没有显…

Oracle 11.2.0.4 pre PSU Oct18 设置SSL连接

Oracle 11.2.0.4 pre PSU Oct18 设置SSL连接 1 说明2 客户端配置jdk环境3服务器检查oracle数据库补丁4设置ssla 服务器配置walletb 上传测试脚本和配置文件到客户端c 服务器修改数据库侦听和sqlnet.orad 修改客户端的sqlnet.ora和tnsnames.ora的连接符e 修改java代码的数据连接…

BrepGen中的几何特征组装与文件保存详解 deepwiki occwl OCC包装库

有这种好东西我怎么不知道 AutodeskAILab/occwl: Lightweight Pythonic wrapper around pythonocc 组装几何特征以创建B-rep模型 保存为STEP和STL文件细说 Fast 快速 Searched across samxuxiang/BrepGen Ill explain how BrepGen assembles geometric features to create B-r…

重庆 ICPC 比赛游记

2025.5.9 比赛前一天晚上&#xff0c;激动地睡不着觉&#xff0c;起来收拾了好多东西。&#xff08;其实就四本书&#xff0c;剩下的全是零食……关键在于这四本书基本没用。&#xff09; 2025.5.10 学校丧心病狂的让我们 6:20 到校门口集合坐车&#xff08;据说是怕赶不上比…