比赛链接:Here

AcWing 3726. 调整数组

签到题

void solve() {
int n; cin >> n;
int x = 0, y = 1, c;
for (int i = 0; i < n; ++i) {
cin >> c, x |= c, y &= c;
}
cout << ((x ^ y) & 1 ? "NO\n" : "YES\n");
}

AcWing 3727. 乘方相加

如果将所有的 \(v_i\) 用 kk 进制表示,则第 \(i\) 次操作就相当于是在 \(v_i\) 的第 \(i\) 位上加一。

所以如果我们能得到 a,那么所有的 \(a_i\) 的第 \(k\) 位最多只能有一个是 \(1\)。

因此我们可以枚举 \(a\) 中所有数的第 \(i\) 位,对第 \(i\) 位上的数求和,若得到的值 \(>1\),则我们不能将 \(v\) 变成 \(a\)

  • \(\mathcal{O}(nlog\ a_i)\)
ll a[33];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n, k;
cin >> n >> k;
for (int i = 0; i < n; ++i)cin >> a[i];
bool f = true;
for (int i = 0; i < 64 and f; ++i) {
int s = 0;
for (int j = 0; j < n; ++j) s += a[j] % k, a[j] /= k;
f &= s < 2;
}
cout << (f ? "YES\n" : "NO\n");
}
}

AcWing 3728. 城市通电

原题来自:https://codeforces.com/problemset/problem/1245/D

将题目中所有发电站和电线看成一张无向图,搭建电线看成是将图上两个点连接起来。

根据题意,最终得到的图是若干个连通块,每个连通块中有一个点建立发电站。

考虑新建一个 \(0\) 点,向 \(1∼n\) 中所有点 \(u\) 连一条长度是 \(c_u\) 的边。

那么在某个点 \(u\) 建立发电站就可以看成选择 \(0→u\) 的这条边。

那么我们要做的,就转化为:给定一张无向图,选若干条边,使得图连通。

而这恰是最小生成树。因此我们只需建图并求最小生成树即可。

时间复杂度

这里我用的是 \(kruskal\) 算法求最小生成树,时间复杂度为\(O(n^2log⁡n)\)。

更优的算法是用 \(prim\) 算法,时间复杂度为\(O(n^2)\),但用 \(prim\) 算法不太好求具体方案,故这里选择 \(kruskal\)。

#include <bits/stdc++.h>
using namespace std;
using LL = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> x(n), y(n), k(n);
for (int i = 0; i < n; ++i)
cin >> x[i] >> y[i];
vector<LL> c(n);
for (int i = 0; i < n; ++i)
cin >> c[i];
for (int i = 0; i < n; ++i)
cin >> k[i];
vector<bool> visited(n);
vector<int> parent(n, -1);
LL total = 0;
vector<int> sta;
for (int i = 0; i < n; ++i) {
int u = -1;
for (int j = 0; j < n; ++j)
if (!visited[j] && (u == -1 || c[j] < c[u]))
u = j;
visited[u] = true;
total += c[u];
if (parent[u] == -1)
sta.push_back(u);
for (int j = 0; j < n; ++j) {
if (!visited[j]) {
LL cost = 1LL * (k[u] + k[j]) * (abs(x[u] - x[j]) + abs(y[u] - y[j]));
if (cost < c[j]) {
c[j] = cost;
parent[j] = u;
}
}
}
}
cout << total << "\n";
cout << sta.size() << "\n";
for (int i : sta)
cout << i + 1 << "\n";
cout << n - sta.size() << "\n";
for (int i = 0; i < n; ++i)
if (parent[i] != -1)
cout << i + 1 << " " << parent[i] + 1 << "\n";
return 0;
}

AcWing 第五场周赛的更多相关文章

  1. AcWing第85场周赛

    这场周赛是手速局hh 死或生 某国正在以投票的方式决定 2 名死刑犯(编号 1∼2)的生死. 共有 n 组人员(编号 1∼n)参与投票,每组 10 人. 每组成员只参与一名死刑犯的投票,其中第 i 组 ...

  2. 第五场周赛(字符串卡常个人Rank赛)——题解

    本次题目因为比较简单,除了个别题目,其余题目我只写一个思路不再贴代码. 先是Div.2的题解 A题奇怪的优化,把递归函数改成2*fun(...)即可,其实看懂程序也不难,就是求a*2b: B题你会st ...

  3. AcWing 第11场周赛题解

    计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...

  4. AcWing第78场周赛

    今天想起来了,就补一下吧~ 第一题 商品分类 货架中摆放着 n 件商品,每件商品都有两个属性:名称和产地. 当且仅当两件商品的名称和产地都相同时,两件商品才视为同一种商品. 请你统计,货架中一共有多少 ...

  5. Leetcode第 217 场周赛(思维量比较大)

    Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...

  6. HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4528 小明系列故事——捉迷藏 Time Limit: 500/200 MS (Java/O ...

  7. noi.ac 第五场第六场

    t1应该比较水所以我都没看 感觉从思路上来说都不难(比牛客网这可简单多了吧) 第五场 t2: 比较套路的dp f[i]表示考虑前i个数,第i个满足f[i]=i的最大个数 i能从j转移需要满足 j< ...

  8. # NOI.AC省选赛 第五场T1 子集,与&最大值

    NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...

  9. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

  10. 牛客网暑期ACM多校训练营(第五场):F - take

    链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n ...

随机推荐

  1. 【译】Visual Studio 2022 - 17.8 的性能改进

    Visual Studio 2022 17.8版本欢迎一系列令人振奋的性能增强,包括响应式文件打开体验,改进 Razor/Blazor 的响应性,加速 F5,优化的 C++ 虚幻引擎智能感知和非 SD ...

  2. java集合框架(三)ArrayList常见方法的使用

    @[toc]## 一.什么是ArrarListArrayList是Java中的一个动态数组类,可以根据实际需要自动调整数组的大小.ArrayList是基于数组实现的,它内部维护的是一个Object数组 ...

  3. StackGres 1.6 数据库平台工程功能介绍以及快速上手

    StackGres 1.6 数据库平台工程功能 声明式 K8S CRs StackGres operator 完全由 Kubernetes 自定义资源管理.除了 kubectl 或任何其他 Kuber ...

  4. Python批量改文件名

    对以下路径中的文件名批量修改. 一.读取指定路径中的文件名 #导入标准库 import os #读取文件名 filesDir = "路径--" fileNameList = os. ...

  5. 使用axios发送请求的几种方式

    1.是什么? axios 它的底层是用了 XMLHttpRequest(xhr)方式发送请求和接收响应,xhr 相对于之前讲过的 fetch api 来说,功能更强大,但由于是比较老的 api,不支持 ...

  6. springboot去除内嵌tomcat

    springboot去除内嵌tomcat步骤 在pom文件中加入以下代码 点击查看代码 <!-- 多模块排除内置tomcat --> <dependency> <grou ...

  7. Redis 打怪升级进阶成神之路(2023 最新版)!

    前面我们学习:MySQL 打怪升级进阶成神之路(2023 最新版)!,然后我们就开始了 NoSQL 卷王之路.从第一篇文章开始,我们逐步详细介绍了 Redis 基础理论与安装配置.9 种数据类型和应用 ...

  8. 通用 Mapper 的批量插入实现

    具体的 SQL 模板实现如下所示: import org.apache.ibatis.mapping.MappedStatement; import tk.mybatis.mapper.MapperE ...

  9. 2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。 需保证 返回结果的字典序最小。 要求不能打乱其他字符的相对位置)。 输入:s = “cba

    2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次. 需保证 返回结果的字典序最小. 要求不能打乱其他字符的相对位置). 输入:s = &quo ...

  10. 2023-05-13:你现在手里有一份大小为 n x n 的 网格 grid, 上面的每个 单元格 都用 0 和 1 标记好了其中 0 代表海洋,1 代表陆地。 请你找出一个海洋单元格,这个海洋单元格

    2023-05-13:你现在手里有一份大小为 n x n 的 网格 grid, 上面的每个 单元格 都用 0 和 1 标记好了其中 0 代表海洋,1 代表陆地. 请你找出一个海洋单元格,这个海洋单元格 ...