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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;发送…