比赛链接: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. 运维初级实践——Linux系统命令教程

    区块链运维工程师在Linux环境中常用的命令.快捷键,以及安装软件和文件管理的最佳实践. 1. 常用Linux命令 1.1 文件和目录操作 ls:列出目录内容 cd:更改目录 mkdir:创建新目录 ...

  2. MySQL运维5-Mycat配置

    一.schema.xml 1.1 简介 schema.xml作为Mycat中最重要的配置文件之一,涵盖了Mycat的逻辑库.逻辑表.分片规则.分片节点即数据源的配置.主要包括一下三组标签 schema ...

  3. Cocos内存管理解析 CCRef/retain/release/autorelease

    Cocos内存管理源码(autorelease解析) 背景 这段时间在做项目的时候,需求需要往spine动作的挂点上绑定按钮节点,由于按钮在编辑器中是加在已有节点上的,所以在往spine上添加挂点时, ...

  4. 整合SpringBoot + Dubbo + Nacos 出现 Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass

    版本 SpringBoot:2.7.3 Dubbo:3.0.4 Nacos:2.0.3 异常信息如下 Unable to make protected final java.lang.Class ja ...

  5. Python 中如何编写类型提示

    哈喽大家好,我是咸鱼 我们知道 Python 是一门具有动态特性的语言,在编写 Python 代码的时候不需要显式地指定变量的类型 这样做虽然方便,但是降低了代码的可阅读性,在后期 review 代码 ...

  6. ASR项目实战-交付团队的分工

    对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队. 通常认为,用户,负责购买服务的群体,而消费者,负责使用业务的群体.这 ...

  7. ASR项目实战-语音识别

    本文深入探讨语音识别处理环节. 本阶段的重点特性为语音识别.VAD.热词.文本的时间偏移.讲话人的识别等. 语音识别 业界流派众多,比如Kaldi.端到端等,具体选择哪一种,需要综合考虑人员能力.训练 ...

  8. ElasticSearch之cat anomaly detectors API

    curl -X GET "https://localhost:9200/_cat/ml/anomaly_detectors?v=true&pretty" --cacert ...

  9. 前端系列:正则表达式RegExp详解

    目录 正则创建 匹配方法 元字符 字符集合 边界 分组 数量词汇 匹配模式 RegExp 方法特性 正则创建 字面量创建 const str = 'asdf123sds3234' const rege ...

  10. 如何实现gif格式图片倒放效果?

    不知道大家看电影的时候有没有发现出现过这样的一个神奇场景: 一个子弹竟然从远处飞回到手枪中,整个场景呈现一种时空倒流的感觉? 正文 先来几个有趣的倒放动图娱乐一下~ 猫:我谢谢你们全家 萌娃快乐针 尊 ...