2025河北CCPC 題解(部分)

簽到題:AC代碼如下 :

// Problem: H - What is all you need?
// Contest: Virtual Judge - sdccpc20250526
// URL: https://vjudge.net/contest/718568#problem/H
// Memory Limit: 1024 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//const int mod = 998244353;void solve()
{string s; cin>>s;string t = s.substr(s.size()-12,12);if(t == "isallyouneed"){cout<<"Yes"<<endl;string ans = s.substr(0,s.size()-12);cout<<ans<<endl;}else{cout<<"No"<<endl;}
}signed main()
{IOSint T=1;
//	cin>>T;while(T--) solve(); return 0;
} 

// Problem: K - UNO!
// Contest: Virtual Judge - sdccpc20250526
// URL: https://vjudge.net/contest/718568#problem/K
// Memory Limit: 1024 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define pii pair<int,int> 
#define fi first
#define se second
const int N = 1e6+10;
int a[N];
int res[N];void solve()
{bool f=1;deque<pii> q;int n,m; cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];q.push_back({a[i],i});}string s; cin>>s;for(int i=0;i<s.size();i++){if(f)//當前為正向(順時針){if(s[i]=='C')//沒有特殊操作 當前玩家出牌之后排到后面即可{if(q.front().fi==1) q.pop_front();//如果當前玩家只有一張牌了 直接出隊即可else//否則就排到后面 并且牌數-1{int x = q.front().fi-1;int y = q.front().se;q.pop_front();q.push_back({x,y});}}else if(s[i]=='S')//禁止效果 牌{if(q.front().fi==1) q.pop_front();//同上else{int x = q.front().fi-1;//同上int y = q.front().se;q.pop_front();q.push_back({x,y});}int x = q.front().fi;//禁止的效果 -> 當前玩家出牌后下一個玩家直接跳過 -> 直接往后排int y = q.front().se;q.pop_front();q.push_back({x,y});}else if(s[i]=='R')//順序反轉效果 牌{f=0;//順序改變if(q.front().fi==1) q.pop_front();//同上else{q.front().fi--;//不用往后排了,因為順序已經反轉了 下一次就要從逆時針開始轉了 只需要將牌數-1即可}//他在隊首的話就相當于是在逆時針方向時的隊尾}else{if(q.front().fi==1) q.pop_front();//同上else{int x = q.front().fi-1;int y = q.front().se;q.pop_front();q.push_back({x,y});}int x = q.front().fi+2;//加兩張牌效果int y = q.front().se;q.pop_front();q.push_back({x,y});//排到隊尾}}else//逆時針方向{	//之后代碼根上面的順時針方向基本一樣 只需要把隊首和隊尾進行調換即可 -> back->front :front->backif(s[i]=='C'){if(q.back().fi==1) q.pop_back();else{int x = q.back().fi-1;int y = q.back().se;q.pop_back();q.push_front({x,y});}}else if(s[i]=='S'){if(q.back().fi==1) q.pop_back();else{int x = q.back().fi-1;int y = q.back().se;q.pop_back();q.push_front({x,y});}int x = q.back().fi;int y = q.back().se;q.pop_back();q.push_front({x,y});}else if(s[i]=='R'){f=1;//改為順時針方向if(q.back().fi==1) q.pop_back();else{q.back().fi--;}}else{if(q.back().fi==1) q.pop_back();else{int x = q.back().fi-1;int y = q.back().se;q.pop_back();q.push_front({x,y});}int x = q.back().fi+2;int y = q.back().se;q.pop_back();q.push_front({x,y});}}}while(q.size())//最后將所有的人的牌數依次存放到res數組中即可{res[q.front().se]=q.front().fi;//一一對應(second代表下標->第幾個人 first代表當前所剩余的牌數)不在隊列中的就說明是這個人在之前就已經出完牌了 在res數組中就是0 直接輸出即可q.pop_front();}for(int i=1;i<=n;i++){cout<<res[i]<<endl;}return ;
}signed main()
{IOSint T=1;
//	cin>>T;while(T--) solve(); return 0;
} 

?

// Problem: M - 第九屆河北省大學生程序設計競賽
// Contest: Virtual Judge - sdccpc20250526
// URL: https://vjudge.net/contest/718568#problem/M
// Memory Limit: 1024 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
const int N = 1e3;
string s[N];
int ra,rb,rc;
int pa,pb,pc;void solve()
{int n,m;cin>>n>>m;for(int i=1;i<=m;i++){cin>>s[i];}cin>>ra>>rb>>rc;cin>>pa>>pb>>pc;for(int i=1;i<=(1<<n)-1;i++)//在二進制中,2^n的二進制表示正好是n + 1位數 {							//因為2^n在二進制中是1后面跟n個0,所以當2^n用二進制表示時,其位數為n + 1。bitset<20> bt(i);//將i轉成二進制  if(bt.count()>=10&&bt.count()<=13)//適當剪枝  {vector<int> ans;ans.push_back(1e18);//維護下標 使得下標從1開始  for(int j=1;j<=m;j++){bitset<20> c(s[j]);//將01串復制到 bitset中  c&=bt;//且運算操作 能夠找出兩個二進制數中的共同的1的個數ans.push_back(c.count());}sort(ans.begin(),ans.end(),greater<int>());if(ans[ra]==pa&&ans[rb]==pb&&ans[rc]==pc)//滿足題目要求 當前位次的過題數符合題意{cout<<bt.count()<<endl;//輸出一樣的個數for(int j=n-1;j>=0;j--){if(bt[j])cout<<n-j<<' ';}return ;}}}cout<<-1<<endl;return ;
}signed main()
{IOSint T=1;
//	cin>>T;while(T--) solve(); return 0;
} 

?

// Problem: J - Generate 01 String
// Contest: Virtual Judge - sdccpc20250526
// URL: https://vjudge.net/contest/718568#problem/J
// Memory Limit: 1024 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define pii pair<int,int>
#define fi first
#define se secondvoid solve()
{vector<pii> a;string s; cin>>s;int num0=0,num1=0;for(int i=0;i<s.size();i++){if(s[i]=='0') num0++;if(s[i]=='1') num1++;}if(num0!=num1){cout<<"-1"<<endl;return ;}int x=0,y=0,index=1;		//x中存還能補貼幾個0(目前有多少個因為操作2而多余的0)//y中存還能補貼幾個1(目前有多少個因為操作1而多余的1)for(int i=0;i<s.size();i++){if(s[i]=='0'){if(x==0) //如果沒有能補貼的0就只能通過操作1來構造出0 使用操作1之后就會多余出來一個1供以后出現的1使用{a.push_back({index,1});//將這時候的操作記錄下來y++;//由于使用了操作1 -> 所以會多出來一個1(即y++即可)}else{x--;//否則的話就是用操作2剩余的0來和這個位置所需的0來構造成一組 01/10串index++;//這一組構造完成后就不用管了,因為現在只需要考慮一定能構成要求串的情況}//其他的01/10串組可以在之后進行配對 讓index++就行了}else{if(y==0){a.push_back({index,2});x++;}			else{y--;index++;}}}cout<<a.size()<<endl;for(auto i : a){cout<<i.fi<<' '<<i.se<<endl;}
}
/*00S1S10S1S  001101每次的操作(不管是操作1還是操作2),本質上都是S的個數++ 對數字而言 無非就是在01/10串之后添加一個10/01串所以可以把一個01/10串看作為一組 每次去構造每個組就行了 構造完成一組之后就讓index++ 去構造下一組
*/
signed main()
{IOSint T=1;
//	cin>>T;while(T--) solve(); return 0;
} 

?其實正解是二分~

附:

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

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

相關文章

計算機視覺---YOLOv4

YOLOv4&#xff08;You Only Look Once v4&#xff09;于2020年由Alexey Bochkovskiy等人提出&#xff0c;是YOLO系列的重要里程碑。它在YOLOv3的基礎上整合了當時最先進的計算機視覺技術&#xff0c;實現了檢測速度與精度的顯著提升。以下從主干網絡、頸部網絡、頭部檢測、訓練…

OpenCV 第7課 圖像處理之平滑(一)

1. 圖像噪聲 在采集、處理和傳輸過程中,數字圖像可能會受到不同噪聲的干擾,從而導致圖像質量降低、圖像變得模糊、圖像特征被淹沒,而圖像平滑處理就是通過除去噪聲來達到圖像增強的目的。常見的圖像噪聲有椒鹽噪聲、高斯噪聲等。 1.1 椒鹽噪聲 椒鹽噪聲(Salt-and-pepper N…

Spring AI 系列3: Promt提示詞

一、Promt提示詞 Promt提示是引導 AI 模型生成特定輸出的輸入&#xff0c; 提示的設計和措辭會顯著影響模型的響應。 在 Spring AI 中與 AI 模型交互的最低層級&#xff0c;處理提示有點類似于在 Spring MVC 中管理”視圖”。 這涉及創建帶有動態內容占位符的大段文本。 這些占…

隨叫隨到的電力補給:移動充電服務如何重塑用戶體驗?

在快節奏的現代生活中&#xff0c;電力已成為維系日常運轉的隱形血脈。智能手機、電動汽車、便攜設備的普及&#xff0c;讓“電量焦慮”逐漸演變為一種時代癥候。而移動充電服務的興起&#xff0c;正悄然改變這一局面。它像一位隱形的能源管家&#xff0c;隨時響應需求&#xf…

LeetCode 75. 顏色分類 - 雙指針法高效解決(Java實現)

文章目錄 問題描述算法思路&#xff1a;三指針分區法核心思想指針定義 Java實現算法執行流程關鍵問題解析&#xff1a;為什么交換0后不需要重新檢查&#xff1f;交換0時的兩種情況分析詳細解釋&#xff1a; 復雜度分析示例演示&#xff08;輸入&#xff1a;[2,0,2,1,1,0]&#…

【MySQL】C語言連接

要使用C語言連接mysql&#xff0c;需要使用mysql官網提供的庫&#xff0c;大家可以去官網下載 我們使用C接口庫來進行連接 要正確使用&#xff0c;我們需要做一些準備工作: 保證mysql服務有效在官網上下載合適自己平臺的mysql connect庫&#xff0c;以備后用 下載開發庫 s…

NFS 掛載配置與優化最佳實踐指南

文章目錄 NFS 掛載配置與優化最佳實踐指南1. 服務器端配置1.1 安裝 NFS 服務1.2 配置共享目錄常用配置選項說明 1.3 啟動與檢查服務 2. 客戶端掛載2.1 安裝 NFS 客戶端2.2 掛載 NFS 共享2.3 自動掛載 3. 客戶端掛載選項4. 性能優化與故障排查4.1 性能優化建議4.2 常見問題排查 …

3D PDF如何制作?SOLIDWORKS MBD模板定制技巧

SOLIDWORKS制作3D PDF模版 SOLIDWORKS MBD能夠幫助工程師以清晰直觀的方式描述產品尺寸信息。在3D PDF文件中&#xff0c;用戶可以自由旋轉和移動視圖&#xff0c;方便查看模型的各個尺寸細節。 本文將帶您一步步學習如何使用SOLIDWORKS MBD制作專業的3D PDF模板&#xff0c;…

Unity-QFramework框架學習-MVC、Command、Event、Utility、System、BindableProperty

QFramework QFramework簡介 QFramework是一套漸進式、快速開發框架&#xff0c;適用于任何類型的游戲及應用項目&#xff0c;它包含一套開發架構和大量的工具集 QFramework的特性 簡潔性&#xff1a;QFramework 強調代碼的簡潔性和易用性&#xff0c;讓開發者能夠快速上手&a…

R3GAN訓練自己的數據集

簡介 簡介&#xff1a;這篇論文挑戰了"GANs難以訓練"的廣泛觀點&#xff0c;通過提出一個更穩定的損失函數和現代化的網絡架構&#xff0c;構建了一個簡潔而高效的GAN基線模型R3GAN。作者證明了通過合適的理論基礎和架構設計&#xff0c;GANs可以穩定訓練并達到優異…

【PhysUnits】15.1 引入P1后的加一特質(add1.rs)

一、源碼 代碼實現了類型系統中的"加一"操作&#xff08;Add1 trait&#xff09;&#xff0c;用于在編譯期進行數字的增量計算。 //! 加一操作特質實現 / Increment operation trait implementation //! //! 說明&#xff1a; //! 1. Z0、P1,、N1 1&#xff0…

記錄算法筆記(2025.5.29)最小棧

設計一個支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常數時間內檢索到最小元素的棧。 實現 MinStack 類: MinStack() 初始化堆棧對象。void push(int val) 將元素val推入堆棧。void pop() 刪除堆棧頂部的元素。int top() 獲取堆棧頂部的元素。int get…

Android高級開發第一篇 - JNI(初級入門篇)

文章目錄 Android高級開發JNI開發第一篇&#xff08;初級入門篇&#xff09;&#x1f9e0; 一、什么是 JNI&#xff1f;? 為什么要用 JNI&#xff1f; ?? 二、開發環境準備開發工具 &#x1f680; 三、創建一個支持 JNI 的 Android 項目第一步&#xff1a;創建新項目項目結構…

PyTorch Image Models (timm) 技術指南

timm PyTorch Image Models (timm) 技術指南功能概述 一、引言二、timm 庫概述三、安裝 timm 庫四、模型加載與推理示例4.1 通用推理流程4.2 具體模型示例4.2.1 ResNeXt50-32x4d4.2.2 EfficientNet-V2 Small 模型4.2.3 DeiT-3 large 模型4.2.4 RepViT-M2 模型4.2.5 ResNet-RS-1…

openEuler安裝MySql8(tar包模式)

操作系統版本&#xff1a; openEuler release 22.03 (LTS-SP4) MySql版本&#xff1a; 下載地址&#xff1a; https://dev.mysql.com/downloads/mysql/ 準備安裝&#xff1a; 關閉防火墻&#xff1a; 停止防火墻 #systemctl stop firewalld.service 關閉防火墻 #systemc…

從零開始的數據結構教程(六) 貪心算法

&#x1f36c; 標題一&#xff1a;貪心核心思想——發糖果時的最優分配策略 貪心算法 (Greedy Algorithm) 是一種簡單直觀的算法策略。它在每一步選擇中都采取在當前狀態下最好或最優&#xff08;即最有利&#xff09;的選擇&#xff0c;從而希望得到一個全局最優解。這就像你…

CPP中CAS std::chrono 信號量與Any類的手動實現

前言 CAS&#xff08;Compare and Swap&#xff09; 是一種用于多線程同步的原子指令。它通過比較和交換操作來確保數據的一致性和線程安全性。CAS操作涉及三個操作數&#xff1a;內存位置V、預期值E和新值U。當且僅當內存位置V的值與預期值E相等時&#xff0c;CAS才會將內存位…

Axure設計案例——科技感對比柱狀圖

想讓數據對比展示擺脫平淡無奇&#xff0c;瞬間抓住觀眾的眼球嗎&#xff1f;那就來看看這個Axure設計的科技感對比柱狀圖案例&#xff01;科技感設計風格運用獨特元素打破傳統對比柱狀圖的常規&#xff0c;營造出一種極具沖擊力的視覺氛圍。每一組柱狀體都仿佛是科技戰場上的士…

怒更一波免費聲音克隆和AI配音功能

寶子們&#xff01; 最近咱軟件TransDuck的免費聲音克隆和AI配音功能被大家用爆啦&#xff01;感謝各位自來水瘋狂安利&#xff01;&#xff01; DD這里也是收到好多用戶提的寶貴建議&#xff01;所以&#xff0c;連夜肝了波更新&#xff01; 這次重點更新使用克隆音色進行A…

UDP協議原理與Java編程實戰:無連接通信的奧秘

1.UDP協議核心原理 1. 無連接特性&#xff1a;快速通信的基石 UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;是TCP/IP協議族中無連接的輕量級傳輸層協議。與TCP的“三次握手”建立連接不同&#xff0c;UDP通信無需提前建立鏈路&#xff0c;發送…