【CF VP记录】Codeforces Round 1008 (Div. 2)

比赛链接
本文原文发布于博客园,如您在其他平台刷到此文,请前往博客园获得更好的阅读体验。
跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18766146

开题 + 补题情况

坠机场,要是赛时打了的话就又回青了,前两题很快开出来了,第三题脑残了,一开始觉得只需要构造第一个数就行了然后爽吃两发罚时。
image

A. Final Verdict

瞎猜的,只要所有数的和除以 \(n\) 得到的值为 \(x\) 一定有解,暂时没想到如何证明,有空再来证一证。

点击查看代码
#include <bits/stdc++.h>
#define inf 2e18
#define int long longconst int N = 2e5 + 9;void solve()
{int n, x;std::cin >> n >> x;std::vector<int> a(n);int sum = 0;for(auto &i : a) {std::cin >> i;sum += i;}if(sum % n == 0 && sum / n == x) {std::cout << "YES\n";} else {std::cout << "NO\n";}
}

B. Vicious Labyrinth

题目要让所有人离 \(n\) 的距离最小化。
我们对 \(k\) 分奇偶讨论:

  • 如果 \(k\) 为奇数,那么我们只需要把 \(n\) 传送到 \(n - 1\),其余位置传送到 \(n\),那么经过一次传送后,就只有一个人在 \(n - 1\) 的位置,其他人均在 \(n\) 的位置,接下来偶数次只会在这两个位置反复横跳,答案为 \(1\)
  • 如果 \(k\) 为偶数,那么我们把 \(n - 1\) 传送到 \(n\),其余位置传送到 \(n - 1\),这样再来一次传送后,就只有一个人在 \(n - 1\) 的位置,其他人均在 \(n\) 的位置,接下来偶数次只会在这两个位置反复横跳,答案为 \(1\)

由于不能往原位置传送,所以至少有一个人无法抵达 \(n\),因此答案至少为 \(1\),所以上述构造为最优解。

点击查看代码
#include <bits/stdc++.h>
#define inf 2e18
#define int long longconst int N = 2e5 + 9;void solve()
{int n, k;std::cin >> n >> k;if(k & 1) {for(int i = 1;i <= n;i ++) {if(i == n)std::cout << n - 1 << ' ';else std::cout << n << ' ';}} else {for(int i = 1;i <= n;i ++) {if(i == n - 1)std::cout << n << ' ';else std::cout << n - 1 << ' ';}}std::cout << '\n';
}

C. Breach of Faith

一开始以为只要把第一项当成未知项,然后把后面的数排一下序求一下就行了,直到我搓出了这个样例 \(2, 3, 4, 5\),这个样例按这个想法来的话,求出来的值是 \(-2\),显然不符合题意,并且除了这种情况,还有可能导致数字重复,同样不符合题意。
对于此题,我们对题目中的式子进行变形:\(0 = -a_1 + a_2 -a_3 + ... +a_{2 \times n} - a_{2 \times n + 1}\)
我们首先对所给 \(b\) 数组进行一下从小到大排序,因为这样可以一减一加后是正数,更容易命中答案(其实这个也是猜的,为什么要排序具体的也没细证)。
然后,我们对上面那个式子枚举每一项作为消失项,通过对上面的新式子进行移项求出这一项的值,然后判断一下这个值是否合法,如果合法,这就是满足题意的构造。
对于移项后其他项的和,可以通过记录奇偶前缀和来快速求出。
时间复杂度:\(O(n \log n)\)\(\log n\) 来源于我使用了 map 记录一个数字是否出现过。

点击查看代码
#include <bits/stdc++.h>
#define inf 2e18
#define int long longconst int N = 2e5 + 9;void solve()
{int n;std::cin >> n;std::vector<int> a(2 * n + 2), b(2 * n + 1);std::map<int, bool> vis;for(int i = 1;i <= 2 * n;i ++) {std::cin >> b[i];vis[b[i]] = true;}sort(b.begin() + 1, b.end());std::vector<int> preodd(2 * n + 2, 0), preeve(2 * n + 2, 0);for(int i = 1;i <= 2 * n;i ++) {if(i & 1) {preodd[i] = preodd[i - 1] + b[i];preeve[i] = preeve[i - 1];}else {preodd[i] = preodd[i - 1];preeve[i] = preeve[i - 1] + b[i];} }for(int i = 1;i <= 2 * n + 1;i ++) {int ans = 0;ans += preodd[i - 1];ans -= preeve[i - 1];ans += preeve[2 * n] - preeve[i - 1];ans -= preodd[2 * n] - preodd[i - 1];if(i & 1) {ans = -ans;}if(!vis.count(ans) && ans > 0) {for(int j = 1;j < i;j ++) {a[j] = b[j];}a[i] = ans;for(int j = i;j <= 2 * n;j ++) {a[j + 1] = b[j];}break;}}for(int i = 1;i <= 2 * n + 1;i ++) {std::cout << a[i] << " ";}std::cout << '\n';
}

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

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

相关文章

32位系统上的Linux的highmem

什么是highmem? Linux内存管理 highmem的出现与Linux的内存管理相关。众所周知,linux内核一般将处理器的虚拟地址空间分为两个部分。底部较大的部分用于用户进程,而顶部的较小部分用于内核。这个划分的比例通常是1:3(在编译内核时可以通过特殊的配置选项修改这个比例)。所…

halcon 深度学习教程(一)分类检测 (工业里如何使用halcon深度学习去检测分类产品)

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18766108深度学习教程目录如下,还在继续更新完善中 深度学习系列教程目录 本篇主要是入门halcon的深度学习篇,参考halcon实例classify_fruit_deep_learning.hdev,不过去实例的话会比较复杂一些,不便于理解,这…

3-11

今天学习android atudio 设置了Onclick事件监听 实现了页面跳转

浅谈动态 dp

DDP,即动态动态规划,一般是指在原有的 DP 模型上不断对初始值进行修改并得出答案。 一般而言都是进行单点修改,并且搭配数据结构以及矩阵进行实现。 这里要先给出一个前置知识: 广义矩阵乘法 原矩阵乘法式子为 \(C_{i,j}=\sum_kA_{i,k}\times B_{k,j}\)。 其实写成这样同样…

四款报表软件全解析:从山海鲸报表到Sisense的企业数据利器

概述 在大数据时代,企业对数据分析和决策支持的要求日益增强,报表软件已成为现代管理中不可或缺的重要工具。它们能够高效地整合、分析和展示数据,帮助企业从海量数据中快速提取有价值的信息,支持精准决策。本文将为大家介绍4款报表软件,这些软件各具特色,适用于不同规模…

day:16 银行项目转帐

一、手机转账 我主要负责了转账模块,这个大模块中包含了智能转账、手机转账、语音转账、预约转账、收款人管理等5个子模块,我这次着重介绍一下我们生活中使用最多的手机转账子模块。 对于转账需要关注的是转账前、转账中、转账后这三个状态下的测试。一个完整的业务流程就是用…

day:银行项目——理财业务

一、理财业务术语二、理财业务的分类三、购买流程理财客户签约风险评估理财产品的预约理财产品查询理财产品讲解 1、我最近做了一个银行项目,然后做了当时测试了当中的理财模块,我这边大概和您讲解一下 2、首先理财中有包括签约,风评,理财购买,赎回/撤销,以及理财查询,之…

空间遥感智能处理技术发展现状与趋势

在数字化时代,空间遥感技术已经成为获取地球表面信息的重要手段。随着卫星遥感技术的快速发展,获取的遥感数据量激增,这对遥感数据的智能处理提出了更高的要求。本文将探讨空间遥感智能处理技术的发展现状与未来趋势。 发展现状大数据与人工智能的融合:当前,遥感数据处理正…

day:16 银行项目讲解

一、熟悉银行业务 (1)核心业务:负债业务,公共业务,信贷业务,支付业务,核算业务,理财业务 手机银行 票据业务 企业网银业务 对公业务 柜台业务 (2)银行系统 核心系统(账务系统) 资管系统 客户端系统 服务端系统 数据计算平台 短信平台 语音系统 二、信贷业务 (1)e…

多智能体粒子环境(Multi-Agent Particle Env)食用指南--从入门到入土

0.项目地址:原地址:openai/multiagent-particle-envs: Code for a multi-agent particle environment used in the paper "Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments" (github.com) 国内镜像:项目首页 - multiagent-particle-env…

Windows 提权-内核利用_1

本文通过 Google 翻译 Kernel Exploits Part 1 – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航0 前言 1 旧版 Windows 系统内核利用 2 搜寻内核漏洞2.1 枚举内核利用 - 手动 2.2 枚举内核利用 - 自动…