2025山東CCPC補題

2025山東CCPC補題

目錄

  • 2025山東CCPC補題
    • K - UNO! (雙端隊列的簡單應用)
    • M - 第九屆河北省大學生程序設計競賽 (二進制枚舉模擬)
    • J - Generate 01 String

感覺這場比賽的題目挺不錯的;沒有說那些為了算法而算法或者為了思維而思維的題,都是混合在一起相互搭配的題目;

K - UNO! (雙端隊列的簡單應用)

題目原文

Attachments - The 9th Hebei Collegiate Programming Contest - Codeforces


解題思路

一道簡單的模擬題;賽時想著去用數組去模擬會超時;后面想著如果沒有手牌就刪掉,但是刪除函數的時間復雜度是O(n)依然會超時;想到了用隊列去做但是里面有反轉的操作導致不好調換順序;后面想到用雙端隊列但是之前沒有用過,所以不太熟悉(其實定義都沒定義出來

思路不難分析;根據題意模擬即可;如果手牌降為0就直接將這個人彈出;寫的時候注意細節(比如使用+2牌時也會讓下個人停止行動一次);題目數據保證最后一定會剩至少兩個手牌不為空,所以直接模擬就可以;

用到的基本的操作函數在這篇博客中有介紹,比較基礎;


代碼實現

看著比較長,其實里面上下是一樣的就是換了個方向;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int N=2e5+10;
int a[N];
void slove(){int n,m;cin>>n>>m;deque<pii> q;for(int i=1;i<=n;i++){int x;cin>>x;q.push_back({x,i}); // 將數據和下標一起存入}int ff=1; // 用來記錄方向while(m--){char op;cin>>op;if(ff==1){ // 順時針方向pii f=q.front();  // 從隊頭取元素q.pop_front();f.fi--;if(op=='S'){ // 停止牌if(f.fi!=0)q.push_back(f); q.push_back(q.front()); // 將下一個也存入隊尾q.pop_front();}if(op=='R'){ // 反轉牌ff=-1;if(f.fi!=0) // 改變了方向,下一次就該從隊尾取了,所以這個再存回隊頭q.push_front(f);}if(op=='D'){ // +2牌if(f.fi!=0)q.push_back(f);pii f=q.front();q.pop_front();q.push_back({f.fi+2,f.se}); // +2后也會被停止,所以直接存到后面}if(op=='C'){if(f.fi!=0)q.push_back(f);}}else{ // 逆時針的方向,思路和上面一模一樣,只是取得時候從隊尾取數據了pii f=q.back();q.pop_back();f.fi--;if(op=='S'){if(f.fi!=0)q.push_front(f);q.push_front(q.back());q.pop_back();}if(op=='R'){ff=1;if(f.fi!=0)q.push_back(f);}if(op=='D'){if(f.fi!=0)q.push_front(f);pii f=q.back();q.pop_back();q.push_front({f.fi+2,f.se});}if(op=='C'){if(f.fi!=0)q.push_front(f);}}}while(q.size()){ // 將隊列中剩余的手牌數量同步到數組中,便于輸出pii f=q.front();q.pop_front();a[f.se]=f.fi;}for(int i=1;i<=n;i++) // 按序輸出即可cout<<a[i]<<endl;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

M - 第九屆河北省大學生程序設計競賽 (二進制枚舉模擬)

題目原文
Attachments - The 9th Hebei Collegiate Programming Contest - Codeforces


解題思路

題目中的每道題都只有選擇或不選擇兩種狀態,里面的數據范圍也只有18,所以不難想到利用二進制取模擬;題目又規定了所選取的題目數量只能是10~13道題目,范圍很小,所以可以考慮直接去枚舉判斷;

輸入原有的題目數量,和隊伍的數量;然后在輸入每個隊伍能做出題目的情況;然后再告訴我們三種牌的最低名次和對應需要的過題數;

最后的判斷能否滿足條件就是看對應名次的選手過題數是否和要求的題數相等;


代碼實現

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
const int N=2e5+10;
string a[205];  // 存每個組的作答情況 void slove(){int n, m; cin >> n >> m;for(int i=1; i<=m; ++i)cin >> a[i];  int jp, yp, tp, ja, ya, ta;cin >> jp >> yp >> tp >> ja >> ya >> ta;// 遍歷所有可能的子集(二進制枚舉)for(int i=0; i<=(1<<n)-1; i++){  // i的每一位表示是否選擇對應的位int c = 0, x = i;while(x){ // 計算當前的i選擇題目的個數(即二進制中1的個數)if(x & 1) c++;x >>= 1;}if(c > 13 || c < ja || c < 10) // 剪枝:如果選中的位數不在10~13之間,或小于ja跳過continue;vector<int> an(m+1, 0);  // an表示每個組在當前的選題情況下能做對的題數 an[0] = 0x3f3f3f;  // 初始化為一個大數,用于占位(方便后面排序對齊) // 遍歷每一位,每個題目是否被選中 for(int j=0; j<n; j++){if((i >> j) & 1){  // 如果第j位被選中for(int k=1; k<=m; k++){ // 遍歷每一組的作答情況 if(a[k][j] == '1')  // 如果這題該組會做就+1 an[k]++;}}}sort(an.begin(), an.end(), greater<int>()); // 將an數組從大到小排序if(an[jp] == ja && an[yp] == ya && an[tp] == ta){ // 判斷三種獲獎條件是否滿足 cout << c << endl; // 輸出選取的題數 for(int j=0; j<n; j++){if((i >> j) & 1)cout << j+1 << ' '; // 輸出選取的題號 }return;}}cout << -1;
} signed main(){ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);int _=1;//cin >> _;while(_--)slove();return 0;
}

J - Generate 01 String

題目原文

Attachments - The 9th Hebei Collegiate Programming Contest - Codeforces


解題思路

比賽時光想著每次去找最優的配隊方式去輸出,但是我們根本不需要考慮具體的對應關系,在滿足01數量相等時結果是一定可行的;所以我們只需遍歷統計01的出現情況去判斷是否需要在這里操作增加新的還是是可以和前面配對的即可;


代碼實現

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int N=2e5+10;
int a[N];
void slove(){string s;cin>>s;if(count(s.begin(),s.end(),'0')!=count(s.begin(),s.end(),'1')){cout<<-1<<endl; // 01數量不同不可操作return ;}int c0=0,c1=0; // 統計可用01的個數int t=1; // 記錄所處S的位置cout<<s.size()/2<<endl; // 每次多兩個數,所以操作次數一定是長度除2for(int i=0;i<s.size();i++){if(s[i]=='0'){if(c0==0){ // 如果沒有可用0,說明需要新增一個,輸出cout<<t<<' '<<1<<endl;c1++; // 可用1增加}else{ // 有可用的0就和前面的1配對c0--; t++; // 位置移動,前面會多一個S}}else{ // 1的情況與0類似if(c1==0){cout<<t<<' '<<2<<endl;c0++;}else{c1--;t++;}}}
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

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

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

相關文章

體繪制學習

一、基本概念 體繪制是對一個三維物體數據進行采樣與擬合的過程。 在體繪制中用vtkVolume渲染數據 渲染數據類數據轉換類幾何渲染vtkActorvtkPolyDataMapper體渲染vtkVolumevtkVolumeRayCastMapper 體繪制常用算法如下。 光線投射法。 優點是可視化結果質量好。缺點是計算…

告別“盤絲洞”車間:4-20mA無線傳輸如何重構工廠神經網?

4-20ma無線傳輸是利用無線模塊將傳統的溫度、壓力、液位等4-20mA電流信號轉換為無線信號進行傳輸。這一技術突破了有線傳輸的限制&#xff0c;使得信號可以在更廣泛的范圍內進行靈活、快速的傳遞&#xff0c;無線傳輸距離可達到50KM。達泰4-20ma無線傳輸模塊在實現工業現場應用…

VB.NET與SQL連接問題解決方案

1.基本連接步驟 使用SqlConnection、SqlCommand和SqlDataReader進行基礎操作&#xff1a; vb.net Imports System.Data.SqlClient Public Sub ConnectToDatabase() Dim connectionString As String "ServermyServerAddress;DatabasemyDataBase;Integrated Security…

ElasticSearch--DSL查詢語句

ElasticSearch DSL查詢文檔 分類 查詢類型功能描述典型應用場景示例語法查詢所有匹配所有文檔&#xff0c;無過濾條件數據預覽/測試json { "query": { "match_all": {} } }全文檢索查詢對文本字段分詞后匹配&#xff0c;基于倒排索引搜索框模糊匹配、多字段…

DDR4讀寫壓力測試

1.1測試環境 1.1.1整體環境介紹 板卡&#xff1a; pcie-403板卡 主控芯片&#xff1a; Xilinx xcvu13p-fhgb2104-2 調試軟件&#xff1a; Vivado 2018.3 代碼環境&#xff1a; Vscode utf-8 測試工程&#xff1a; pcie403_user_top 1.1.2硬件介紹 UD PCIe-403…

在 Windows 上使用 WSL 安裝 Ansible詳細步驟

在 Windows 上使用 WSL&#xff08;Windows Subsystem for Linux&#xff09; 安裝 Ansible 是目前最推薦的方式&#xff0c;因為 Ansible 本身是為 Linux 環境設計的&#xff0c;不支持原生 Windows 作為控制節點。 下面是一個 詳細步驟指南 &#xff0c;幫助你在 Windows 上…

編寫第一個ros程序

1.下載VScode 下載鏈接如下&#xff1a; Download Visual Studio Code - Mac, Linux, Windows 下載ARM64下的.deb文件 打開虛擬機&#xff0c;再rosnoetic下新建一個文件夾VSCODE&#xff0c;將windows下的文件導入該文件夾下如下圖。 在該文件夾下右鍵選擇在終端中打開 輸入…

代碼隨想錄算法訓練營第60期第四十九天打卡

大家好&#xff0c;今天我們還是繼續我們的動態規劃章節&#xff0c;可能有的朋友已經開始厭倦了說為什么動態規劃怎么這么多題目&#xff0c;大家可以想想我們前面其實刷過好幾種類型的動態規劃的經典題目比如說各式各樣的背包問題當然包括0-1背包&#xff0c;完全背包&#x…

centos7.9離線升級內核到4.19.12詳細教程

cenots7.9默認安裝的內核版本是:3.10.0-1160.119.1.el7.x86_64,在安裝nvidia顯卡驅動的時候,提示內核版本過低,需要升級內核版本,升級完成之后,就可以順利的安裝上nvidia顯卡驅動了,實測有效。 一、查看當前內核版本命令 uname -r二、下載離線內核的rpm包

Vue3 + TypeScript + el-input 實現人民幣金額的輸入和顯示

輸入人民幣金額的參數要求&#xff1a; 輸入要求&#xff1a; 通過鍵盤&#xff0c;只允許輸入負號、小數點、數字、退格鍵、刪除鍵、方向左鍵、方向右鍵、Home鍵、End鍵、Tab鍵&#xff1b;負號只能在開頭&#xff1b;只保留第一個小數點&#xff1b;替換全角輸入的小數點&a…

方正字庫助力華為,賦能鴻蒙電腦打造全場景字體解決方案

2025年5月19日&#xff0c;搭載華為鴻蒙操作系統的鴻蒙電腦&#xff0c;面向用戶推出集AI智能、互聯流暢、安全保障和精致體驗于一體的全新辦公系統。作為鴻蒙生態核心字體服務商&#xff0c;方正字庫為此次提供了全面的系統字體支持&#xff0c;涵蓋中文、西文及符號三大類字庫…

PHPStudy 一鍵式網站搭建工具的下載使用

目錄 一、下載 PHPStudy二、安裝步驟三、基本使用方法3.1 創建網站3.2 管理數據庫3.3 軟件管理3.4 自動啟動3.5 配置管理 四、注意事項和進階使用4.1 注意事項4.2 進階使用 背景&#xff1a; 我們在學習和工作中&#xff0c;經常會遇到各種需要自己搭建環境的場景&#xff0c;這…

java中的線程安全的集合

1.ConcurrentHashMap。 key,value結構。 jdk1.7通過分段鎖保證不同段同時操作是線程安全的&#xff0c;但并發不足&#xff0c;jdk1.8通過node節點鎖和CAS保證并發安全。不同node節點可以并發讀寫。通過它的computer,computerIfAbsent,等可以保證原子更新value。ifAbsent表示有…

MySQL問題:MySQL中使用索引一定有效嗎?如何排查索引效果

不一定有效&#xff0c;當查詢條件中不包含索引列或查詢條件復雜且不匹配索引順序 對于一些小表&#xff0c;MySQL可能選擇全表掃描而非使用索引&#xff0c;因為全表掃描的開銷可能更小 最終是否用上索引是根據MySQL成本計算決定的&#xff0c;評估CPU和I/O成本 排查索引效…

使用vscode MSVC CMake進行C++開發和Debug

使用vscode MSVC CMake進行C開發和Debug 前言軟件安裝安裝插件構建debuug方案一debug方案二其他 前言 一般情況下我都是使用visual studio來進行c開發的&#xff0c;但是由于python用的是vscode&#xff0c;所以二者如果統一的話能稍微提高一點效率。 軟件安裝 需要安裝的軟…

【后端高階面經:消息隊列篇】29、Kafka高性能探秘:零拷貝、順序寫與分區并發實戰

一、 順序寫入:磁盤性能的極致挖掘 Kafka的高性能本質上源于對磁盤順序訪問的深度優化。 傳統隨機寫入的磁盤操作需要磁頭頻繁尋道,機械硬盤的隨機寫性能通常僅為100IOPS左右,而Kafka通過追加日志(Append-Only Log)模式,將所有消息按順序寫入分區文件,使磁盤操作轉化為…

AI預測3D新模型百十個定位預測+膽碼預測+去和尾2025年5月27日第90彈

從今天開始&#xff0c;咱們還是暫時基于舊的模型進行預測&#xff0c;好了&#xff0c;廢話不多說&#xff0c;按照老辦法&#xff0c;重點8-9碼定位&#xff0c;配合三膽下1或下2&#xff0c;殺1-2個和尾&#xff0c;再殺6-8個和值&#xff0c;可以做到100-300注左右。 (1)定…

Git 初次推送遠程倉庫

Git 初次推送遠程倉庫&#xff08;完整實戰版&#xff09; —— 涵蓋重命名分支、強制合并、沖突解決等高頻場景 &#x1f525; 核心流程圖 初始化 → 關聯遠程 → 提交代碼 → 處理分支沖突 → 成功推送 1. 基礎操作&#xff08;全新倉庫&#xff09; # 初始化 cd /your/pr…

Pluto實驗報告——基于FM的音頻信號傳輸并解調恢復

目錄 一、實驗目的 ................................ ................................ ................................ .................. 3 二、實驗內容 ................................ ................................ ................................ ......…

輸出數據OutputFormat案例

輸出數據OutputFormat 案例&#xff1a; www.atguigu.com www.atguigu.com www.atguigu.com www.hao123.com www.shouhu.com www.baidu.com www.atguigu.com www.qq.com www.gaga.com www.qinghua.com www.sogou.com www.baidu.com www.alibaba.com …