【Atcoder训练记录】AtCoder Beginner Contest 377

news/2025/3/15 8:34:30/文章来源:https://www.cnblogs.com/longxingx/p/18504765

训练情况

赛后反思

D题差一点点吧?可能不去乐跑就能写出来了

A题

我们发现 ABC 是字典序单调递增的,字符串先排序再判断是否为 ABC 即可。

#include <bits/stdc++.h>
#define int long longusing namespace std;void solve(){string s; cin>>s;sort(s.begin(),s.end());if(s == "ABC") cout<<"Yes"<<endl;else cout<<"No"<<endl;	
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

B题

记录每一行每一列是否有棋子,有就不能放,最后每一格都枚举一遍,判断当前行当前列是否有棋子即可,没有棋子就答案加一。

#include <bits/stdc++.h>
#define int long longusing namespace std;void solve(){vector<string> s(8);for(int i = 0;i<8;i++) cin>>s[i];	vector<bool> r(8),c(8);int ans = 0;for(int i = 0;i<8;i++){for(int j = 0;j<8;j++){if(s[i][j] == '#') r[i] = 1,c[j] = 1;}}for(int i = 0;i<8;i++){for(int j = 0;j<8;j++){if(!r[i]&&!c[j]) ans++;}}cout<<ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

C题

上一题的加强版?这次可以往八个方向,考虑到可能会出现重复被占的点,所以我们用 set 进行去重即可,最后判断棋子是否在棋盘上,求被占的格子,最后再用全部的减一下即可。

#include <bits/stdc++.h>
#define int long longusing namespace std;void solve(){int n,m; cin>>n>>m;set<pair<int,int>> s;for(int i = 1;i<=m;i++){int x,y; cin>>x>>y;s.insert({x,y});s.insert({x+2,y+1});s.insert({x+1,y+2}); s.insert({x-1,y+2});s.insert({x-2,y+1});s.insert({x-2,y-1});s.insert({x-1,y-2});s.insert({x+1,y-2});s.insert({x+2,y-1});}int ans = 0;for(auto i:s){if(i.first>=1&&i.first<=n&&i.second>=1&&i.second<=n) ans++;}cout<<n*n-ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

D题

考虑 \(O(m)\) 的同时,维护一个左边界,就是当前位置能最多往前多少是刚好不完全覆盖的,最后这个左边界需要取个 max,因为如果前面的左边界更右,那后面的左边界也要和前面一样。

#include <bits/stdc++.h>
#define int long longusing namespace std;void solve(){int n,m; cin>>n>>m;vector<int> d(m + 1,1);for(int i = 1;i<=n;i++){int l,r; cin>>l>>r;d[r] = max(d[r],l+1);}	for(int i = 1;i<=m;i++){d[i] = max(d[i],d[i-1]);}int ans = 0;for(int i = 1;i<=m;i++){ans += i - d[i] + 1;}cout<<ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

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

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

相关文章

PbootCMS调用搜索页和标签页的关键词及数量

问题描述:PbootCMS调用搜索页和标签页的关键词及数量。 解决方法:搜索页 (search.html):获取关键词标签:{$get.keyword} 获取搜索结果数量:{page:rows}标签页 (tags.html):获取标签关键词:{$get.tag} 获取标签数量:{page:rows}扫码添加技术【解决问题】专注中小企业网站…

答题判题程序分析1

一、前言 对于这几周开始的Java答题判题程序的编写对我压力有点大,因为我对编程感觉总是慢半拍。虽然痛苦但也学习到了一些知识,过程艰辛但也有些许收获,让我对Java编程了解到了更多 这三次题目集的难度是逐渐向上攀升的,第一次题目集作业除了最后一题大作业都是入门级Java…

java-BLOG-1

1.前言 第一二个题目集除了最后一个题目以及第三个题目集的第一个题目都比较简单,只要按照题目要求,创建相应的类,题目比较简单一般只需要创建一个类和相应的一些属性、方法,按照输入输出的要求进行创建就行。前两个题目集只需要做对相应的输出就能做对,而第三个题目集重点…

使用opencvjs提取图片中的红色印章

首先看下效果:首先对于纯红色的印章提取,也就是通过提取红色 的像素然后得到印章的结果,然后通过在红色的图像中寻找圆圈检测来进行圈定印章的位置 源码位置:https://github.com/xxss0903/extractstamp第一步是提取红色内容function extractStampWithColorToOpencvMat(img,…

ELE-Electronics

Electronics是一本关于电子科学及其应用的国际同行评审开放获取期刊,同时也是一本跨学科多主题征稿期刊。@目录一、征稿简介二、重要信息三、服务简述四、投稿须知 一、征稿简介二、重要信息期刊官网:https://ais.cn/u/3eEJNv三、服务简述 CT/MRI图像中基于学习的韧带分割; 计…

题目集1~3总结与分析

一.前言 知识点考查和难度: 题目集一第一题 设计风扇Fan类考查了Java类的组成部分和具体的组成内容。 题目集一第二题 巩固了类和对象的使用,和其中的构造方法。 题目集一第三题 在第二题考查基础上添加了具体的方法。 题目集一第四题 进一步学习类的使用,做了简单的关联类…

idea 将文件夹改成source

首先可以 使用idea 右键选择 要更改的文件 make Directory as 选择 sources Root如果文件 不能选择, 可以 IDEA 直接点击 FILE 菜单 ,然后选择 Project Structure 然后 在 Modules 中,可以将文件夹 更改类型。

2024 CSP-J

2024 CSP-J P11227 扑克牌(模拟,STL) 题意 给定 \(n\) 张扑克牌,问若要凑齐所有花色点数,还需要几种牌。 数据规模与约定 对于 \(100\%\) 的数据,\(1 \le n\le 52\)。 题解 发现每种扑克牌是一个花色和点数的二元组。开一个二维数组当桶即可。 但是考虑到实现起来的方便性…

04 二进制

二进制位数,每个位都是右侧位数的两倍; 八位机,一次性处理八位数的二进制数10101010,八位数表示从0到255,比如八位绘画板一共255种颜色可以使用,一位数0、1为bit, 八位数构成一个基本数串作为为一个字节,基本数串byte,有些用字节作为储存单位;内存已经到GB,TB上万亿字…

Dynamics 365 查找类型的字段,选择界面要去掉新增按钮,但是不能去掉新增权限

Dynamics 365 查找类型的字段,选择界面要去掉新增按钮,但是不能去掉新增权限办法: 1、将对应的窗体添加到解决方案中,导出解决方案,解决方案里面可以隐藏。然后把字段的我记得是某个属性改为false就可以隐藏了 2、<IsInlineNewEnabled>false</IsInlineNewEnabled…

南昌航空大学-软件学院-22207107-胡优乐-JAVA第一次Blog作业

南昌航空大学-软件学院-22207107-胡优乐-JAVA第一次Blog作业 前言距离开学第一次接触java已然过去了将近两个月时间,在这段时间里我们总共进行了三次大作业联系,基于这三次大作业的体量及设计的知识点,难度分布,我做了以下的总结:1.第一次大作业总共有五题,分别是:1.设计…