Educational Codeforces Round 177 (Rated for Div. 2)

在这里插入图片描述

Educational Codeforces Round 177 (Rated for Div. 2)

A. Cloudberry Jam

思路:

1千克果子能生产2/3千克果酱,生产3千克果酱则需要2千克果酱,所以*2即可

code:

void solve() {   int x; cin >> x;cout << 2 * x << endl;
} 

B. Large Array and Segments

题意:

当前给出一个长度为n的数组a,数组b为数组a头尾相接k次而成,长度为n*k,现在求b数组中存在多少个左边界l,存在一个右边界r,使得l到r区间的元素和大于等于x

思路:

将数组b视为k段a,求出a数组的前缀和和sum,然后判断出在第几段时,会开始出现大于等于x的后缀即可,注意最多k段;

Code:

void solve() {int n, k,  x; cin >> n >> k >> x;vector<int> a(n), sum(n+1, 0);for(int i = 0;i < n;i ++){cin >> a[i];sum[i+1]=sum[i]+a[i];}int s = sum[n], ans = 0;for(int i = 0;i < n;i ++){int ca  = s - sum[i];int ttt;if (ca >= x) {ttt = 0;} else {ttt = (x - ca + s - 1) / s;}if (k <= ttt) continue;ans += (k - ttt);}cout << ans << endl;
}

C. Disappearing Permutation

题意:

当前有一个长度为n的排列p,以及一个操作序列d,第i次操作会使得 p d i = 0 p_{d_i} = 0 pdi=0

在第i次操作后,需要最少多少次操作可以使得数组恢复成一个任意顺序的排列,操作如下:

  • 将第i个位置的数替换为i

思路:

p i ! = i p_i != i pi!=i ,我们需要进行向上回溯类似并查集的方式寻找i的位置,回溯过程中的元素都需要进行单独的操作

首先记录每个元素所需要向上回溯的次数,即操作次数,回溯最终的位置即为祖宗结点

最后从第一个位置开始递增操作次数即可

Code:

void solve() {int n; cin >> n;for (int i = 1; i <= n; i ++) cin >> p[i];for (int i = 1; i <= n; i ++) cin >> d[i];vector<int> pos(n + 1, 0), find(n + 1, 0), sum(n + 1, 0);int now = 0;for (int i = 1; i <= n; i ++) {if (pos[i]) continue;now ++;int idx = i;while (pos[idx] == 0) {pos[idx] = 1;find[idx] = now;idx = p[idx];}int cnt = 0, st = i;idx = i;idx = p[idx];cnt ++;while (idx != st) {cnt ++;idx = p[idx];}sum[now] = cnt;}vector<int> ans;for (int i = 1; i <= n; i ++) pos[i] = 0;int ca = 0;for (int i = 1; i <= n; i ++) {int t = d[i];int id = find[t];if (!pos[id]) {ca += sum[id];pos[id] = 1;}cout << ca << ' ';} cout << endl;
}

D. Even String

题意:

给出26个字母的每个字母的数量,需要按照要求进行字符串的构造:

相同字符串直接的间隔必须是偶数

有多少种构造方案

思路:

思路原链接:https://zhuanlan.zhihu.com/p/1891280211527590056

首先明确一个多重排列数的计算公式,即n个序列中有ci个重复的数有多少种排列的方式:
n ! c 1 ! ⋅ c 2 ! ⋯ c k ! \frac{n!}{c_1! \cdot c_2! \cdots c_k!} c1!c2!ck!n!
而n!需要跟每个ci!进行逆元操作

就本题来说,同一字母只能全部放在奇数位或者偶数位

特判:显然,如果一个字母的数量单独在奇数位或者偶数位都不能容纳,则不可能完成

这里用一个背包来预处理一下字符的分组问题:

  • 我们需要将字母分成两组,奇数组和偶数组
  • 分配其中一个就可以,这里以奇数位为例,从后向前进行一个状态转移

然后就是每组的排列组合的问题:

  • 奇数位有odd个字符,那么就有odd!种排列方式,偶数同理
  • 代入多重排列的公式即可 n ! = o d d ! ∗ e v e n ! n! = odd!*even! n!=odd!even!

最后将排列数*分组数即为最终答案
(被创思了。。。。。。)

AC code:

int fact[N], invfact[N];int qmi(int a, int k, int p) {int res = 1;while (k) {if (k & 1) res = res * a % p;a = a * a % p;k >>= 1;}return res;
} //多重排列数预处理,阶乘+逆元
void init_fact(int n) {fact[0] = invfact[0] = 1;for (int i = 1; i <= n; i ++) fact[i] = fact[i - 1] * i % MOD;invfact[n] = qmi(fact[n], MOD - 2, MOD);for (int i = n - 1; i >= 1; i --) invfact[i] = invfact[i + 1] * (i + 1) % MOD;
}void solve() {vector<int> c(26);int sum = 0;for (int i = 0; i < 26; i ++) {cin >> c[i];sum += c[i];}int odd = (sum + 1) / 2, even = sum / 2;for (int i = 0; i < 26; i ++) {if (c[i] > odd && c[i] > even) {cout << 0 << endl;return;}}vector<int> dp(odd + 1, 0);dp[0] = 1;for (int i = 0; i < 26; i ++) {if (c[i] == 0) continue;for (int j = odd; j >= c[i]; j --) {dp[j] = (dp[j] + dp[j - c[i]]) % MOD;}}int ans = dp[odd];int ca = 1;for (int i = 0; i < 26; i ++) {ca = ca * invfact[c[i]] % MOD;}ans = ((ans * fact[odd] % MOD) * fact[even] % MOD) * ca % MOD;cout << ans << endl;
}

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

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

相关文章

ARM-外部中断,ADC模数转换器

根据您提供的图片&#xff0c;我们可以看到一个S3C2440微控制器的中断处理流程图。这个流程图展示了从中断请求源到CPU的整个中断处理过程。以下是流程图中各个部分与您提供的寄存器之间的关系&#xff1a; 请求源&#xff08;带sub寄存器&#xff09;&#xff1a; 这些是具体的…

23种设计模式-行为型模式-迭代器

文章目录 简介问题解决代码设计关键点&#xff1a; 总结 简介 迭代器是一种行为设计模式&#xff0c;让你能在不暴露集合底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 大部分集合使用简单列表存储元素。但有些集…

Python 布尔类型

Python 布尔类型(Boolean) 布尔类型是Python中的基本数据类型之一&#xff0c;用于表示逻辑值。它只有两个值&#xff1a; True - 表示真False - 表示假 1. 布尔值的基本使用 # 定义布尔变量 is_active True is_admin Falseprint(is_active) # 输出: True print(is_admi…

人工智能在前端开发中的应用探索

一、人工智能在前端开发中的应用场景 人工智能&#xff08;AI&#xff09;技术的快速发展为前端开发带来了新的机遇和挑战。AI在前端开发中的应用主要集中在以下几个方面&#xff1a;智能代码生成、自动化测试、个性化推荐、智能交互设计以及性能优化。这些应用场景不仅提高了…

三维扫描助力文化遗产数字化保护

当下&#xff0c;三维扫描技术以其独特的优势&#xff0c;正逐渐成为文化遗产数字化保护的重要工具&#xff0c;让珍贵的文物得以“永生”。 三维扫描在文物数字化方面的应用&#xff1a; 高精度文物存档&#xff1a;三维扫描技术能够实现对文物的快速、无损扫描&#xff0c;…

如何将生活场景转换为数据模型模型仿真?

从家到公司有31公里&#xff0c;其中有一个2车道右转立交桥汇入另外一条路&#xff0c;每次都是那个堵车&#xff0c;导致路上的行程在45分钟到70分钟左右&#xff1f;前面或后面路段都是3-4车道&#xff0c;足够通行。如何解决这个难题&#xff0c;是否可搭建数学模型实现可视…

Java学习总结-io流-练习案例

将文档的内容排序&#xff1a; public static void main(String[] args) throws IOException {File dir new File("J:\\360downloads\\wpcache\\srvsetwp\\xxx\\test.txt");BufferedReader br new BufferedReader(new FileReader(dir));//把按行读取到的内容&#…

【C++】STL库_stack_queue 的模拟实现

栈&#xff08;Stack&#xff09;、队列&#xff08;Queue&#xff09;是C STL中的经典容器适配器 容器适配器特性 不是独立容器&#xff0c;依赖底层容器&#xff08;deque/vector/list&#xff09;通过限制基础容器接口实现特定访问模式不支持迭代器操作&#xff08;无法遍历…

LangChain核心解析:掌握AI开发的“链“式思维

0. 思维导图 1. 引言 🌟 在人工智能快速发展的今天,如何有效地利用大语言模型(LLM)构建强大的应用成为众多开发者关注的焦点。前面的课程中,我们学习了正则表达式以及向量数据库的相关知识,了解了如何处理文档并将其附加给大模型。本章我们将深入探讨LangChain中的核心概…

Error:java: 程序包lombok不存在

使用Maven package打包项目发现报错 一、Maven配置文件修改 1.找到本地 maven的配置文件settings.xml 2.修改配置文件中&#xff0c;指向本地仓库的地址使用 ‘’ \ \ ‘’ 隔开&#xff0c; 要么使用 正斜线 / 隔开 不要使用 反斜线 \ windows OS 电脑&#xff0c;使用 \ …

WordPress 未授权本地文件包含漏洞(CVE-2025-2294)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…

基于 C# 开发视觉检测系统项目全解析

引言 在当今高度自动化的制造业领域,视觉检测系统的重要性愈发凸显。它凭借高速、高精度的特性,在产品外观缺陷检测、尺寸测量等环节发挥着关键作用,显著提升了生产效率和产品质量。C# 作为一种功能强大且易于学习的编程语言,结合.NET 框架丰富的类库以及 Windows Forms、…

GISBox:核心功能免费的一站式三维GIS处理平台

大家好&#xff0c;今天为大家介绍的软件是GISBox&#xff1a;一款核心功能免费的一站式三维GIS处理平台&#xff0c;主要是适用于数字孪生。下面&#xff0c;我们将从软件的主要功能、支持的系统、软件官网等方面对其进行简单的介绍。 软件官网&#xff1a;http://www.gisbox.…

Ubuntu 24 云服务器上部署网站_详细版_1

从零开始&#xff0c;在 Ubuntu 24 云服务器上部署一个支持登录和权限的网站&#xff0c;用 Python Django 实现&#xff0c;适合新手跟着操作。 &#x1f527; 第一步&#xff1a;更新服务器并安装基础环境 请使用 SSH 登录你的 Ubuntu 24 云服务器&#xff08;用 MobaXterm…

单片机学习之定时器

定时器是用来定时的机器&#xff0c;是存在于STM32单片机中的一个外设。STM32一般总共有8个定时器&#xff0c;分别是2个高级定时器&#xff08;TIM1、TIM8&#xff09;&#xff0c;4个通用定时器&#xff08;TIM2、TIM3、TIM4、TIM5&#xff09;和2个基本定时器&#xff08;TI…

AIGC6——AI的哲学困境:主体性、认知边界与“天人智一“的再思考

引言&#xff1a;当机器开始"思考" 2023年&#xff0c;Google工程师Blake Lemoine声称对话AI LaMDA具有"自我意识"&#xff0c;引发轩然大波。这一事件将古老的哲学问题重新抛回公众视野&#xff1a;​**机器能否拥有主体性&#xff1f;**从东方"天人…

从内核到应用层:Linux缓冲机制与语言缓冲区的协同解析

系列文章目录 文章目录 系列文章目录前言一、缓冲区1.1 示例11.2 缓冲区的概念 二、缓冲区刷新方案三、缓冲区的作用及存储 前言 上篇我们介绍了&#xff0c;文件的重定向操作以及文件描述符的概念&#xff0c;今天我们再来学习一个和文件相关的知识-----------用户缓冲区。 在…

高通camx IOVA内存不足,导致10-15x持续拍照后,点击拍照键定屏无反应,过一会相机闪退

定屏闪退问题分析思路&#xff1a; 定屏问题如果是相机问题&#xff0c;一般会出现返帧&#xff0c;导致预览卡死。当然还有其他情况&#xff0c;我们先看返帧情况&#xff0c;发现request和result开始都正常&#xff0c;到12:53:05.443038就没有返帧了&#xff0c;定屏了。往…

AI知识补全(十五):AI可解释性与透明度是什么?

名人说&#xff1a;一笑出门去&#xff0c;千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;AI知识补全&#xff08;十四&#xff09;&#xff1a;零样本…

CentOS 7安装hyperscan

0x00 前言 HyperScan是一款由Intel开发的高性能正则表达式匹配库&#xff0c;专为需要快速处理大量数据流的应用场景而设计。它支持多平台运行&#xff0c;包括Linux、Windows和macOS等操作系统&#xff0c;并针对x86架构进行了优化&#xff0c;以提供卓越的性能表现。HyperSc…