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

相关文章

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常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.