VP Educational Codeforces Round 33 (Rated for Div. 2)

news/2025/3/14 17:30:19/文章来源:https://www.cnblogs.com/maburb/p/18772494

A. Chess For Three

记录观众是哪一个,观众不能是赢家。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int x = 1, y = 2, z = 3;for (int i = 0; i < n; ++ i) {if (a[i] == z) {std::cout << "NO\n";return;}if (a[i] == x) {std::swap(y, z);} else {std::swap(x, z);}}std::cout << "YES\n";
}

B. Beautiful Divisors

枚举。

点击查看代码
void solve() {int n;std::cin >> n;for (int i = n; i >= 1; -- i) {for (int j = 0; j < 10; ++ j) {if ((((1 << j) - 1) << (j - 1)) == i && n % i == 0) {std::cout << i << "\n";return;}}}
}

C. Rumor

题意:求每个联通块的最小值的和。

dfs求联通块即可。

点击查看代码
void solve() {int n, m;std::cin >> n >> m;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}std::vector<std::vector<int>> adj(n);for (int i = 0; i < m; ++ i) {int u, v;std::cin >> u >> v;-- u, -- v;adj[u].push_back(v);adj[v].push_back(u);}std::vector<int> st(n);int min = 2e9;auto dfs = [&](auto & self, int u) -> void {min = std::min(min, a[u]);st[u] = 1;for (auto & v : adj[u]) {if (!st[v]) {self(self, v);}}};i64 ans = 0;for (int i = 0; i < n; ++ i) {if (!st[i]) {min = 2e9;dfs(dfs, i);ans += min;}}std::cout << ans << "\n";
}

D. Credit Card

题意:一开始你有\(0\)元,每天会增加一些钱或者减少一些钱,或者询问当天的余额。你可以在任意一天充任意多的钱,你要保证任何时候余额都不超过\(d\),同时查询余额的时候余额不是负数。要求充钱次数最少。

如果我们需要充钱,那么最小把余额充到\(0\),最多充到\(d\)。那么我们可以维护一个上界和一个下界,每次查询的时候,如果需要充钱则把下界变为\(0\),上界变为\(d\)。其它情况就是两个值同时变化,如果上界大于\(d\),就变回\(d\),相当于我们在之前充钱的那一天少充一些,如果下界大于\(d\),则无解。

点击查看代码
void solve() {int n, d;std::cin >> n >> d;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int ans = 0;i64 l = 0, r = 0;for (auto & x : a) {if (x == 0) {if (l < 0) {l = 0;}if (r < 0) {r = d;++ ans;}} else {l += x;r += x;if (l > d) {std::cout << -1 << "\n";return;}if (r > d) {r = d;}}}std::cout << ans << "\n";
}

E. Counting Arrays

题意:求长度为\(y\),乘积为\(x\)的序列有多少个,数组可以有负数。首先一个结论是,一个数的质因子不超过\(log_2n\)个。那么这个序列其它位置都是\(1\)。那么我们先对\(x\)质因数分解,那么对于每个因子,我们要把它们放到\(y\)个位置,每个位置可以为空,那么这就是插板法了。总共有\(C(cnt + y - 1, y - 1)\)种放法。每个质因子要单独考虑,因为不同质因子是不同的,而插板法要求每个元素没有区间。
然后考虑负数怎么放,显然\(x\)是正数,那么负数个数得是偶数个,那么对于\(y\)个数,我们选偶数个乘上\(-1\),,那么就是\(C(2, y) + C(4, y) + ...\),这个数是\(2^{y-1}\)次方。

代码省略取模类。

点击查看代码
struct Comb {int n;std::vector<Z> _fac;std::vector<Z> _invfac;std::vector<Z> _inv;Comb() : n{0}, _fac{1}, _invfac{1}, _inv{0} {}Comb(int n) : Comb() {init(n);}void init(int m) {if (m <= n) return;_fac.resize(m + 1);_invfac.resize(m + 1);_inv.resize(m + 1);for (int i = n + 1; i <= m; i++) {_fac[i] = _fac[i - 1] * i;}_invfac[m] = _fac[m].inv();for (int i = m; i > n; i--) {_invfac[i - 1] = _invfac[i] * i;_inv[i] = _invfac[i] * _fac[i - 1];}n = m;}Z fac(int m) {if (m > n) init(2 * m);return _fac[m];}Z invfac(int m) {if (m > n) init(2 * m);return _invfac[m];}Z inv(int m) {if (m > n) init(2 * m);return _inv[m];}Z binom(int n, int m) {if (n < m || m < 0) return 0;return fac(n) * invfac(m) * invfac(n - m);}
} comb;void solve() {int x, y;std::cin >> x >> y;Z ans = 1;for (int i = 2; i * i <= x; ++ i) {if (x % i == 0) {int n = 0;while (x % i == 0) {++ n;x /= i;}ans *= comb.binom(n + y - 1, y - 1);}}if (x > 1) {ans *= comb.binom(y, y - 1);}ans *= power<Z>(2, y - 1);std::cout << ans << "\n";
}

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

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

相关文章

linux中如何判断一个rpm是手动安装还是通过yum安装的

现状 对于一个不熟悉的服务器或者是虽然是自己的服务器,但历史比较久远,对于上面安装了的一些软件包,我们记忆都慢慢模糊了。 我今天遇到一个情况,在安装一个工具x2openEuler时,安装失败,提示依赖冲突: [root@VM-0-6-centos x2openeuler]# yum install x2openEuler-core…

如何让你的应用在市场中脱颖而出?

开发者在完成应用开发并成功上架应用市场后,将面临一项重要挑战:如何在竞争激烈的环境中脱颖而出,吸引用户的关注?为此,提升应用的曝光度和下载量至关重要。 HarmonyOS SDK应用市场服务(Store Kit)提供应用市场业务的对外开放能力,针对想要获得曝光的应用,Store Kit提…

阿里通义实验室语音团队负责人鄢志杰离职;苹果计划在 AirPods 上配备实时对话翻译功能丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

OP90-1工作原理

step1.压紧弹簧及产品 上下气缸压紧弹簧,产品压紧气缸压紧产品step2.弹簧钩下降 拉簧钩紧气缸伸出,带动弹簧钩下降step3.弹簧钩带动弹簧转动,下弹簧脚进槽step4.弹簧钩提起step5.弹簧钩旋转,带动弹簧越过高处,到达卡槽正上方step6.弹簧钩下降step.弹簧钩回退撤出 弹簧钩回…

Java的volatile和sychronized底层实现

1. 概览 从Java代码级别到硬件级别各层都是如何实现的2. Synchronized 2.1 字节码层面 使用javap -verbose <class文件>可以查看到字节码信息,其中synchronized方法会有flags:ACC_SYNCHRONIZED,此时字节码中不会包含monitorenter和moniotrexit,JVM会自动加 public syn…

信息资源管理文字题之“服务支持类的五大运营流程图”

一、为了充分利用ERP信息系统资源,LX集团采用了各种先进的信息系统管理理念和方法,包括IT服务管理,下图为LX集团IT服务管理中服务支持类的五大运营流程图 要求:将图中标有序号的空白处的正确能容,按序号填写 二、答案变更请求 最终软件库 配置管理数据库 影响分析 授权 变…

洛谷 P3979 遥远的国度 做题记录

ds。前置芝士:树链剖分 思路 我们先随手画出一张图:我们首先以 \(1\) 为根构造这颗树。 这张图比较特殊,因为这张图的编号同时也是他的 dfn 序。 我们将其分类讨论。设当前根节点为 \(rt\),查询的节点为 \(x\),那么:当 \(rt=x\) 时(图中蓝圈部分),我们可以访问所有的节…

actuator-系统监控功能

系统监控功能actuator-系统监控功能 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>application.yml server:port: 8080servlet:context-path: …

首页页面布局(1)

import { TaskItem } from ../view/TaskItemimport { TaskStatisties } from ../view/TaskStatisties@Entry@Componentstruct TaskList { @State message: string = Hello World build() { Stack({alignContent:Alignment.BottomEnd}){ Column() { // 第1个模…

算法备案承诺书指南,5分钟速览

算法备案承诺书是算法备案初审的重要文件,和《落实算法安全责任基本情况》是初审阶段难度最大的两份材料。今天我就结合过往经验总结下这份文件的要点,帮助大家快速理解。TIPS:不要照搬这份模板,仅供学习了解。也不要买模板!不同行业和不同服务形态、不同服务对象都有区别…

信创替代必看:禅道/ONES/Jira功能对比及迁移方案

信创项目管理工具:赋能企业数字化转型的利器 在这个数字化转型的浪潮中,项目管理工具成为了企业发展的关键。它们不仅帮助团队提高效率,还能推动创新,为企业带来更大的价值。今天,让我们一起探索这些工具的魅力,以及它们如何在信创领域大放异彩。 项目管理工具的重要性 项…

VK1650 SOP16LED显示驱动芯片,适用于小家电,电磁炉,微波炉等

产品品牌:永嘉微电/VINKA 产品型号:VK1650 封装形式:SOP16/DIP16 概述 VK1650是一种带键盘扫描电路接口的 LED 驱动控制专用芯片,内部集成有数据锁存器、LED 驱动、键盘扫描等电路。SEG脚 接LED阳极,GRID脚接LED阴极,可支持8SEGx4GRID的点阵 LED显示。最大支持7x4按键。本…