2021CCPC女生专场(山东淄博)总结

2023-10-29 08:30

本文主要是介绍2021CCPC女生专场(山东淄博)总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2021CCPC女生专场(山东淄博)总结

补题链接
258支队伍报名,257支队伍交并且过至少1题,排名155及以上铜,78及以上银,26及以上金。
然而这场比赛,排名36-184的队伍都是5题,5题贯穿银铜铁,也就是看手速。
5题:Time<=270 银,270<Time<=539 铜,Time>539 铁
终榜
图1 终榜-5题也没截全

K 音乐游戏

它真的很签到,读入时统计 ‘-’ 的个数就好了

#include<bits/stdc++.h>
using namespace std;
int n;
char s;
int ans;
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){getchar();for(int j=1;j<=6;j++){scanf("%c",&s);if(s=='-')ans++;}}cout<<ans<<endl;return 0;
}

D 修建道路

由于题目中i-j相连的费用是从i到j连续区间的最大费用,那么考虑依次连成一串是最小费用的(跨过某个点连接会取区间最大,肯定不如取每两个点最大的费用小)
图2
由于是连续区间取最大,别想复杂了,跟最小生成树没关系。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int a[200010];
int ans;
signed main(){scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);if(i>=2){int x=max(a[i-1],a[i]);ans+=x;}}cout<<ans<<endl;return 0;
}

A 公交线路

根据字符个数和判断正反两种顺序是不是都可以,都可以就不能确定坐没坐反,否则要正序也正序对就对,要逆序也逆序也对,否则就不对。
比赛的时候两个方向都不对没考虑是否合法,反正直接扔到else里了。

#include<bits/stdc++.h>
using namespace std;
int n,x,y;
int k[15],m,p[15];
bool f1,f2;
int main(){scanf("%d %d %d",&n,&x,&y);for(int i=1;i<=n;i++)scanf("%d",&k[i]);scanf("%d",&m);f1=f2=true;for(int i=1;i<=m;i++){scanf("%d",&p[i]);int x1=x+i,x2=x-i;if(!f1);else if(x1<=n&&k[x1]==p[i]);else f1=false;if(!f2);else if(x2>=1&&k[x2]==p[i]);else f2=false;}if(y>x){if(f1&&f2)cout<<"Unsure"<<endl;else if(f1)cout<<"Right"<<endl;else cout<<"Wrong"<<endl;}else{if(f1&&f2)cout<<"Unsure"<<endl;else if(f2)cout<<"Right"<<endl;else cout<<"Wrong"<<endl;}return 0;
}

G 3G网络

求极限,比较早就推出来了,但是当时在写A,最后的结论 r->∞ 时,圆相当于几乎重合,则ans=1/n;

#include<bits/stdc++.h>
using namespace std;
double n;
double ans;
int main(){scanf("%lf",&n);for(int i=1;i<=n;i++){int x,y;scanf("%d %d",&x,&y);}ans=1.0/n;printf("%.15f\n",ans);return 0;
}

I驾驶卡丁车

它就是个模拟,题很简单,但我们卡了很久是在循环和读入上。记得最开始车的位置上没障碍,并且防止走出地图。
图3
方向对应成数字确定好后,2,4,6,8的防止“穿模”现象需要有个判断:
左上: (xi-1,yi) (xi,yi-1)
左下: (xi+1,yi) (xi,yi-1)
右下: (xi+1,yi) (xi,yi+1)
右上: (xi-1,yi) (xi,yi+1)

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[60][60];
int q;
int xi,yi;
int f=1,v;
int main(){scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){getchar();for(int j=1;j<=m;j++){char x;scanf("%c",&x);if(x=='.')a[i][j]=0;else if(x=='*'){a[i][j]=0;xi=i;yi=j;}else if(x=='#')a[i][j]=1;}}scanf("%d",&q);getchar();for(int i=1;i<=q;i++){char x;scanf("%c",&x);if(x=='L')f=f%8+1;else if(x=='R'){if(f==1)f=8;else f--;}else if(x=='U')v++;else if(x=='D')v=max(v-1,0);bool flag=false;int j;if(f==1){for(j=1;j<=v;j++){int x=xi-1,y=yi;if(x<1){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}xi=x;yi=y;}}else if(f==3){for(j=1;j<=v;j++){int x=xi,y=yi-1;if(y<1){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}xi=x;yi=y;}}else if(f==5){for(j=1;j<=v;j++){int x=xi+1,y=yi;if(x>n){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}xi=x;yi=y;}}else if(f==7){for(j=1;j<=v;j++){int x=xi,y=yi+1;if(y>m){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}xi=x;yi=y;}}else if(f==2){for(j=1;j<=v;j++){int x=xi-1,y=yi-1;if(x<1||y<1){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}else if(xi-1>=1&&yi-1>=1){if(a[xi-1][yi]==1&&a[xi][yi-1]==1){v=0;flag=true;break;}}xi=x;yi=y;}}else if(f==4){for(j=1;j<=v;j++){int x=xi+1,y=yi-1;if(x>n||y<1){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}else if(xi+1<=n&&yi-1>=1){if(a[xi+1][yi]==1&&a[xi][yi-1]==1){v=0;flag=true;break;}}xi=x;yi=y;}}else if(f==6){for(j=1;j<=v;j++){int x=xi+1,y=yi+1;if(x>n||y>m){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}else if(xi+1<=n&&yi+1<=m){if(a[xi+1][yi]==1&&a[xi][yi+1]==1){v=0;flag=true;break;}}xi=x;yi=y;}}else if(f==8){for(j=1;j<=v;j++){int x=xi-1,y=yi+1;if(x<1||y>m){v=0;flag=true;break;}if(a[x][y]==1){v=0;flag=true;break;}else if(xi-1>=1&&yi+1<=m){if(a[xi-1][yi]==1&&a[xi][yi+1]==1){v=0;flag=true;break;}}xi=x;yi=y;}}if(flag)printf("Crash! %d %d\n",xi,yi);else printf("%d %d\n",xi,yi);}return 0;
}

总结

A、G、I几乎是三人同时开的,一人看一道,我当时过4题之前我就开始盯I题的模拟,那时候I题大概也就两队过了,反正比赛最开始打的非常顺,除了中间断网两次跟监考老师沟通重新连接检查证件耽误了几分钟之外,每道题学妹敲完让我看一遍代码再交耽误了两分钟,其余真的没耽误时间。
总结下来开题顺序很正确,思路也没跑偏,最重要的是学妹手速虽然不快,但实现是真的准确,5题都一遍过没有罚时,能排到50多名挺开心的啦。
最后3小时10分钟轮着想B和C但都没写出来,罚坐3小时。

这篇关于2021CCPC女生专场(山东淄博)总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299475

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总