当前位置: 首页 > news >正文

2023 年第五届河南省 CCPC 大学生程序设计竞赛

题目地址

题目PDF地址

题解地址

Problem A. 小水獭游河南

∣ a ∣ ≤ ∣ Σ ∣ = 26 ,暴力枚举 a 判断 b 是否为是回文串即可,时间复杂度 O ( ∣ Σ ∣ ∣ s ∣ ) 。 |a| ≤ |Σ| = 26,暴力枚举 a 判断 b 是否为是回文串即可,时间复杂度 O(|Σ||s|)。 a∣Σ∣=26,暴力枚举a判断b是否为是回文串即可,时间复杂度O(∣Σ∣∣s)

#include<bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int T;cin>>T;while(T--){string s;cin>>s;if(s.size()==1) {cout<<"NaN\n";continue;} map<char,int> b;bool ok=false;for(int i=0;i<s.size();i++){if(b[s[i]]) break;string str=s.substr(i+1);string ss=str;reverse(str.begin(),str.end());if(str==ss){cout<<"HE\n";ok=true;break;} b[s[i]]++;}if(!ok) cout<<"NaN\n";}return 0;
}

Problem B. Art for Rest

#include<bits/stdc++.h>
using namespace std;const int N = 1000001, M = 21;
int f[N][M],g[N][M];
int lg[N],a[N];
int n;bool st[N];inline int max(int A,int B)
{return A>B?A:B;
}inline int min(int A,int B)
{return A<B?A:B;
}void init()
{lg[1]=0;for(int i=2;i<=1000000;i++) lg[i]=lg[i>>1]+1;for(int j=0;j<20;j++)for(int i=1;i+(1<<j)-1<=n;i++)if(!j) f[i][j]=g[i][j]=a[i];else{f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);g[i][j]=min(g[i][j-1],g[i+(1<<(j-1))][j-1]);}
}inline int query_max(int l,int r)
{int k=lg[r-l+1];return max(f[l][k],f[r-(1<<k)+1][k]);
}inline int query_min(int l,int r)
{int k=lg[r-l+1];return min(g[l][k],g[r-(1<<k)+1][k]);
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cin>>n;for(int i=1;i<=n;i++) cin>>a[i];if(is_sorted(a+1,a+n+1)){cout<<n;return 0;}init();int res=1;for(int k=2;k<=n-1;k++){if(st[k]){res++;continue;}bool ok=true;int l=1,r=k;while(r<n){int mx=query_max(l,r);int mn=query_min(l+k,min(r+k,n));if(mx>mn){ok=false;break;}l+=k,r+=k;}if(ok){for(int j=k;j<=n-1;j+=k)st[j]=true;res++;}}cout<<res;return 0;
}

Problem E. 矩阵游戏

#include<bits/stdc++.h>
using namespace std;const int N = 510, M = 1010;
char s[N][N];
int dp[3][N][M];int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int T;cin>>T;while(T--){int n,m,x;cin>>n>>m>>x;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>s[i][j];for(int k=0;k<2;k++)for(int i=0;i<=m;i++)for(int j=0;j<=x;j++)dp[k][i][j]=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<=x;k++)if(s[i][j]=='0') dp[i&1][j][k]=max(dp[i&1][j-1][k],dp[(i-1)&1][j][k]);else if(s[i][j]=='1') dp[i&1][j][k]=max(dp[i&1][j-1][k],dp[(i-1)&1][j][k])+1;else{if(k>=1) dp[i&1][j][k]=max(dp[i&1][j-1][k-1],dp[(i-1)&1][j][k-1])+1;else dp[i&1][j][k]=max(dp[i&1][j-1][k],dp[(i-1)&1][j][k]);}cout<<dp[n&1][m][x]<<"\n";}return 0;
}

Problem F. Art for Last

#include<bits/stdc++.h>
using namespace std;typedef long long LL;
const int N = 500010;
int a[N];int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int n,k;cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+n+1);multiset<int> b;for(int i=2;i<=k-1;i++)b.insert(a[i]-a[i-1]);LL res=1e18;for(int i=k;i<=n;i++){b.insert(a[i]-a[i-1]);res=min(res,(LL)*b.begin()*(a[i]-a[i-k+1]));b.erase(b.lower_bound(a[i-k+2]-a[i-k+1]));}cout<<res;return 0;
}

Problem G. Toxel 与字符画

按照题意模拟即可。例如,一种实现方式是,将题面提供的各种字符画在程序中存入一个二维字符矩阵中。随后计算表达式的值,并求出该表达式所需使用的各个字符。最后根据这些字符,找到相对应的字符画,拼接在答案后即可。

#include<bits/stdc++.h>
using namespace std;typedef long long LL;string a[]=
{".................................................................................",".................................................................................",".0000000.......1.2222222.3333333.4.....4.5555555.6666666.7777777.8888888.9999999.",".0.....0.......1.......2.......3.4.....4.5.......6.............7.8.....8.9.....9.",".0.....0.......1.......2.......3.4.....4.5.......6.............7.8.....8.9.....9.",".0.....0.......1.2222222.3333333.4444444.5555555.6666666.......7.8888888.9999999.",".0.....0.......1.2.............3.......4.......5.6.....6.......7.8.....8.......9.",".0.....0.......1.2.............3.......4.......5.6.....6.......7.8.....8.......9.",".0000000.......1.2222222.3333333.......4.5555555.6666666.......7.8888888.9999999.","................................................................................."
};
string b[]=
{".............................................................",".00000.....1.22222.33333.4...4.55555.66666.77777.88888.99999.",".0...0.....1.....2.....3.4...4.5.....6.........7.8...8.9...9.",".0...0.....1.22222.33333.44444.55555.66666.....7.88888.99999.",".0...0.....1.2.........3.....4.....5.6...6.....7.8...8.....9.",".00000.....1.22222.33333.....4.55555.66666.....7.88888.99999.",".............................................................",".............................................................",".............................................................","............................................................."
};
string c[]=
{".................................",".................................",".........IIIIIII.N.....N.FFFFFFF.","............I....NN....N.F.......",".=======....I....N.N...N.F.......","............I....N..N..N.FFFFFFF.",".=======....I....N...N.N.F.......","............I....N....NN.F.......",".........IIIIIII.N.....N.F.......","................................."
};int main()
{int T;scanf("%d",&T);while(T--){LL x,y;scanf("%lld^{%lld}",&x,&y);__int128 sum=1;bool ok=false;if(x!=1){for(LL i=1; i<=y; i++){sum*=x;if(sum>1000000000000000000ll){ok=true;break;}}}vector<string> res(10);string xx=to_string(x);string yy=to_string(y);for(int i=0; i<xx.size(); i++){int number=xx[i]-'0';for(int k=0; k<8; k++)for(int j=0; j<10; j++)res[j].push_back(a[j][number*8+k]);}for(int i=0; i<yy.size(); i++){int number=yy[i]-'0';for(int k=0; k<6; k++)for(int j=0; j<10; j++)res[j].push_back(b[j][number*6+k]);}for(int k=0; k<8; k++)for(int j=0; j<10; j++)res[j].push_back(c[j][k]);if(ok){for(int k=8; k<33; k++)for(int j=0; j<10; j++)res[j].push_back(c[j][k]);}else{string zz=to_string((LL)sum);for(int i=0; i<zz.size(); i++){int number=zz[i]-'0';for(int k=0; k<8; k++)for(int j=0; j<10; j++)res[j].push_back(a[j][number*8+k]);}for(int j=0; j<10; j++)res[j].push_back('.');}for(auto line:res)printf("%s\n",line.c_str());}return 0;
}

Problem H. Travel Begins

Problem K. 排列与质数

对于 n ≤ 11,可以暴力枚举排列求解;
对于 n > 11 的奇数,先将数按照 1, 3, 5, . . . , n − 2, n, n −3, n − 5, . . . , 8, 6, 4 排列;
对于 n > 11 的偶数,先将数按照 1, 3, 5, . . . , n − 3, n, n −2, n − 4, . . . , 8, 6, 4 排列;
即先将奇数升序排列,再将偶数降序排列。

可以发现,现在除了 2 和 n − 1 以外,所有数均已出现,且满足题目的限制。那么我们只需要将这两个数插进合适的位置即可。容易发现一定有解,因为可以将 2 插在 5 和 7 之间,将n − 1 插在 n − 4 和 n − 6 之间。
复杂度取决于判断质数的速度, O ( n √ n ) O(n√n) O(nn) 已经足以通过此题。

#include<bits/stdc++.h>
using namespace std;bool p(int n)
{if(n<=1) return false;for(int i=2;i<=n/i;i++)if(n%i==0)return false;return true;
}int main()
{int n;cin>>n;if(n<=4) cout<<"-1";else if(n<=11){vector<int> pos(n);for(int i=0;i<n;i++) pos[i]=i+1;do{bool ok=false;for(int i=1;i<n;i++)if(!p(abs(pos[i]-pos[i-1]))){ok=true;break;}if(!p(abs(pos[0]-pos[n-1]))) ok=true;if(!ok){for(auto c:pos)cout<<c<<" ";break;}}while(next_permutation(pos.begin(),pos.end()));}else{vector<int> res;if(n&1){for(int i=1;i<=n;i+=2)res.push_back(i);for(int i=n-3;i>=4;i-=2)res.push_back(i);for(int i=0;i<res.size();i++){cout<<res[i]<<" ";if(res[i]==5) cout<<"2 ";if(res[i]==n-6) cout<<n-1<<" ";}}else{for(int i=1;i<=n-3;i+=2)res.push_back(i);for(int i=n;i>=4;i-=2)res.push_back(i);for(int i=0;i<res.size();i++){cout<<res[i]<<" ";if(res[i]==5) cout<<"2 ";if(res[i]==n-4) cout<<n-1<<" ";}} }return 0;
}

相关文章:

2023 年第五届河南省 CCPC 大学生程序设计竞赛

题目地址 题目PDF地址 题解地址 Problem A. 小水獭游河南 ∣ a ∣ ≤ ∣ Σ ∣ 26 &#xff0c;暴力枚举 a 判断 b 是否为是回文串即可&#xff0c;时间复杂度 O ( ∣ Σ ∣ ∣ s ∣ ) 。 |a| ≤ |Σ| 26&#xff0c;暴力枚举 a 判断 b 是否为是回文串即可&#xff0c;时间…...

nginx liunx最新版本安装flask部署

一、nginx安装 1.进入Nginx官网的资源下载页&#xff1a;http://nginx.org/en/download.html 2.下载nginx-1.22.1.tar.gz&#xff0c; 3解压&#xff1a; tar -zxvf nginx-1.22.1.tar.gz解压完成后会在当前目录下得到一个新的nginx文件夹 4.终端进入nginx文件夹目录&#x…...

热图 -- pheatmap or ggplot2

文章目录 brief数据准备 pheatmap实例最朴素的方式数据缩放取消聚类更改每个小方格的大小聚类以及聚类方式和参数修改热图呈现的颜色修改legend ggplot2实例ggplot2实例变式添加 group bar做成dotplot pheatmap 多图组合问题 brief 这里主要记录了pheatmap 以及 ggplot2实现热…...

EIScopus检索 | 2023年智能交通与未来出行国际会议(CSTFM 2023)

会议简介 Brief Introduction 2023年智能交通与未来出行国际会议(CSTFM 2023) 会议时间&#xff1a;2023年7月28日-30日 召开地点&#xff1a;中国长沙 大会官网&#xff1a; CSTFM 2023-2023 International Conference on Smart Transportation and Future Mobility(CSTFM 202…...

如何系列 如何在Windows和Linux安装Nginx

文章目录 Windows一 下载Nginx二 启动Nginx三 验证 Linux一 安装依赖项二 下载Nginx源码包三 安装四 验证五 常用命令附录 Nginx是一款高性能的开源Web服务器和反向代理服务器&#xff0c;被广泛用于构建现代化的Web应用和提供静态内容。本篇博文将教你如何在Windows和Linux操作…...

“1+X+N”模式助力企业数字化转型

近期&#xff0c;中电金信顺利完成某股份制银行“基于战略解析与业务架构的全行科技规划项目”交付。针对客户的实际业务需求&#xff0c;中电金信采用“1XN”服务模式&#xff0c;服务客户全面的企业架构转型规划。项目组联合行方协同创新&#xff0c;首次将企架建模方法应用于…...

JavaEE(系列3) -- 多线程(线程的中断与线程等待)

新内容开始之前,我们总结一个知识点. Thread类中的start方法和run方法的区别? start(): 用start方法来启动线程&#xff0c;真正实现了多线程运行&#xff0c;这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程&#…...

想装一台自己的电脑,可以先了解下这些问题

时间&#xff1a;2023年5月11日19:09:56 ✨✨✨问题清单&#xff1a; ↪️计算机中CPU和内存是什么&#xff1f;分别有什么作用&#xff1f; ↪️为什么计算机中要有内存&#xff1f;CPU访问内存中的数据和访问硬盘中的数据有什么差别&#xff1f; ↪️CPU的基准速度表示什…...

Redis未授权漏洞复现

Redis简介 Redis是C语言开发的一个开源高性能&#xff08;key-value&#xff09;键值对类型的内存NoSQL数据库&#xff0c;可以用作数据库、缓存、信息中间件(性能非常优秀&#xff0c;支持持久化到硬盘且高可用)。由于其自身特点&#xff0c;可以广泛应用在数据集群&#xff…...

跳槽,如果没有更好的选择,可以去美团试试···

在美团干了半年&#xff0c;说一下自己的感受&#xff0c;美团是一家福利中等&#xff0c;工资待遇中上&#xff0c;高层管理团队强大&#xff0c;加班强度一般&#xff0c;技术不错&#xff0c;办公环境一般&#xff0c;工作氛围中上&#xff0c;部门差距之间工作体验差距巨大…...

Java10

Java10 &#xff08;一&#xff09;、配置文件&#xff08;二&#xff09;、多线程2.1 并发和并行2.2 多线程的实现方式2.3 常见成员方法2.3.1 线程的优先级2.3.2 守护线程&#xff08;备胎线程&#xff09;2.3.3 礼让线程和插入线程 2.4 线程生命周期2.5 线程安全问题2.6 锁2.…...

IMS call通话类型对比差异

IMS call呼入/呼出流程对比 呼出MO call大致流程 1)UE发送INVITE消息发起IMS call 2)UE接收网络返回的100 Trying 3)UE接收183 Session Progress 4)UE发送PRACK确认收到183 5)UE接收200 OK(PRACK) 6)UE发送UPDATE进行precondition流程 7)UE接收200 OK(UPDATE) 8…...

5.2 中心极限定理

学习目标&#xff1a; 要学习中心极限定理&#xff0c;我会采取以下几个步骤&#xff1a; 学习基本概念&#xff1a;了解什么是随机变量、样本、总体、概率密度函数等基本概念&#xff0c;为学习中心极限定理打下基础&#xff1b;学习正态分布&#xff1a;中心极限定理的核心…...

JVM 内存分哪几个区,如和判断一个对象是否存活

JVM 内存分哪几个区&#xff0c;每个区的作用是什么? java 虚拟机主要分为以下一个区:方法区&#xff1a; 1. 有时候也成为永久代&#xff0c;在该区内很少发生垃圾回收&#xff0c;但是并不代表不发生 GC&#xff0c;在这里进行的 GC 主要是对方法区里的常量池和对类型…...

在Spring Boot微服务使用Jedis操作Redis List列表

记录&#xff1a;408 场景&#xff1a;在Spring Boot微服务使用Jedis操作Redis List列表。 版本&#xff1a;JDK 1.8,Spring Boot 2.6.3,redis-6.2.5,jedis-3.7.1。 1.微服务中配置Redis信息 1.1在application.yml中Jedis配置信息 hub:example:redis:jedis:host: 192.168.…...

springboot + vue 部署 阿里云云服务器 ECS

安装所需文件 安装mysql5.7 下载MySQL的yum源配置 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装MySQL的yum源 yum -y install mysql57-community-release-el7-11.noarch.rpm使用yum方式安装MySQL5.7&#xff08;下载需要点时间&#xf…...

mysql 日期 计算 时间差 天数差

mysql计算两个日期的时间差 第一种&#xff1a;TIMESTAMPDIFF函数 三个参数。第一个参数是比较的类型&#xff1a;FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER、YEAR几种类型。第二、三参数是时间&#xff0c;后减前: SELECT TIMESTAMPDIFF(DAY,20…...

不用网闸、FTP的话 如何实现内外网数据交换?

网络隔离已然成为很多企业首选的数据保护方式&#xff0c;即使是内部人员之间&#xff0c;也是不能随意的发送敏感文件的。但是&#xff0c;文件的流转交互&#xff0c;又是不可避免的&#xff0c;网络隔离保障了企业网络安全&#xff0c;但在具体实践中仍需解决各隔离网间的数…...

探寻Spring MVC的奥秘:内部组件与工作流程详解

Spring MVC是一个基于MVC架构模式的Web框架&#xff0c;是Spring框架的一个组件。它提供了一套Web应用程序开发的全面解决方案&#xff0c;包括从请求到响应的处理流程、处理请求的控制器、视图解析器、国际化和验证器等。 在这篇文章中&#xff0c;我们将介绍Spring MVC框架的…...

eclipse svn ClassNotFoundException: javassist.ClassPool

eclipse 五月 10, 2023 9:26:49 上午 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filter struts2 java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl M e t h o d I n j e c t o r F…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...