AtCoder Beginner Contest 398(ABCDEF)
A - Doors in the Center
翻译:
找到一个满足下面情况长为N的字符串:
- 每个字符是 - 或 = 。
- 是一个回文。
- 包含一个或两个 = 。如果包含两个相邻的 = 。
如此字符串为独一无二的。
思路:
从两端使用 = 开始构造回文。在特判下中间部分,字符串s长为2,放两个 = ;长为1 放一个 = 。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;void solve(){int n;cin>>n;vector<char> s(n);for (int l=0,r=n-1;l<=r;l++,r--){s[l] = '-';s[r] = '-';}if (n%2==0){s[n/2] = '=';s[n/2-1] = '=';}else{s[n/2] = '=';}for (int i=0;i<n;i++){cout<<s[i];}cout<<endl;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();return 0;
}
B - Full House 3
翻译:
我们有七张牌。第 i 张牌 (i=1,...,7)上面写着一个整数
。
请判断是否有可能从这七张牌中选出五张,使所选的牌组成座无虚席。
当且仅当满足以下条件时,由五张牌组成的一组牌称为座无虚席:
- 对于不同的整数 x 和 y,有三张牌带有 x,两张牌带有 y
思路:
方法一:
记录出现两次的数的个数cnt2,和出现两个以上的数的个数cnt3。
当cnt3>=2或(cnt3>=1且cnt2>=1)时,可行,反之不可行。
方法二:
记录每个数的出现次数,并放入数组a中,将a降序排序,当下标为1的值大于等于2时可行,否则不可行。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;void solve(){vector<int> a(14,0);int cnt2 = 0,cnt3=0;for (int num,i=1;i<=7;i++){cin>>num;a[num]++;}for (int i=1;i<=13;i++){if (a[i]==2){cnt2++;}else if (a[i]>=3){cnt3++;}}if (cnt3>=2 || (cnt3>=1 && cnt2>0)){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();return 0;
}
C - Uniqueness
翻译:
这有N个人,下标1到N。第 i 个人有一个整数
。
在这群人中对于满足“ 其余N-1个人的数没有与自身相同的 ”的人,找到最大的数并输出他的下标。
如果没有人满足条件,则报告这一事实。
思路:
先对每个数计数,在遍历N个人,找大最大的值并记录下标。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;void solve(){int maxx = 0,ind = -1;int n;map<int,int> mp;cin>>n;vector<int> a(n+1);for (int i=1;i<=n;i++){cin>>a[i];mp[a[i]]++;}for (int i=1;i<=n;i++){if (mp[a[i]]==1 && maxx<a[i]){ind = i;maxx = a[i];}}cout<<ind<<endl;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();return 0;
}
D - Bonfire
翻译:
有一个无限大的二维网格,篝火位于坐标 (0,0)。
在时间 t=0 时,只有单元格(0,0)存在烟雾。给你一个长度为 N 的字符串 S 由 N、W、S、E 组成。在 t=1,2,...,N,以下情况依次发生:
- 风吹过,当时所有的烟都会如下移动:
- 如果 的第 t 个字符 S 的第 t 个字符为 N,则单元格 (r,c) 单元中的烟移动到 (r-1,c) 单元。
- 如果是 W,则单元格 (r,c) 格中的烟移至 (r,c-1) 单元。
- 如果是 S,则单元格 (r,c) 格中的烟雾移至 (r+1,c) 单元。
- 如果是 E,则单元格 (r,c) 格中的烟雾移至 (r,c+1)单元。
- 如果单元格 (0,0) 中没有烟雾 ,则在单元 (0,0)会有新烟产生。
高桥站在单元格 (R,C)单元。
对于每个整数 1≤t≤N,确定在 (R,C) 在时间 t+0.5,并按要求格式打印答案。
思路:
由于(0,0)处的烟一直在产生,因此每一步都可以时新的开始。也就是说当最初的烟到s[ i ]时,之后的新烟是由s[ j : i ] = s[0 : i ]-s[0 : j]产生的。遍历所有步数 i ,判断当前是否存在s[ j : i ]为人所在的位置,并记录当前的前缀值 [0 : i ]。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;void solve(){unordered_map<char,array<int,2>> direct;direct['N'] = {-1,0};direct['W'] = {0,-1};direct['S'] = {1,0};direct['E'] = {0,1};int n,r,c,x_min = 0,x_max = 0,y_min = 0,y_max = 0;cin>>n>>r>>c;char d;set<array<int,2>> vis;vis.insert({0,0});int now_x = 0,now_y = 0;for (int i=1;i<=n;i++){cin>>d;now_x+=direct[d][0];now_y+=direct[d][1];if (vis.find({now_x-r,now_y-c})!=vis.end()){cout<<1;}else{cout<<0;}vis.insert({now_x,now_y});}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();return 0;
}
E - Tree Game
翻译:
这个问题是一个交互式问题(在这个问题中,你的程序和评判系统通过输入和输出进行交流)。
给你一棵树 G,树上有 N 个顶点,编号从 1 到 N。 第 i 条边连接顶点
i 和
。.
你们将用这棵树与高桥玩一个游戏。首先,你们决定谁是第一名,谁是第二名。然后,从第一位玩家开始,轮流执行以下操作:
选择一对整数 (i,j) 1≤i<j≤N 且满足以下两个条件的一对整数,然后添加一条边连接顶点 和 j 的 G.
- G 中没有连接顶点 和 j.
- 添加一条连接顶点 和 j 的边不会产生奇数循环。
无法执行此操作的棋手输棋,另一方获胜。与高桥选手下这盘棋并获胜。
思路:
按题目是要连偶数环,画图可知会形成偶数环的两个点不管何时连都为偶数环。那么通过暴力深搜,找到所有符合条件的对,在按对的数量一次讲出即可。
C++的endl会刷新输入输出流。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;
int n,x,y;
vector<vector<int>> tree(110);
//vector<int> depth(110,0);
set<array<int,2>> ans;
void dfs(int now,int pos,int fa,int step){
// cout<<now<<" "<<pos<<" "<<fa<<" "<<step<<endl;// 为偶数if (step%2==0 && step>2){x = min(now,pos);y = max(now,pos);ans.insert({x,y});}for (int &i:tree[pos]){if (i!=fa){dfs(now,i,pos,step+1);}}
}
void solve(){cin>>n;for (int i=1,u,v;i<n;i++){cin>>u>>v;tree[u].push_back(v);tree[v].push_back(u);}for (int i=1;i<=n;i++){dfs(i,i,i,1);}if (ans.size()&1){cout<<"First"<<endl;do{auto i = *ans.begin();ans.erase({i[0],i[1]});cout<<i[0]<<" "<<i[1]<<endl;cin>>x>>y;ans.erase({x,y});}while (x!=-1 && y!=-1);}else{x = 0,y = 0;cout<<"Second"<<endl;while (x!=-1 && y!=-1){cin>>x>>y;ans.erase({x,y});auto i = *ans.begin();ans.erase({i[0],i[1]});cout<<i[0]<<" "<<i[1]<<endl;}}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();return 0;
}
F - ABCBA
翻译:
找到一个以S为前缀的最小回文。
思路:
找到S中右端点在S右端点的最大回文子串。将其右边的多余部分反转复制到S右端即可。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;void solve(){string s;cin>>s;int n = s.size();int len = 1;int f = 1;for (int i=0;i<=n-1;i++){if (s[i]==s[n-1]){f = 1;for (int l=i,r=n-1;l<=r;l++,r--){if (s[l]!=s[r]){f = 0;break;}}if (f){len=n-i;break;}}}if (len==n){cout<<s<<endl;}else{cout<<s;for (int i=n-len-1;i>=0;i--){cout<<s[i];}}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();return 0;
}
有建议可以评论,我会积极改进qwq。
相关文章:
AtCoder Beginner Contest 398(ABCDEF)
A - Doors in the Center 翻译: 找到一个满足下面情况长为N的字符串: 每个字符是 - 或 。是一个回文。包含一个或两个 。如果包含两个相邻的 。 如此字符串为独一无二的。 思路: 从两端使用 开始构造回文。在特判下中间部分,…...
单表达式倒计时工具:datetime的极度优雅(智普清言)
一个简单表达式,也可以优雅自成工具。 笔记模板由python脚本于2025-03-22 20:25:49创建,本篇笔记适合任意喜欢学习的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Pyth…...
【2025 深圳大学-腾讯云程序设计竞赛(热身赛)】题解
比赛链接 A. Cloud Studio的共享连接 题目大意 && Solution 给定 T T T 组长度均为 12 12 12 的字符串 s s s。 对每个 s s s,将其按从左到右的顺序两两分组形成 6 6 6 个 A S C I I \rm{ASCII} ASCII 码,对这 6 6 6 个 A S C I I \…...
C语言基础与进阶学习指南(附运行效果图及术语解析)
C语言基础与进阶学习指南(附运行效果图及术语解析) 目录 C语言标准与编译流程CPU与内存基础C语言基础语法数据类型详解变量与内存管理运算符与表达式输入输出函数函数与内存管理指针与内存操作结构体与高级应用 1. C语言标准与编译流程 1.1 C语言标准演…...
2025年3月GESP八级真题解析
第一题——上学 题目描述 C 城可以视为由 n n n 个结点与 m m m 条边组成的无向图。这些结点依次以 1 , 2 , … , n 1,2,…,n 1,2,…,n 标号,边依次以 1 , 2 , … , m 1,2,…,m 1,2,…,m 标号。第 i i i 条边( 1 ≤ i ≤ m 1≤i≤m 1≤i≤m&#…...
C++继承机制:从基础到避坑详细解说
目录 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 总结: 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 编辑 默认构造与传参构造 拷贝构造&am…...
NVMe(Non-Volatile Memory Express)详解
一、NVMe的定义与核心特性 NVMe(非易失性内存主机控制器接口规范)是一种 基于PCIe总线的高性能存储协议,专为固态硬盘(SSD)设计,旨在替代传统的AHCI协议(如SATA)。其核心特性包括&a…...
MySQL数据库精研之旅第二期:库操作的深度探索
专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、查看数据库 二、创建数据库 2.1. 语法 2.2. 示例 三、字符集编码和校验(排序)规则 3.1. 查看数据库支持的字符集编码 3.2. 查看数据库支持的排序规则 3.3. 不同的字串集与排序规则对数据库的…...
git_version_control_proper_practice
git_version_control_proper_practice version control,版本控制的方法之一就是打tag 因为多人协作的项目团队,commit很多,所以需要给重要的commit打tag,方便checkout,检出这个tag 参考行业的实践方式。如图git、linux…...
从单任务到多任务:进程与线程如何实现并发?
文章目录 1. 什么是进程定义进程的构成进程的状态进程与线程的关系进程的创建与销毁进程调度进程间通信(IPC)总结 2. 什么是线程?定义线程与进程的关系线程的特点线程的优点线程的类型线程的创建与销毁线程间通信总结 3. 进程与线程有什么区别…...
计算机组成原理和计算机网络常见单位分类及换算
计算机组成原理(主要用于存储、内存、缓存等) 计算机网络(主要用于传输速率) 直观对比...
【第二十八周】:Temporal Segment Networks:用于视频动作识别的时间分段网络
TSN 摘要Abstract文章信息引言方法时间分段采样分段聚合输入模态聚合函数多尺度时序窗口集成(M-TWI)训练 代码实现实验结果总结 摘要 本篇博客介绍了时间分段网络(Temporal Segment Network, TSN),这是一种针对视频动…...
为WordPress自定义一个留言板
要在WordPress中创建一个留言反馈表单,并实现后台管理功能,您可以按照以下步骤进行操作: 1. 创建留言反馈表单 首先,您需要使用一个表单插件来创建表单。推荐使用 Contact Form 7 或 WPForms。以下是使用 Contact Form 7 的示例…...
扩展域并查集
什么叫扩展域并查集 1 和 2是敌人,那么就把1好12链接起来:表示1和2是敌人 2和11链接起来也是这个道理 然后2 和3使敌人同理。 最后12连接了1 和 3,表名1 和 3 是 2 的敌人,1和3 就是朋友 1.P1892 [BalticOI 2003] 团伙 - 洛谷 #in…...
【C#语言】C#同步与异步编程深度解析:让程序学会“一心多用“
文章目录 ⭐前言⭐一、同步编程:单线程的线性世界🌟1、寻找合适的对象✨1) 🌟7、设计应支持变化 ⭐二、异步编程:多任务的协奏曲⭐三、async/await工作原理揭秘⭐四、最佳实践与性能陷阱⭐五、异步编程适用场景⭐六、性能对比实测…...
动态规划入门详解
动态规划(Dynamic Programming,简称DP)是一种算法思想,它将问题分解为更小的子问题,然后将子问题的解存起来,避免重复计算。 所以动态规划中每一个状态都是由上一个状态推导出来的,这一点就区别…...
SOFABoot-09-模块隔离
前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…...
电池电量检测方法介绍,开路电压法、库仑积分法、内阻法
开路电压法、库仑积分法、内阻法、卡尔曼滤波法、混合法 开路电压法是目前最简单的方法,根据电池的特性得知,在电池容量与开路电压之间存在一定的函数关系,当得知开路电压时,可以初步估算电池的剩余电量。该方法精度不高…...
基于基于eFish-SBC-RK3576工控板的智慧城市边缘网关
此方案充分挖掘eFish-SBC-RK3576的硬件潜力,可快速复制到智慧园区、交通枢纽等场景。 方案亮点 接口高密度:单板集成5GWiFi多路工业接口,减少扩展复杂度。AIoT融合:边缘端完成传感器数据聚合与AI推理,降低云端…...
CSS基础知识一览
持续维护 选择器 display 常用属性 浮动 弹性布局...
《Keras 3 : AI神经网络开发人员指南》
《Keras 3 : AI神经网络开发人员指南》 开发人员指南 我们的开发人员指南深入探讨了特定主题,例如层子类化、微调或模型保存。 它们是成为 Keras 专家的最佳方式之一。 我们的大多数指南都是以 Jupyter 笔记本的形式编写的,可以在 Google Colab 中一键…...
【免费】2000-2019年各省地方财政房产税数据
2000-2019年各省地方财政房产税数据 1、时间:2000-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政房产税 4、范围:31省 5、指标说明:房产税是对个人和单位拥有的房产征收的一种…...
WPF 布局舍入(WPF 边框模糊 或 像素错位 的问题)
1. 什么是 WPF 布局舍入? 在 WPF 开发过程中,可能会遇到界面模糊、边框错位、文本渲染不清晰等问题。这些现象通常是由于 WPF 采用 设备无关像素(DIP, Device Independent Pixels),在不同 DPI 设置下,UI 元…...
车载以太网网络测试-21【传输层-DOIP协议-4】
目录 1 摘要2 DoIP entity status request/response(0x4001、0x4002)2.1 使用场景2.2 报文结构2.2.1 0x4001:DoIP entity status request2.2.2 0x4002:DoIP entity status response 3 Diagnostic power mode information request/…...
机器学习——KNN数据集划分
一、主要函数 sklearn.datasets.my_train_test_split() 该函数为Scikit-learn 中用于将数据集划分为训练集和测试集的函数,适用于机器学习模型的训练和验证。以下是详细解释: 1、函数签名 train_test_split(*arrays, # 输入的数据…...
Pytest基础使用
概述 Pytest是Python里的一个强大的测试框架,灵活易用,可以进行功能,自动化测试使用,可以与Requests,Selenium等进行结合使用,同时可以生成Html的报告。 一、Pytest的基本使用 在未指定Pytest的配置文件时,会对以下文件进行执行: test_*.py,如:test_1.py*_test.py…...
Grid 布局实现三栏布局
使用 CSS Grid 布局实现三栏布局(左右固定 100px,中间自适应)的核心原理是通过网格模板精确控制列宽分配。以下是具体实现方法及优化技巧: 一、基础实现 父容器设置 为外层容器添加 display: grid 使其成为网格容器,并通过 grid-template-columns 定义列宽 css .contain…...
一条sql语句在mysql中的执行流程(Mysql基础架构)
mysql基础架构 MySQL 主要分为 Server 层和 存储引擎层: Server 层:主要包括 连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一…...
Spring AI Alibaba ChatModel使用
一、对话模型(Chat Model)简介 1、对话模型(Chat Model) 对话模型(Chat Model)接收一系列消息(Message)作为输入,与模型 LLM 服务进行交互,并接收返回的聊天…...
基于FPGA频率、幅度、相位可调的任意函数发生器(DDS)实现
基于FPGA实现频率、幅度、相位可调的DDS 1 摘要 直接数字合成器( DDS ) 是一种通过生成数字形式的时变信号并进行数模转换来产生模拟波形(通常为正弦波)的方法,它通过数字方式直接合成信号,而不是通过模拟信号生成技术。DDS主要被应用于信号生成、通信系统中的本振、函…...
