Codeforces Round 998 (Div. 3)

A. Fibonacciness

題目大意

給你四個數字abde,讓你找到一個中間值c,問 a + b = c a + b = c a+b=c b + c = d b + c = d b+c=d c + d = e c + d = e c+d=e 最多能有幾個式子成立

解題思路

顯然最多就六種情況,暴力枚舉即可

代碼實現

for _ in range(int(input())):a1, a2, a4, a5 = map(int, input().split())t1 = a1 + a2t2 = a5 - a4ans = [0, 0]ans[0] += a1 + a2 == t1ans[0] += a2 + t1 == a4ans[0] += t1 + a4 == a5ans[1] += a1 + a2 == t2ans[1] += a2 + t2 == a4ans[1] += t2 + a4 == a5print(max(ans))

B. Farmer John’s Card Game

題目大意

給你一個n行m列的排列,請你給出一個長度為n的排列,使得這n行每次出一個數字,執行m次,能按順序出完這 n ? m n*m n?m 個數字

解題思路

對于同一行來說,下一次要出的數字會和本次相差n,所有只需要看排序后相鄰是否相差n即可,每一行最小的數字就是他們的初始順序

代碼實現

#include <bits/stdc++.h>using i64 = long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int t;std::cin >> t;while (t--) {int n, m, f = 1;std::cin >> n >> m;std::vector<int> ans(n + 1);std::vector<std::vector<int>> v(n, std::vector<int>(m));for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {std::cin >> v[i][j];}std::sort(v[i].begin(), v[i].end());for (int j = 1; j < m; j++) {if (v[i][j] - v[i][j - 1] != n) {f = 0;}}ans[v[i][0]] = i + 1;}if (f) {for (int i = 0; i < n; i++) {std::cout << ans[i] << " \n"[i == n - 1];}} else {std::cout << "-1\n";}}
}

C. Game of Mathletes

題目大意

有n個數字(保證n是偶數),執行n/2次操作,每次Alice先選一個數字a,Bob再選一個數字b,如果滿足 a + b = k a + b = k a+b=k,則可以加一分。 Alice會最小化分數,Bob會最大化分數,二者都采用最優策略,問最后得分會是多少

解題思路

由于是Alice先手,所有Bob每次總能找到一個數字與Alice挑選的數字匹配(如果存在可以匹配的數字),因此只需要計算有多少數對滿足等式即可

代碼實現

#include <bits/stdc++.h>using i64 = long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int t;std::cin >> t;while (t--) {int n, k;std::cin >> n >> k;std::vector<int> f(n + 1);for (int i = 0; i < n; i++) {int x;std::cin >> x;f[x]++;}i64 ans = 0;for (int i = std::max(1, k - n); i < std::min(n + 1, (k + 1) / 2); i++) {int j = k - i;if (j >= 1 && j <= n && j > i) {ans += std::min(f[i], f[j]);}}if (k % 2 == 0) {int mid = k / 2;if (mid >= 1 && mid <= n) {ans += f[mid] / 2;}}std::cout << ans << "\n";}
}

D. Subtract Min Sort

題目大意

有n個數字,可以多次執行 a i ? m i n ( a i , a i ? 1 ) a_i - min(a_i, a_{i - 1}) ai??min(ai?,ai?1?) a i ? m i n ( a i ? 1 , a i ? 1 ) a_i - min(a_{i - 1}, a_{i - 1}) ai??min(ai?1?,ai?1?),問最后能否讓序列單調不遞減

解題思路

對于一個單調不遞減的序列,顯然一直執行操作之后除了最后一位都會變成0,因此只需要不停的執行操作,最后檢查前n-1位是不是0即可

代碼實現

#include <bits/stdc++.h>using i64 = long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int t;std::cin >> t;while (t--) {int n, f = 0;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; i++) {std::cin >> a[i];}for (int i = 1; i < n; i++) {int minn = std::min(a[i - 1], a[i]);a[i - 1] -= minn;a[i] -= minn;}for (int i = 0; i < n - 1; i++) {f += a[i];}if (f) {std::cout << "NO\n";} else {std::cout << "YES\n";}}
}

E. Graph Composition

題目大意

給你兩張圖F和G,每次操作可以在F中刪或者加一條邊,最后要求讓F和G聯通性相同,問最小操作次數是多少

解題思路

按照題意模擬,對F中聯通但是G不聯通的部分直接刪邊ans++,對F中不聯通G中聯通的部分加邊,最后加上二者連通塊數量即可

代碼實現

#include <bits/stdc++.h>using i64 = long long;class DSU {public:int cnt;std::vector<int> fa, rank, siz;DSU(int n) : cnt(n), fa(n + 1), rank(n + 1, 0), siz(n + 1, 1) {for (int i = 1; i <= n; i++) {fa[i] = i;}}int find(int x) {if (fa[x] != x) {fa[x] = find(fa[x]);}return fa[x];}void merge(int x, int y) {int X = find(x), Y = find(y);if (X != Y) {if (rank[X] >= rank[Y]) {fa[Y] = X;siz[X] += siz[Y];if (rank[X] == rank[Y]) {rank[X]++;}} else {fa[X] = Y;siz[Y] += siz[X];}cnt--;}}int size() {return cnt;}int count(int x) {return siz[find(x)];}
};int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);int t;std::cin >> t;while (t--) {i64 n, m1, m2, ans = 0;std::cin >> n >> m1 >> m2;std::vector<std::pair<int, int>> F(m1);for (int i = 0; i < m1; i++) {std::cin >> F[i].first >> F[i].second;}DSU dsuG(n);for (int i = 0; i < m2; i++) {int u, v;std::cin >> u >> v;dsuG.merge(u, v);}DSU dsuF(n);for (auto [u, v] : F) {if (dsuG.find(u) != dsuG.find(v)) {ans++;} else {dsuF.merge(u, v);}}std::cout << ans + dsuF.size() - dsuG.size() << "\n";}
}

F. Multiplicative Arrays

題目大意

給你兩個數字nk,問有多少個長度不超過n且最大元素不超過k的數組滿足累乘后的值為x,輸出x=1~k時的方案數,對最方案數模998244353

解題思路

1是一個很特殊的數字,他可以讓長度增加而累乘的值不增加,首先考慮最大值是1的情況發現只有n種,再考慮最小值不為1的情況,可以發現最后數組長度不會特別長,而對于有1的情況基于沒有1的情況填充即可

代碼實現

#include <bits/stdc++.h>using i64 = long long;
const int MOD = 998244353;i64 ksm(i64 a, i64 n) {i64 res = 1;a %= MOD;while (n) {if (n & 1) res = res * a % MOD;a = a * a % MOD;n >>= 1;}return res;
}int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int t;std::cin >> t;while (t--) {i64 k, n;std::cin >> k >> n;if (k == 1) {std::cout << (n % MOD) << "\n";continue;}i64 p2 = 0;while ((1ll << (p2 + 1)) <= k) {p2++;}// 當序列只有一個大于1的數字時i64 C = ((n + 1) % MOD) * (n % MOD) % MOD;C = C * ksm(2, MOD - 2) % MOD;std::vector<i64> ans(k + 1), last(k + 1);for (int i = 2; i <= k; i++) {  // 選取方案不包含1last[i] = 1;}for (int i = 1; i <= k; i++) {ans[i] = (ans[i] + last[i] * C) % MOD;}for (int len = 2; len <= std::min(p2, n); len++) {// 先填入大于1的數字std::vector<i64> now(k + 1);for (int i = 2; i <= k; i++) {  // 填入一個新數字ifor (int j = i; j <= k; j += i) {  // 更新乘積now[j] = (now[j] + last[j / i]) % MOD;}}// 剩下的長度用1填充C = C * ((n + 1 - len) % MOD + MOD) % MOD;C = C * ksm(len + 1, MOD - 2) % MOD;for (int i = 1; i <= k; i++) {ans[i] = (ans[i] + now[i] * C) % MOD;}last = now;}ans[1] = n % MOD;for (int i = 1; i <= k; i++) {std::cout << ans[i] << " \n"[i == k];}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82867.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82867.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82867.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

火山引擎發展初始

火山引擎是字節跳動旗下的云計算服務品牌&#xff0c;其云服務業務的啟動和正式商業化時間線如下&#xff1a; 1. **初期探索&#xff08;2020年之前&#xff09;** 字節跳動在早期為支持自身業務&#xff08;如抖音、今日頭條等&#xff09;構建了強大的基礎設施和技術中…

【認知思維】光環效應:第一印象的持久力量

什么是光環效應 光環效應&#xff08;Halo Effect&#xff09;是指人們傾向于讓對某人或某物的一個顯著特質的印象影響對其他特質的評價的認知偏差。簡單來說&#xff0c;當我們對某人的一個特質&#xff08;如外表、智力或某項技能&#xff09;形成積極印象時&#xff0c;我們…

Java Solon v3.3.0 發布(國產優秀應用開發基座)

Solon 框架&#xff01; Solon 是新一代&#xff0c;Java 企業級應用開發框架。從零開始構建&#xff08;No Java-EE&#xff09;&#xff0c;有靈活的接口規范與開放生態。采用商用友好的 Apache 2.0 開源協議&#xff0c;是“杭州無耳科技有限公司”開源的根級項目&#xff…

力扣-104.二叉樹的最大深度

題目描述 給定一個二叉樹 root &#xff0c;返回其最大深度。 二叉樹的 最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。 class Solution { public:int maxDepth(TreeNode* root) {if(!root){return 0;}return max(maxDepth(root->left), maxDepth(root->…

單反和無反(私人筆記)

① 單反相機&#xff1a; 定義&#xff1a; 單反相機&#xff08;Single-Lens Reflex&#xff0c;SLR&#xff09;是一種帶有反光鏡結構的數碼相機。光線通過鏡頭進入后&#xff0c;先被反光鏡反射到五棱鏡/五面鏡&#xff0c;再通過取景器進入人眼。按下快門時&#xff0c;反…

超詳細講解C語言轉義字符\a \b \r \t \? \n等等

轉義字符 C語言有一組字符很特殊&#xff0c;叫做轉義字符&#xff0c;顧名思義&#xff0c;改變原來的意思的字符。 1 \? ??)是一個三字母詞&#xff0c;在以前的編譯器它會被編譯為] (??會被編譯為[ 因此在以前輸入(are you ok ??)就會被編譯為are you ok ] 解決這個…

Java Spring MVC -01

SpringMVC 是一種基于 的實現 MVC 設計模式的請求驅動類型的輕量級 Web 框架&#xff0c;屬于 Spring FrameWork 的后續產品&#xff0c;已經融合在 Spring Web Flow 中。 First:SpringMVC-01-SpringMVC 概述 SpringMVC 是 Spring 框架的一個模塊&#xff0c;用于構建 Web 應…

Spring MessageSource 詳解:如何在國際化消息中傳遞參數

在開發多語言應用程序時,Spring 的 MessageSource 是處理國際化(i18n)文本的核心組件。它允許我們根據用戶的 Locale (區域設置) 顯示不同的消息。然而,很多時候我們的消息并不是靜態的,而是需要包含動態數據,比如用戶名、數量、文件名等。這時,我們就需要在獲取國際化消…

Datawhale 5月llm-universe 第1次筆記

課程地址&#xff1a;GitHub - datawhalechina/llm-universe: 本項目是一個面向小白開發者的大模型應用開發教程&#xff0c;在線閱讀地址&#xff1a;https://datawhalechina.github.io/llm-universe/ 難點&#xff1a;配置conda環境變量 我用的vscode github方法 目錄 重要…

基于Java的家政服務平臺設計與實現(代碼+數據庫+LW)

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本家政服務平臺就是在這樣的大環境下誕生&#xff0c;其可以幫助管理者在短時間內處理完畢龐大的數據信息&a…

Android中LinearLayout線性布局使用詳解

Android中LinearLayout線性布局使用詳解 LinearLayout&#xff08;線性布局&#xff09;是Android中最基礎、最常用的布局之一&#xff0c;它按照水平或垂直方向依次排列子視圖。 基本特性 方向性&#xff1a;可以設置為水平(horizontal)或垂直(vertical)排列權重&#xff1…

LVS+keepalived實戰案例

目錄 部署LVS 安裝軟件 創建VIP 創建保存規則文件 給RS添加規則 驗證規則 部署RS端 安裝軟件 頁面內容 添加VIP 配置系統ARP 傳輸到rs-2 客戶端測試 查看規則文件 實現keepalived 編輯配置文件 傳輸文件給backup 修改backup的配置文件 開啟keepalived服務 …

(C語言)超市管理系統(測試版)(指針)(數據結構)(二進制文件讀寫)

目錄 前言&#xff1a; 源代碼&#xff1a; product.h product.c fileio.h fileio.c main.c 代碼解析&#xff1a; fileio模塊&#xff08;文件&#xff08;二進制&#xff09;&#xff09; 寫文件&#xff08;保存&#xff09; 函數功能 代碼逐行解析 關鍵知識點 讀文…

ubuntu----100,常用命令2

目錄 文件與目錄管理系統信息與管理用戶與權限管理網絡配置與管理軟件包管理打包與壓縮系統服務與任務調度硬件信息查看系統操作高級工具開發相關其他實用命令 在 Ubuntu 系統中&#xff0c;掌握常用命令可以大幅提升操作效率。以下是一些常用的命令&#xff0c;涵蓋了文件管理…

WiFi密碼查看器打開軟件自動獲取數據

相信有很大一部分人都不知道怎么看已經連過的WiFi密碼。 你還在手動查詢自己的電腦連接過得WiFi密碼嗎&#xff1f; —————【下 載 地 址】——————— 【本章單下載】&#xff1a;https://drive.uc.cn/s/dbbedf933dad4 【百款黑科技】&#xff1a;https://ucnygalh6…

開目新一代MOM:AI賦能高端制造的破局之道

導讀 INTRODUCTION 在高端制造業智能化轉型的深水區&#xff0c;企業正面臨著個性化定制、多工藝場景、動態生產需求的敏捷響應以及傳統MES柔性不足的考驗……在此背景下&#xff0c;武漢開目信息技術股份有限公司&#xff08;簡稱“開目軟件”&#xff09;正式發布新一代開目…

Android開發-視圖基礎

在Android應用開發中&#xff0c;視圖&#xff08;View&#xff09;是構建用戶界面的基本元素。無論是按鈕、文本框還是復雜的自定義控件&#xff0c;它們都是基于View類或其子類實現的。掌握視圖的基礎知識對于創建功能強大且美觀的應用至關重要。本文將深入探討Android中的視…

無人機信號線被電磁干擾導致停機

問題描述&#xff1a; 無人機飛控和電調之間使用PWM信號控制時候&#xff0c;無人機可以正常起飛&#xff0c;但是在空中懸停的時候會出現某一個電機停機&#xff0c;經排查電調沒有啟動過流過壓等保護&#xff0c;定位到電調和飛控之間的信號線被干擾問題。 信號線被干擾&am…

VSCode設置SSH免密登錄

引言 2025年05月13日20:21:14 原來一直用的PyCharn來完成代碼在遠程服務器上的運行&#xff0c;但是PyCharm時不時同步代碼會有問題。因此&#xff0c;嘗試用VSCode來完成代碼SSH遠程運行。由于VSCode每次進行SSH連接的時候都要手動輸入密碼&#xff0c;為了解決這個問題在本…

硬密封保溫 V 型球閥:恒溫工況下復雜介質控制的性價比之選-耀圣

硬密封保溫 V 型球閥&#xff1a;恒溫工況下復雜介質控制的性價比之選 在瀝青儲運、化學原料加工、食品油脂輸送等工業領域&#xff0c;帶顆粒高粘度介質與料漿的恒溫輸送一直是生產的關鍵環節。普通閥門在應對此類介質時&#xff0c;常因溫度流失導致介質凝結堵塞、密封失效&…