AcWing 第五场周赛
比赛链接: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^2logn)\)。
更优的算法是用 \(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 第五场周赛的更多相关文章
- AcWing第85场周赛
这场周赛是手速局hh 死或生 某国正在以投票的方式决定 2 名死刑犯(编号 1∼2)的生死. 共有 n 组人员(编号 1∼n)参与投票,每组 10 人. 每组成员只参与一名死刑犯的投票,其中第 i 组 ...
- 第五场周赛(字符串卡常个人Rank赛)——题解
本次题目因为比较简单,除了个别题目,其余题目我只写一个思路不再贴代码. 先是Div.2的题解 A题奇怪的优化,把递归函数改成2*fun(...)即可,其实看懂程序也不难,就是求a*2b: B题你会st ...
- AcWing 第11场周赛题解
计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...
- AcWing第78场周赛
今天想起来了,就补一下吧~ 第一题 商品分类 货架中摆放着 n 件商品,每件商品都有两个属性:名称和产地. 当且仅当两件商品的名称和产地都相同时,两件商品才视为同一种商品. 请你统计,货架中一共有多少 ...
- Leetcode第 217 场周赛(思维量比较大)
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...
- HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4528 小明系列故事——捉迷藏 Time Limit: 500/200 MS (Java/O ...
- noi.ac 第五场第六场
t1应该比较水所以我都没看 感觉从思路上来说都不难(比牛客网这可简单多了吧) 第五场 t2: 比较套路的dp f[i]表示考虑前i个数,第i个满足f[i]=i的最大个数 i能从j转移需要满足 j< ...
- # NOI.AC省选赛 第五场T1 子集,与&最大值
NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...
- NOI.AC NOIP模拟赛 第五场 游记
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...
- 牛客网暑期ACM多校训练营(第五场):F - take
链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n ...
随机推荐
- 2023-11-22:用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums。 它包含 1 到 n 的所有数字,请你返回上升四元组的数目。 如果一个四元组 (i, j, k, l) 满足
2023-11-22:用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums. 它包含 1 到 n 的所有数字,请你返回上升四元组的数目. 如果一个四元组 (i, j, k, l) 满足 ...
- Video教程的Domain设计
Domain设计 下面将介绍Video的表设计,和模型定义. 表设计 Videos设计 /// <summary> /// 视频聚合 /// </summary> public ...
- 大语言模型底层架构丨带你认识Transformer
本文分享自华为云社区<大语言模型底层架构你了解多少?大语言模型底层架构之一Transfomer的介绍和python代码实现>,作者: 码上开花_Lancer . 语言模型目标是建模自然语言 ...
- Java API 操作Docker浅谈
背景: 使用com.github.docker-java库可以很方便地在Java中操作Docker.下面是一个详细的教程,包括创建镜像.创建容器.启动容器.停止容器和删除容器的步骤以及每一步的说明. ...
- GKCTF2020WP-Crypto Misc
Crypto 小学生的密码学 题目 e(x)=11x+6(mod26) 密文:welcylk (flag为base64形式) 我的解答: 考点:仿射密码,已知a,b 结果base64加密即可 flag ...
- NC65元数据添加七彩版时注意点
元数据添加七彩版时注意点 元数据七彩版模式 --- 主要添加Xml文件调整格式 添加时注意点如下 手动创建Panel时 自动生成的实现方法中有一个方法的返回值一定要为true 该方法主要是控制显不显示 ...
- cs上线Linux
cs上线Linux 下载和配置crossC2 首先到项目地址:https://github.com/gloxec/CrossC2/releases下载两个文件 后缀为.cna的为cs的插件文件,启动c ...
- 谈谈muduo库的销毁连接对象——C++程序内存管理和线程安全的极致体现
前言 网络编程的连接断开一向比连接建立复杂的多,这一点在陈硕写的muduo库中体现的淋漓尽致,同时也充分体现了C++程序在对象生命周期管理上的复杂性,稍有不慎,满盘皆输. 为了纪念自己啃下muduo库 ...
- 在xml中比较运算符
SQL 中,可以使用比较运算符来比较两个值,如使用小于运算符 < 比较两个值大小.但是,在 SQL 查询中,有时候需要将小于运算符 < 用于 XML 或 HTML 语法中,这会导致语法冲突 ...
- 如何使用loki查询日志中大于某一数字的值的日志
简介 loki是一款轻量级的日志收集中间件,比elk体系占用的内存更小,采用go语言开发,可以利用grafana来查询loki中存储的日志,loki存储日志只对提前预设的标签做索引,所以日志存储空间占 ...