比赛链接

本文原文发布于博客园,如您在其他平台刷到此文,请前往博客园获得更好的阅读体验。

跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18766146

开题 + 补题情况

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

A. Final Verdict

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

点击查看代码
#include <bits/stdc++.h>
#define inf 2e18
#define int long long const 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 long const 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 long const 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';
}

【CF VP记录】Codeforces Round 1008 (Div. 2)的更多相关文章

  1. 【cf比赛记录】Codeforces Round #601 (Div. 2)

    Codeforces Round #601 (Div. 2) ---- 比赛传送门 周二晚因为身体不适鸽了,补题补题 A // http://codeforces.com/contest/1255/p ...

  2. 【cf比赛记录】Codeforces Round #600 (Div. 2)

    Codeforces Round #600 (Div. 2) ---- 比赛传送门 昨晚成绩还好,AC A,B题,还能上分(到底有多菜) 补了C.D题,因为昨晚对C.D题已经有想法了,所以补起题来也快 ...

  3. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  4. 刷题记录:Codeforces Round #734 (Div. 3)

    Codeforces Round #734 (Div. 3) 20210920.网址:https://codeforces.com/contest/1551. 编程细节:下标定义不要一会[1,n]一会 ...

  5. 刷题记录:Codeforces Round #739 (Div. 3)

    Codeforces Round #739 (Div. 3) 20210907.网址:https://codeforces.com/contest/1560. --(叹). A 不希望出现带" ...

  6. 刷题记录:Codeforces Round #724 (Div. 2)

    Codeforces Round #724 (Div. 2) 20210713.网址:https://codeforces.com/contest/1536. div2明显比div3难多了啊-只做了前 ...

  7. 刷题记录:Codeforces Round #725 (Div. 3)

    Codeforces Round #725 (Div. 3) 20210704.网址:https://codeforces.com/contest/1538. 感觉这个比上一个要难. A 有一个n个数 ...

  8. 刷题记录:Codeforces Round #719 (Div. 3)

    Codeforces Round #719 (Div. 3) 20210703.网址:https://codeforces.com/contest/1520. 没错,我是个做div3的蒟蒻-- A 大 ...

  9. Codeforces Round #803 (Div. 2) A-D 刚vp完还没补题

    Codeforces Round #803 (Div. 2) 2022/7/24 上午VP 传送门:https://codeforces.com/contest/1698 A. XOR Mixup 随 ...

  10. 刷题记录:Codeforces Round #731 (Div. 3)

    Codeforces Round #731 (Div. 3) 20210803.网址:https://codeforces.com/contest/1547. 感觉这次犯的低级错误有亿点多-- A 一 ...

随机推荐

  1. 2020年了,Android后台保活还有戏吗?看我如何优雅的实现!

    1.引言 对于移动端IM应用和消息推送应用的开发者来说,Android后台保活这件事是再熟悉不过了. 自从Android P(即Android 8.0)出现以后,Android已经从系统层面将后台保活 ...

  2. 在 Development 环境下依赖注入的行为可能有所不同

    奇怪的问题 本周被一个奇怪的问题困扰了一天.事情的起因是这样的:在某个 PR 合并后,我拉了最新代码,但是在我本地F5调试始终报错.示例代码如下: public interface Interface ...

  3. web应用分页-copy

    1. 场景描述 目前大部分的应用程序中都会用到分页功能,以便减少前端浏览器及后台服务器的压力,以及其他方面的考虑. (1)分页从概念上可分为逻辑分页和物理分页,逻辑分页主要是通过应用程序(前端或者后端 ...

  4. 关于 static 和 final 的一些理解

    今天主要回顾一下 static 和 final 这两个关键字. 1. static  -  静态 修饰符 - 用于修饰数据(变量.对象).方法.代码块以及内部类.         1.1 静态变量 用 ...

  5. JavaWeb的一些理解

    WEB概述 WEB是什么 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上的资源分类 Internet上供外界访问的Web资源分为: 静态 ...

  6. weixueyuan-Nginx编译及部署1

    https://www.weixueyuan.net/nginx/ Nginx是什么 Nginx(发音同"engine x")是一个高性能的反向代理和 Web 服务器软件,最初是由 ...

  7. 一文搞懂SaaS架构建设流程:业务战略设计、架构蓝图设计、领域系统架构设计、架构治理与实施

    大家好,我是汤师爷~ SaaS架构建设是一项复杂的系统工程,不仅需要技术层面的实现,更要从业务战略.架构设计.治理与实施等多个维度进行全面规划. 一个成功的SaaS架构可以帮助企业降低IT成本.提升业 ...

  8. 字符流:FileReader/FileWriter的使用

    读取文件 1.建立一个流对象,将已存在的一个文件加载进流. FileReader fr = new FileReader(new File("Test.txt"));2.创建一个 ...

  9. 解析mysql奇葩语句

    首先看看完整的表如下图 那么看看一个比较奇葩的语句 select * from users where name = 'aa'='bb'这个语句为啥能执行成功以及为什么打印出了除了两个aa之外的所有行 ...

  10. ctfshow--web14 sql注入利用``的清奇的绕过

    输入c=3就会跳出来这个url 复制并访问,看这个页面应该是sql注入 有注释可看,看看他过滤了哪些东西 点击查看代码 if(preg_match('/information_schema\.tabl ...