Codeforces Round 1024 (Div.2)

比賽鏈接:CF1024

A. Dinner Time

只有當 n n n p p p 的倍數而且 n ? q p =? m \frac{n \cdot q}{p} \not= m pn?q?=m 時輸出 NO,其余情況均滿足條件。

時間復雜度: O ( 1 ) O(1) O(1)

#include <bits/stdc++.h>
using namespace std;const int N = 105;
int n, m, p, q, a[N], sum[N];void solve() {cin >> n >> m >> p >> q;if (n % p == 0 && n / p * q != m) cout << "NO\n";else cout << "YES\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

B. The Picky Cat

  • 首先, a 1 a_1 a1? 是否進行操作變成 ? a 1 -a_1 ?a1? 并不影響最后答案是否存在。
  • 所以,可以先把 a 1 a_1 a1? 先變成整數,然后找是否至少有 ? n 2 ? \lceil \frac{n}{2}\rceil ?2n?? a i ( 1 ≤ i ≤ n ) a_i (1 \le i \le n) ai?(1in) 大于等于 a 1 a_1 a1? 即可。
  • 如果有超過 ? n 2 ? \lceil \frac{n}{2}\rceil ?2n?? a i ( 1 ≤ i ≤ n ) a_i (1 \le i \le n) ai?(1in) 大于等于 a 1 a_1 a1?,將其中一部分設為負數即可。

時間復雜度: O ( n ) O(n) O(n)

#include <bits/stdc++.h>
using namespace std;const int N = 1e5 + 10;
int n, a[N];void solve() {cin >> n;for (int i = 1; i <= n; i++) cin >> a[i], a[i] = abs(a[i]);int tot = 1;for (int i = 2; i <= n; i++)tot += (a[1] <= a[i]);if (tot >= (n + 1) / 2) cout <<"YES\n";else cout << "NO\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

C. Mex in the Grid

構造題。

  • 可以發現只要不包含 0 0 0 的子數組的 M E X MEX MEX 都是 0 0 0,因此,為了讓 0 0 0 這個數盡可能多地在子數組中出現我們要把 0 0 0 放在 a n 2 , n 2 a_{\frac{n}{2}, \frac{n}{2}} a2n?,2n??
  • 為了最大化 M E X MEX MEX 的和,我們要一層一層的往外放數字,因為這樣能讓所有以 0 0 0 為中心的大小為 i ? i i \cdot i i?i 的子數組的 M E X MEX MEX 的和最大。
  • 在每一層放數字的時候,我們可以按照逆時針的順序放置,這樣在以 0 0 0 為中心的正方形子數組中,能讓有一些只包含某一塊區域的子數組的 M E X MEX MEX 更大。

時間復雜度: O ( n 2 ) O(n^2) O(n2)

#include <bits/stdc++.h>
using namespace std;constexpr int N = 505;
int n, a[N][N], cnt = 0;
constexpr int dx[4] = { 0, 1, 0, -1 }, dy[4] = { 1, 0, -1, 0 };void solve() {cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) a[i][j] = 0;cnt = 1;int step = 1, d = 0;int x = (n + 1) / 2, y = (n + 1) / 2;while (cnt < n * n) {for (int i = 1; i <= step; i++) {x += dx[d], y += dy[d];a[x][y] = cnt++;}d = (d + 1) % 4;if (d == 0 || d == 2) step++;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) cout << a[i][j] << " ";cout << "\n";}
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

D. Quartet Swapping

法一:奇偶性

  • 根據操作的性質,位于奇數位的數字只能交換到奇數位,位于偶數位的數字只能交換到偶數位。
  • 最小的子序列一定是所有奇偶位置上的數字都分別從小到大排列。
  • 但由于操作的最小長度是 4 4 4,只有 [ 1 , n ? 3 ] [1, n - 3] [1,n?3] 里面的數字能夠保證滿足這個性質,最后 3 3 3 位數字可能無法滿足這個條件。
  • 進一步觀察交換操作可以得知,最后 3 3 3 位數字,能否滿足第二個條件,與奇偶位置上所有數字的逆序對的奇偶是否相同有關。如果兩者逆序對數量的奇偶相同,那么最后 3 3 3 位也能滿足第二個條件;否則,無法滿足條件。

時間復雜度: O ( n log ? n ) O(n \log n) O(nlogn)

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;
int n, a, ans[N], t[N];void add(int x, int k) {while (x <= n) {t[x] += k;x += (x & (-x));}
}int query(int x) {int res = 0;while (x) {res += t[x];x -= (x & (-x));}return res;
}void solve() {cin >> n;vector<int> odd, even;for (int i = 1; i <= n; i++) {cin >> a;if (i & 1) odd.push_back(a);else even.push_back(a);}for (int i = 0; i <= n; i++) t[i] = 0;int num = 0;for (int i = odd.size() - 1; i >= 0; i--) {num += query(odd[i]);add(odd[i], 1);}for (int i = 0; i <= n; i++) t[i] = 0;for (int i = even.size() - 1; i >= 0; i--) {num -= query(even[i]);add(even[i], 1);}sort(odd.begin(), odd.end()), sort(even.begin(), even.end());for (int i = 0; i < (int)odd.size(); i++) ans[2 * i + 1] = odd[i];for (int i = 0; i < (int)even.size(); i++) ans[2 * i + 2] = even[i];if (num & 1) swap(ans[n - 2], ans[n]);for (int i = 1; i <= n; i++) cout << ans[i] << " "; cout << "\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

法二:貪心

  • 進行題目中的操作的本質是為了將后面較小的數字依次往前移,操作結果等價于 ( i i i, i + 1 ) i + 1) i+1), ( j j j, j + 1 j + 1 j+1) 位置上的數字分別對應交換。
  • 利用 s e t set set 分別維護后面奇偶位置上的數字,從前往后分別將后面對應奇偶位置上最小的數字往前移動到當前位置即可。

時間復雜度: O ( n log ? n ) O(n \log n) O(nlogn)

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;
int n, a[N], vis[N];void op(int x, int y) {swap(a[x], a[y]), swap(a[x + 1], a[y + 1]);vis[a[x]] = x, vis[a[y]] = y;vis[a[x + 1]] = x + 1, vis[a[y + 1]] = y + 1;
}void solve() {cin >> n;set<int> odd, even;for (int i = 1; i <= n; i++) {cin >> a[i], vis[a[i]] = i;if (i & 1) odd.insert(a[i]);else even.insert(a[i]);}for (int i = 1; i <= n - 3; i++) {if (i & 1) {int num = *odd.begin();odd.erase(odd.begin());if (vis[num] == n) op(n - 3, n - 1);op(i, vis[num]);} else {int num = *even.begin();even.erase(even.begin());if (vis[num] == n) op(n - 3, n - 1);op(i, vis[num]);}}for (int i = 1; i <= n; i++) cout << a[i] << " ";cout << "\n";
}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int T;cin >> T;while (T--) solve();return 0;
}

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

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

相關文章

【LeetCode 熱題 100】二叉樹的最大深度 / 翻轉二叉樹 / 二叉樹的直徑 / 驗證二叉搜索樹

??個人主頁&#xff1a;小羊 ??所屬專欄&#xff1a;LeetCode 熱題 100 很榮幸您能閱讀我的文章&#xff0c;誠請評論指點&#xff0c;歡迎歡迎 ~ 目錄 二叉樹的中序遍歷二叉樹的最大深度翻轉二叉樹對稱二叉樹二叉樹的直徑二叉樹的層序遍歷將有序數組轉換為二叉搜索樹驗…

Tomcat發布websocket

一、tomcal的lib放入文件 tomcat-websocket.jar websocket-api.jar 二、代碼示例 package com.test.ws;import com.test.core.json.Jmode;import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.util.concurrent.CopyOnWriteArraySet; imp…

LLM筆記(二)LLM數據基礎-分詞算法(2)

文章目錄 1. 分詞算法概述1.1 基于詞典的&#xff08;或基于規則的&#xff09;分詞算法1.2 基于統計的&#xff08;或基于機器學習的&#xff09;分詞算法1.3 基于深度學習的分詞算法1.4 子詞&#xff08;Subword&#xff09;分詞算法1.5 混合分詞算法1.6 針對不同語言的特點 …

Uniapp開發鴻蒙應用時如何運行和調試項目

經過前幾天的分享&#xff0c;大家應該應該對uniapp開發鴻蒙應用的開發語法有了一定的了解&#xff0c;可以進行一些簡單的應用開發&#xff0c;今天分享一下在使用uniapp開發鴻蒙應用時怎么運行到鴻蒙設備&#xff0c;并且在開發中怎么調試程序。 運行 Uniapp項目支持運行到…

數據湖與數據倉庫融合:Hudi、Iceberg、Delta Lake 實踐對比

在實時與離線一體化的今天,數據湖與數據倉庫邊界不斷融合,越來越多企業選用如 Hudi、Iceberg、Delta Lake 等開源方案實現統一的數據存儲、計算、分析平臺。本篇將圍繞以下關鍵點,展開實戰對比與解決方案分享: ? 實時寫入能力 ? ACID 保證 ? 增量數據處理能力 ? 流批一…

Python爬蟲(29)Python爬蟲高階:動態頁面處理與云原生部署全鏈路實踐(Selenium、Scrapy、K8s)

目錄 引言&#xff1a;動態爬蟲的技術挑戰與云原生機遇一、動態頁面處理&#xff1a;Selenium與Scrapy的協同作戰1.1 Selenium的核心價值與局限1.2 Scrapy-Selenium中間件開發1.3 動態分頁處理實戰&#xff1a;京東商品爬蟲 二、云原生部署&#xff1a;Kubernetes架構設計與優化…

數據結構(十)——排序

一、選擇排序 1.簡單選擇排序 基本思想&#xff1a;假設排序表為[1,…,n]&#xff0c;第i趟排序即從[i,…,n]中選擇關鍵字最小的元素與L[i]交換 eg&#xff1a;給定關鍵字序列{87&#xff0c;45&#xff0c;78&#xff0c;32&#xff0c;17&#xff0c;65&#xff0c;53&…

小結:jvm 類加載過程

類加載過程 是Java虛擬機&#xff08;JVM&#xff09;將字節碼文件&#xff08;.class文件&#xff09;加載到內存中&#xff0c;并轉換為運行時數據結構的過程。這個過程可以分為多個步驟&#xff0c;每個步驟都有其特定的任務和目的。根據你提供的信息&#xff0c;以下是類加…

2024 山東省ccpc省賽

目錄 I&#xff08;簽到&#xff09; 題目簡述&#xff1a; 思路&#xff1a; 代碼&#xff1a; A&#xff08;二分答案&#xff09; 題目簡述&#xff1a; 思路&#xff1a; 代碼&#xff1a; K&#xff08;構造&#xff09; 題目&#xff1a; 思路&#xff1a; 代…

turn.js與 PHP 結合使用來實現 PDF 文件的頁面切換效果

將 Turn.js 與 PHP 結合使用來實現 PDF 文件的頁面切換效果&#xff0c;你需要一個中間步驟將 PDF 轉換為 Turn.js 可以處理的格式&#xff08;如 HTML 頁面或圖片&#xff09;。以下是實現這一功能的步驟和示例代碼&#xff1a; 步驟 1: 安裝必要的庫 首先&#xff0c;你需要…

Python實現NOA星雀優化算法優化卷積神經網絡CNN回歸模型項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔視頻講解&#xff09;&#xff0c;如需數據代碼文檔視頻講解可以直接到文章最后關注獲取。 1.項目背景 在當今數據驅動的時代&#xff0c;卷積神經網絡&#xff08;CNN&#xff09;不僅在圖像分類任務中…

(面試)View相關知識

1、View繪制流程 onMeasure() 確定View的測量寬高。onLayout() 確定View的最終寬高和四個頂點的位置。onDraw() 將View 繪制到屏幕上。 2、MeasureSpec有三種測量模式&#xff1a; 2.1. EXACTLY&#xff08;精確模式&#xff09; 含義&#xff1a;父容器明確指定了子View的精…

數組名既可作為指針也可作為變量名

在C語言中&#xff0c;數組名在不同的上下文中既可以作為指向數組首個元素的指針&#xff0c;也可以代表整個數組&#xff0c;這是由C語言的設計和語法規則決定的&#xff0c;下面我來詳細解釋一下。 1. 數組名作為指向首元素的指針 在大多數情況下&#xff0c;當數組名出現在…

Java異常、泛型與集合框架實戰:從基礎到應用

在Java編程的世界里&#xff0c;異常處理、泛型和集合框架是構建高效、健壯應用的關鍵技術。通過掌握這些技術&#xff0c;我們可以更好地管理程序運行時的錯誤&#xff0c;提高代碼的復用性和類型安全性。今天&#xff0c;我將通過一系列實驗&#xff0c;分享如何在Java中使用…

Spring源碼之解決循環依賴 三級緩存

目錄 三級緩存核心原理 循環依賴的解決過程 1. Bean A創建過程中提前曝光工廠 2. Bean B創建時發現依賴A&#xff0c;從緩存獲取 3. Bean A繼續完成初始化 三級緩存的作用總結 二級緩存為何不夠解決緩存依賴&#xff1f; 三級緩存如何解決&#xff1f; 為什么不直接在…

K8S Ingress 實現AB測試、藍綠發布、金絲雀(灰度)發布

假設有如下三個節點的 K8S 集群&#xff1a; ? k8s31master 是控制節點 k8s31node1、k8s31node2 是工作節點 容器運行時是 containerd 一、場景分析 閱讀本文&#xff0c;默認您已經安裝了 Ingress Nginx。 1&#xff09;A/B 測試 A/B 測試基于用戶請求的元信息將流量路由…

深入理解構造函數,析構函數

目錄 1.引言 2.構造函數 1.概念 2.特性 3.析構函數 1.概念 2.特性 1.引言 如果一個類中什么都沒有&#xff0c;叫作空類. class A {}; 那么我們這個類中真的是什么都沒有嗎?其實不是,如果我們類當中上面都不寫.編譯器會生成6個默認的成員函數。 默認成員函數:用戶沒有顯…

Oracle 11.2.0.4 pre PSU Oct18 設置SSL連接

Oracle 11.2.0.4 pre PSU Oct18 設置SSL連接 1 說明2 客戶端配置jdk環境3服務器檢查oracle數據庫補丁4設置ssla 服務器配置walletb 上傳測試腳本和配置文件到客戶端c 服務器修改數據庫偵聽和sqlnet.orad 修改客戶端的sqlnet.ora和tnsnames.ora的連接符e 修改java代碼的數據連接…

BrepGen中的幾何特征組裝與文件保存詳解 deepwiki occwl OCC包裝庫

有這種好東西我怎么不知道 AutodeskAILab/occwl: Lightweight Pythonic wrapper around pythonocc 組裝幾何特征以創建B-rep模型 保存為STEP和STL文件細說 Fast 快速 Searched across samxuxiang/BrepGen Ill explain how BrepGen assembles geometric features to create B-r…

重慶 ICPC 比賽游記

2025.5.9 比賽前一天晚上&#xff0c;激動地睡不著覺&#xff0c;起來收拾了好多東西。&#xff08;其實就四本書&#xff0c;剩下的全是零食……關鍵在于這四本書基本沒用。&#xff09; 2025.5.10 學校喪心病狂的讓我們 6:20 到校門口集合坐車&#xff08;據說是怕趕不上比…