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

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