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.pswp.cn/web/74523.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74523.shtml
英文地址,請注明出處:http://en.pswp.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…