Toyota Programming Contest 2023#4(AtCoder Beginner Contest 311)(A-G)

Contest Duration: 2023-07-22(Sat) 20:00 - 2023-07-22(Sat) 21:40 (local time) (100 minutes)

头文件和宏

#include<iostream>
#include<string>
#include<vector>
using namespace std;
#define int long long
#define fer(i,a,b) for(int i=a;i<b;i++)
#define cf int T;cin>>T;while(T--)
#define pb push_back
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

以下只附主代码

A First ABC

从头开始,找出ABC三个字母都至少出现一次的最小长度

signed main(){IOS;int n;cin>>n;string s;cin>>s;bool fa=0,fb=0,fc=0;int cnt=0;fer(i,0,n){if(s[i]=='A')fa=1;else if(s[i]=='B')fb=1;else if(s[i]=='C')fc=1;if(fa&&fb&&fc){cnt=i;break;}}cout<<cnt+1;return 0;
}

B Vacation Together

找出n人均有空闲的最大天数

signed main(){IOS;int n,d;cin>>n>>d;bool f[d]={0};string s;fer(i,0,n){cin>>s;fer(j,0,d){if(s[j]=='x')f[j]=1;}}int cnt=0,mx=0;fer(i,0,d){if(f[i]==0){cnt++;mx=max(mx,cnt);}else cnt=0;}cout<<mx;return 0;
}

C Find it!

有向图,N个结点,N条边,一个结点只会指向另外一个结点,产生一条边。题目要求输出任意环。
这种方式形成的有向图一定有环,最小的环是M=2,最大的环是M=N,所以只要顺着找N+1次,必然会出现环,res里最后一个结点必然在环里。即使重复在一个环里循环也无妨,只需从后向前截取这个环作为结果。

const int N=2e5+5,mod=1e9+7;
int a[N];
signed main(){IOS;int n;cin>>n;fer(i,1,n+1)cin>>a[i];vector<int>res;res.clear();int j=1;res.pb(j);fer(i,0,n+1){res.pb(a[j]);j=a[j];}int k;for(int i=n-1;i>=0;i--){if(res[i]==res[n]){k=i;break;}}cout<<n-k<<endl;for(int i=k;i<n;i++){cout<<res[i]<<" ";}return 0;
}

D Grid Ice Floor

滑冰,如果玩过类似的4399小游戏会感到熟悉。
在冰面上只能朝指定方向滑行,直到遇到障碍物停下,中途不能改变方向。问最多能滑过多少块冰。问题在于:如何判定停止递归?不能只是单纯遇到走过的点就停止。比如下图中的红线是可以走的,但如果“遇到走过的点就停止”,那么就不会递归这条红线的情况,这是错误的。
请添加图片描述
因此我设置了两个布尔数组,f代表走过的点,用来计数;f2代表该点是否作为过停留的结点向四个方向递归,如果f2==1,那么我们不必重复去递归

int a[202][202];bool f[202][202],f2[202][202];
int cnt=0;
void solve(int x,int y,int op){//1上 2下 3左 4右 if(f[x][y]==0){cnt++;f[x][y]=1;}if(op==0&&f2[x][y]==0){f2[x][y]=1;if(a[x-1][y])solve(x-1,y,1);if(a[x+1][y])solve(x+1,y,2);if(a[x][y-1])solve(x,y-1,3);if(a[x][y+1])solve(x,y+1,4);return;}else if(op==1){if(a[x-1][y])solve(x-1,y,1);else solve(x,y,0);}else if(op==2){if(a[x+1][y])solve(x+1,y,2);else solve(x,y,0);}else if(op==3){if(a[x][y-1])solve(x,y-1,3);else solve(x,y,0);}else if(op==4){if(a[x][y+1])solve(x,y+1,4);else solve(x,y,0);}
}
signed main(){IOS;int n,m;cin>>n>>m;string s;fer(i,0,n){cin>>s;fer(j,0,m){if(s[j]=='.')a[i+1][j+1]=1;}}solve(2,2,0);cout<<cnt<<endl;
//	fer(i,1,n+1){
//		fer(j,1,m+1)cout<<f[i][j]<<" ";
//		cout<<endl;
//	}return 0;
}

下面是非递归的版本,用的是队列,这种方式开销较小

vector<int> dx = {1, 0, -1, 0};
vector<int> dy = {0, 1, 0, -1};
int main(){int N, M;cin >> N >> M;vector<string> S(N);for (int i = 0; i < N; i++){cin >> S[i];}vector<vector<bool>> used(N, vector<bool>(M, false));used[1][1] = true;vector<vector<bool>> used2(N, vector<bool>(M, false));used2[1][1] = true;queue<pair<int, int>> Q;Q.push(make_pair(1, 1));while (!Q.empty()){int x = Q.front().first;int y = Q.front().second;Q.pop();for (int i = 0; i < 4; i++){int x2 = x, y2 = y;while (S[x2 + dx[i]][y2 + dy[i]] == '.'){x2 += dx[i];y2 += dy[i];used2[x2][y2] = true;}if (!used[x2][y2]){used[x2][y2] = true;Q.push(make_pair(x2, y2));}}}int ans = 0;for (int i = 0; i < N; i++){for (int j = 0; j < M; j++){if (used2[i][j]){ans++;}}}cout << ans << endl;for (int i = 0; i < N; i++){for (int j = 0; j < M; j++){cout<<used2[i][j]<<" ";}cout<<endl;}return 0;
}

参考:Submission #43834581

E Defect-free Squares

问无洞正方形有多少个。动态规划
dp初始化为最大值3000+

  • 如果该点是洞,该点dp[i][j]=0;
  • 如果不是:
    • 如果是最底下一行和最右面一列,dp[i][i]=1
    • 如果不是:dp[i][i]=min(dp ,dp[i+1][j]+1,dp[i][j+1]+1,dp[i+1][j+1]+1),也就是取(自身、右面+1、下面+1、右下+1)中的最小值。

如果右面或者下面是洞,都影响自身构建无洞正方形

bool f[3001][3001];
int dp[3001][3001];
signed main(){IOS;int h,w,n;cin>>h>>w>>n;int a,b;fer(i,1,n+1){cin>>a>>b;f[a][b]=1;}fer(i,1,h+1){fer(j,1,w+1)dp[i][j]=3005;}int sum=0;for(int i=h;i>=1;i--){for(int j=w;j>=1;j--){if(i==h||j==w)dp[i][j]=1;if(i<h)dp[i][j]=min(dp[i][j],dp[i+1][j]+1);if(j<w)dp[i][j]=min(dp[i][j],dp[i][j+1]+1);if(i<h&&j<w)dp[i][j]=min(dp[i][j],dp[i+1][j+1]+1);if(f[i][j])dp[i][j]=0;sum+=dp[i][j];	}} cout<<sum<<endl;return 0;
}

参考:Submission #43837221

F Yet Another Grid Task

给一个网格,有黑块有白块。小明要把白块涂成黑块使得网格变beautiful,beautiful的定义如下:一个黑块的下面一块和右下角的一块也是黑块。问有多少种涂法。
动态规划,dp初始化为1,按列dp,对每列找到黑块出现的最早一次位置,在这位置之后的块的可能次数均为0(因为黑块之下必须是黑块,已经被定好了),在这位置之前的块,可能次数是自身的可能次数+下方块的可能次数,然后dp整体下移

const int N=2e5+1,mod=998244353;
signed main(){IOS;int n,m;cin>>n>>m;vector<string>s(n);fer(i,0,n)cin>>s[i];vector<int> dp(n+1,1);fer(i,0,m){int x=0;while(x<n&&s[x][i]=='.')x++;for(int j=x+1;j<=n;j++){dp[j]=0;}for(int j=n-1;j>=0;j--){dp[j]+=dp[j+1];dp[j]%=mod;}for(int j=n;j>0;j--){dp[j]=dp[j-1];dp[j]%=mod;}} cout<<dp[0];return 0;
}

参考:Submission #43851107

G One More Grid Task

在网格内拉一个矩形,求(矩形内和x矩形内最小值)的最大值
s存放该列数字的和,t存放该列数字的最小值,待想

signed main(){IOS;int n,m;cin>>n>>m;vector<vector<int> > a(n,vector<int>(m));fer(i,0,n){fer(j,0,m)cin>>a[i][j];}int ans=0;fer(u,0,n){vector<int>s(m),t(m,1e9);fer(d,u,n){fer(i,0,m){s[i]+=a[d][i];t[i]=min(a[d][i],t[i]);}vector<int> l(m,-1),r(m,m),stk;fer(i,0,m){while(!stk.empty()&&t[i]<t[stk.back()]){r[stk.back()]=i;stk.pop_back();}if(!stk.empty())l[i]=stk.back();stk.pb(i);}vector<int> pre(m+1);fer(i,0,m)pre[i+1]=pre[i]+s[i];fer(i,0,m)ans=max(ans,t[i]*(pre[r[i]]-pre[l[i]+1]));}}cout<<ans;return 0;
}

参考:Submission #43853592

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【运维】DevOps全流程笔记(未完成)

运维笔记 DevOps基本流程Code阶段工具&#xff08;gitlab安装&#xff09;Build阶段工具&#xff08;Maven安装&#xff09;Integrate阶段工具JenkinsJenkins介绍Jenkins安装Jenkins入门配置 CI/CD操作集成Sonar Qube集成HarborJenkins流水线Kubernetes编排工具 DevOps全流程笔…

怎么把PDF转为word?1分钟解决难题

PDF文件在我们的电脑上应用非常广泛&#xff0c;由于其较高的安全性和兼容性&#xff0c;得到了广泛的认可。然而&#xff0c;对于一些人来说&#xff0c;PDF文件不能直接进行编辑和修改可能是一个问题。因此&#xff0c;通常我们需要将其转换为Word格式&#xff0c;以便在Word…

[php-cos]ThinkPHP项目集成腾讯云储存对象COS

Cos技术文档 1、安装phpSdk 通过composer的方式安装。 1.1 在composer.json中添加 qcloud/cos-sdk-v5: >2.0 "require": {"php": ">7.2.5","topthink/framework": "^6.1.0","topthink/think-orm": "…

数据库监控工具-PIGOSS BSM

PIGOSS BSM 运维监控系统的重要功能之一是数据库监控&#xff0c;它能够帮助数据库管理员(DBA)和系统管理员监控包含Oracle、SQL Server、MySQL、DB2、PostgreSql、MongoDB、达梦、南大通用、人大金仓、神州通用等多种类异构型的数据库环境。PIGOSS BSM通过执行数据库查询来采集…

DSSAT模型教程

详情点击链接&#xff1a;R语言与作物模型&#xff08;DSSAT模型&#xff09;教程 前言 随着基于过程的作物生长模型&#xff08;Process-based Crop Growth Simulation Model&#xff09;的发展&#xff0c;R语言在作物生长模型和数据分析、挖掘和可视化中发挥着越来越重要的…

详细解析python视频选择--【思维导图知识范围】

C ,JAVA JAVAWEB ,微信小程序等 都有视频选择的分析。 语言视频选择收录专辑链接C张雪峰推荐选择了计算机专业之后-在大学期间卷起来-【大学生活篇】JAVA黑马B站视频JAVA部分的知识范围、学习步骤详解JAVAWEB黑马B站视频JAVAWEB部分的知识范围、学习步骤详解SpringBootSpringB…

Cesium:加载geojson面贴地和显示边界问题

1.背景 cesium加载geojson面数据后&#xff0c;有部分数据在地形下面显示不全&#xff0c; 加了clampToGround: true&#xff0c;设置贴地后&#xff0c;边界又不见了 this.viewer.dataSources.add(GeoJsonDataSource.load(http://xx/xzbj.geojson, {stroke: Color.BLACK.with…

PDF添加水印以及防止被删除、防止编辑与打印

方法记录如下&#xff1a; 1、添加水印&#xff1b; 2、打印输出成一个新的pdf&#xff1b; 3、将pdf页面输出成一张张的图片&#xff1a;&#xff08;福昕pdf操作步骤如下&#xff09; 4、将图片组装成一个新的pdf&#xff1a;&#xff08;福昕pdf操作步骤如下&#xff09;…

flask实现一个登录界面

flask实现一个登录界面 基础的Flask项目结构 forms.py&#xff1a;定义登录表单和表单字段的文件。templates/login.html&#xff1a;用于渲染登录表单的 HTML 模板文件。routes.py&#xff1a;定义应用的路由和视图函数的文件。__init__.py&#xff1a;创建并初始化 Flask 应…

Java Spring和Spring集成Mybatis

0目录 1.Spring 2.Spring集成Mybatis 1.Spring 特性 IOC&#xff1a;控制反转 AOP&#xff1a;面向切面 Spring组成部分 在SMM中起到的作用&#xff08;粘合剂&#xff09; Spring理念 OOP核心思想【万物皆对象】 Spring核心思想【万物皆Bean组件】 Spring优势 低侵入式 …

基于新浪微博海量用户行为数据、博文数据数据分析:包括综合指数、移动指数、PC指数三个指数

基于新浪微博海量用户行为数据、博文数据数据分析&#xff1a;包括综合指数、移动指数、PC指数三个指数 项目介绍 微指数是基于海量用户行为数据、博文数据&#xff0c;采用科学计算方法统计得出的反映不同事件领域发展状况的指数产品。微指数对于收录的关键词&#xff0c;在指…

Java运算符

大体上&#xff0c;与C语言差不多&#xff0c;不同的地方&#xff0c;我用红色字体标注了 算术运算符 1. 基本四则运算符&#xff1a;加减乘除模 ( - * / %) int a 10 ; int b 20 ; System . out . println ( a b ); // 30 System . out . println ( a - b…

数据结构--线性表2-1

目录 一、线性结构的定义 二、线性表的表示 三、顺序表的实现&#xff08;或操作&#xff09; 1、修改&#xff1a; 2、插入&#xff1a; 四、顺序表的运算效率分析&#xff1a;时间效率分析&#xff1a; 一、线性结构的定义 若结构时非空有限集&#xff0c;则有且仅有一个…

8 个线程池最佳实践和坑!使用不当直接生产事故!!

这篇文章我会简单总结一下我了解的使用线程池的时候应该注意的坑以及一些优秀的实践。拿来即用&#xff0c;美滋滋&#xff01; 1、正确声明线程池 线程池必须手动通过 ThreadPoolExecutor 的构造函数来声明&#xff0c;避免使用Executors 类创建线程池&#xff0c;会有 OOM …

基于深度学习淡水鱼体重智能识别模型研究

工作原理为&#xff1a;首先对大众淡水鱼图片进行数据清洗并做标签分类&#xff0c;之后基于残差网络ResNet50模型进行有监督的分类识别训练&#xff0c;获取识别模型。其次通过搭建回归模型设计出体重模型&#xff0c;对每一类淡水鱼分别拟合出对应的回归方程&#xff0c;将获…

Android OpenGL ES Camera2 实现实时抠图效果

前面文章人像抠图 + OpenGL ES 还能这样玩?没想到吧,我们介绍了利用人像抠图算法生成的 mask 图,然后结合 OpenGL 可以产生一些有趣的效果。 抠图技术应用很广泛,比如很多手机的相机自带“人像留色”滤镜:人体区域保留彩色,人体区域之外灰度化。所以人像留色的关键技术在…

【vue】Vue中解读关于this.$emit()的用法:

文章目录 一、Vue.sync修饰符与this.$emit(‘update:xxx‘, newXXX)二、this.$emit()传多个参数 一、Vue.sync修饰符与this.$emit(‘update:xxx‘, newXXX) 二、this.$emit()传多个参数

Qt Core学习日记——第八天QMetaObject(下)

QMetaObject::normalizedType 将名称规范化。 例如&#xff1a; QByteArray normType QMetaObject::normalizedType(" int const *"); // normType is now "const int*" QMetaObject::connect(const QObject *sender, int signal_index, const QObject…

Jmeter性能测试配置

Jmeter检查点/断言 在上一章节中&#xff0c;我们通过调试脚本&#xff0c;通过人工验证脚本可以完成业务功能&#xff0c; 但在性能测试中&#xff0c;我们希望能通过自动验证脚本是否完成业务功能&#xff0c;在Jmeter 中我们可以通过检查点&#xff0c;也就是断言来实现自动…

VR全景在酒店的发展状况如何?酒店该如何做营销?

现阶段&#xff0c;VR全景技术已经被酒店、民宿、旅游景区、房产楼盘、校园等行业所应用&#xff0c;每天都有不少人通过VR全景展示来了解酒店的设施环境&#xff0c;而酒店也可以借此机会&#xff0c;详细展示自身优势&#xff0c;更大范围吸引顾客。 VR酒店拥有真实、立体的全…