AtCoder Beginner Contest 391(ABCDE)
A - Lucky Direction
翻译:
给你一个字符串 D,代表八个方向(北、东、西、南、东北、西北、东南、西南)之一。方向与其代表字符串之间的对应关系如下。
- 北: N
- 东: E
- 西: W
- 南: S
- 东北方 :NE
- 西北: NW
- 东南: SE
- 西南: SW
打印与 D 表示的方向相反的字符串。
思路:
使用map对应即可
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();map<string,string> mp;mp["N"] = "S";mp["S"] = "N";mp["E"] = "W";mp["W"] = "E";mp["NE"] = "SW";mp["SW"] = "NE";mp["NW"] = "SE";mp["SE"] = "NW";string s;cin>>s;cout<<mp[s]<<endl;
}
B - Seek Grid
翻译:
给你一个 N×N 网格 S 和一个 M×M 网格 T。从上往下第 i 行和从左往右第 j 列的单元格用 (i,j) 表示。
S 和 T 中单元格的颜色用
个字符
(1≤i,j≤N)表示和
个字符
(1≤i,j≤M)来表示。在网格 S 中,如果
为 '. ',则单元格 (i,j) 为白色;如果
为 '#',则单元格 (i,j) 为黑色。网格 T也相同
找到S内的T。更准确地说,输出满足以下条件的整数 a 和 b(1≤a,b≤N-M+1):
对于i,j来说 i,j (1≤i,j≤M).
思路:
以S中(a,b)为右上角遍历M*M的网格,判断是否相同。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){int n,m;cin>>n>>m;vector<string> S(n),T(m);for (int i=0;i<n;i++){cin>>S[i];}for (int i=0;i<m;i++){cin>>T[i];}for (int a=0;a<=n-m;a++){for (int b=0;b<=n-m;b++){// judge sameint f = 1;for (int i=0;i<m;i++){if (!f) break;for (int j=0;j<m;j++){if (T[i][j]!=S[a+i][b+j]){f = 0;break;}}}if (f){cout<<a+1<<" "<<b+1<<endl;return;}}}
}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();
}
C - Pigeonhole Query
翻译:
有N 只鸽子,编号从1 到N,还有N 个巢,编号从1 到N。最初,鸽子i 在巢i 中,其中
1≤i≤N。你将收到Q 个查询,需要按顺序处理。查询有两种类型,每种查询的格式如下:
1 P H:将鸽子P 移动到巢H。2:输出包含多于一只鸽子的巢的数量。
思路:
用两个数组(nests,pigeon)分别记录,nests[i]记录巢i中有几只鸽子,pigeon[i]记录鸽子i在哪个巢穴中。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();int n,q,f,p,h,res = 0;cin>>n>>q;vector<int> nests(n+1,1),pigeon(n+1);for (int i=0;i<=n;i++) pigeon[i] = i;while (q--){cin>>f;if (f==1){cin>>p>>h;// move pif (nests[pigeon[p]]-- ==2){res -= 1;}pigeon[p] = h;if (nests[pigeon[p]]++ == 1){res += 1;}}else if (f==2){cout<<res<<endl;}}
}
D - Gravity
翻译:
有一个
行 W 列的网格。左起第 x 列和下起第 y 行的单元格用 (x,y) 表示。
共有 N 个图块。每个区块是 1×1 的正方形,第 i 个区块(1≤i≤N)在 0 时刻位于单元格
。
在
时,区块按照以下规则移动:
- 如果整个底行都布满了图块,则移除底行的所有图块。
- 对于剩余的每个区块,按照从下到上的顺序,执行以下操作:
- 如果该图块位于最下面一行,或者它下面的单元格中有一个图块,则不做任何操作。
- 否则,将该图块向下移动一格。
给您 Q 个查询。对于第 j 个查询 (1≤j≤Q),请回答区块 A j 在时间
.
思路:
预处理答案。
哪些块一定会消失?会构成底行都为图块的块。那么先就求会消掉的层数,即每列的最少块数。
那么最后会处于同一行的什么时候消失呢?这个由最终同行的最高点决定。
不消失的块则一直存在。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){ll n,w;cin>>n>>w; // block_down_time[i]:第i块在哪个时间点消失vector<ll> block_down_time(n+1,-1);// down_block[i]:第i列中包含的块(块所处高度,第几块)vector<vector<pair<ll,ll>>> down_block(w+1);for (ll x,y,i=1;i<=n;i++){cin>>x>>y;down_block[x].emplace_back(y,i);}// 有几行可被移除ll can_removes = INT_MAX;for (ll i=1;i<=w;i++){sort(down_block[i].begin(),down_block[i].end());can_removes = min(can_removes,(ll)down_block[i].size());}// 遍历消失的行,得到最终相同行的消失时间for (ll i=1;i<=can_removes;i++){ll need_time = 0;for (ll j=1;j<=w;j++){need_time = max(need_time,down_block[j][i-1].first);}for (ll j=1;j<=w;j++){block_down_time[down_block[j][i-1].second] = need_time;}}// queryll q,t,a;cin>>q;while (q--){cin>>t>>a;// 不会消失 或 还没到消失的点if (block_down_time[a]==-1 || block_down_time[a]>t){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();
}
E - Hierarchical Majority Vote
翻译:
对于长为
的二进制字符串
我们定义一个如下操作得到一个长为
的二进制字符串
:
- 将B的元素分为三组并得到每个组中的主要值。也就是对于
,让
为
中出现最频繁的值。
你被给予 对于长为
的二进制字符串
。. 设 A ′ =
′ 是对 A 进行 N 次上述操作后得到的长度为 1 的字符串。
确定A中最少要改变多少元素使得
的值改变。
思路:
以010011101为例
010 011 101 第2层
0 1 1 第1层
1 第0层
定义dfs( i, j )为第i层的第j块改变为
反转值(下面都叫最终值),所要用的元素数量。
如果当前 j 块下的3个块中有2个k1, k2与最终值不同,则min( dfs(i+1 , k1), dfs( i+1, k2))
如果当前 j 块下的3个块中有3个k1, k2,k3与最终值不同,则
min( dfs(i+1 , k1)+dfs( i+1, k2), dfs(i+1 , k2)+dfs( i+1, k3), dfs(i+1 , k3)+dfs( i+1, k1))
终止条件为i>=n返回1表示当前块要改。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){int n;string s;cin>>n;cin>>s;//colors[i][j]:第i层的第j块的颜色vector<vector<int>> colors(n+1);// 得到每层每块改变前的颜色for (char c:s) colors[n].push_back(c-'0');for (int i=n-1;i>=0;i--){for (int j=0;j<pow(3,i);j++){int cnt1 = 0,cnt0 = 0;for (int z=3*j;z<3*j+3;z++){if (colors[i+1][z]==1) cnt1++;else cnt0++;}colors[i].push_back(cnt1>cnt0 ? 1 : 0);}}// need:最终值int need = colors[0][0]^1;// memo[i][j]:第i层第j块中最少要改变的块数vector<vector<int>> memo(n+1);// 初始化memofor (int i=0;i<=n;i++) memo[i].resize(pow(3,i),-1);auto dfs = [&](auto&& dfs,int i,int j)->int{if (i>=n) return 1;int& res = memo[i][j];if (res!=-1) return res;res = INT_MAX;// cnt_need:有几个与最终值不同的int cnt_need = 0,base = 3*j;for (int k=base;k<base+3;k++){if (colors[i+1][k]!=need) cnt_need++;} if (cnt_need==2){for (int k=base;k<base+3;k++){if (colors[i+1][k]!=need) res = min(res,dfs(dfs,i+1,k));}}else if (cnt_need==3){for (int k1=base;k1<base+3;k1++){for (int k2 = k1+1;k2<base+3;k2++){if (colors[i+1][k1]!=need && colors[i+1][k2]!=need){res = min(res,dfs(dfs,i+1,k1)+dfs(dfs,i+1,k2));}}}}return res;};cout<<dfs(dfs,0,0)<<endl;
}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 中间填保留几位小数,不填默认// cout.precision();solve();
}
有建议可以评论,我会积极改进qwq。
codeforces比赛时间十点左右的场基本不会当天写了,atcoder有的话基本会写。
相关文章:
AtCoder Beginner Contest 391(ABCDE)
A - Lucky Direction 翻译: 给你一个字符串 D,代表八个方向(北、东、西、南、东北、西北、东南、西南)之一。方向与其代表字符串之间的对应关系如下。 北: N东: E西: W南: S东…...
MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译
感谢阅读 注意不含评估以后的翻译原论文地址标题以及摘要介绍部分MiniRAG 框架2.1 HETEROGENEOUS GRAPH INDEXING WITH SMALL LANGUAGE MODELS2.2 LIGHTWEIGHT GRAPH-BASED KNOWLEDGE RETRIEVAL2.2.1 QUERY SEMANTIC MAPPING2.2.2 TOPOLOGY-ENHANCED GRAPH RETRIEVAL 注意不含评…...
HTB:LinkVortex[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用gobuster对靶机进行路径FUZZ 使用ffuf堆靶机…...
3D图形学与可视化大屏:什么是材质属性,有什么作用?
一、颜色属性 漫反射颜色 漫反射颜色决定了物体表面对入射光进行漫反射后的颜色。当光线照射到物体表面时,一部分光被均匀地向各个方向散射,形成漫反射。漫反射颜色的选择会直接影响物体在光照下的外观。例如,一个红色的漫反射颜色会使物体在…...
什么是门控循环单元?
一、概念 门控循环单元(Gated Recurrent Unit,GRU)是一种改进的循环神经网络(RNN),由Cho等人在2014年提出。GRU是LSTM的简化版本,通过减少门的数量和简化结构,保留了LSTM的长时间依赖…...
基于微信小程序的酒店管理系统设计与实现(源码+数据库+文档)
酒店管理小程序目录 目录 基于微信小程序的酒店管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1) 用户信息管理 (2) 酒店管理员管理 (3) 房间信息管理 2、小程序序会员模块的实现 (1)系统首页 ÿ…...
Python-基于PyQt5,pdf2docx,pathlib的PDF转Word工具
前言:日常生活中,我们常常会跟WPS Office打交道。作表格,写报告,写PPT......可以说,我们的生活已经离不开WPS Office了。与此同时,我们在这个过程中也会遇到各种各样的技术阻碍,例如部分软件的PDF转Word需要收取额外费用等。那么,可不可以自己开发一个小工具来实现PDF转…...
Java-数据结构-优先级队列(堆)
一、优先级队列 ① 什么是优先级队列? 在此之前,我们已经学习过了"队列"的相关知识,我们知道"队列"是一种"先进先出"的数据结构,我们还学习过"栈",是"后进先出"的…...
爬虫基础(四)线程 和 进程 及相关知识点
目录 一、线程和进程 (1)进程 (2)线程 (3)区别 二、串行、并发、并行 (1)串行 (2)并行 (3)并发 三、爬虫中的线程和进程 &am…...
C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】
1. 题目描述 力扣在线OJ题目 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 输入:nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:[9,4] 2. 思路 直接暴力…...
Tailwind CSS - Tailwind CSS 引入(安装、初始化、配置、引入、构建、使用 Tailwind CSS)
一、Tailwind CSS 概述 Tailwind CSS 是一个功能优先的 CSS 框架,它提供了大量的实用类(utility classes),允许开发者通过组合这些类来快速构建用户界面 Tailwind CSS 与传统的 CSS 框架不同(例如,Bootstr…...
Sqoop导入MySQL中含有回车换行符的数据
个人博客地址:Sqoop导入MySQL中含有回车换行符的数据 MySQL中的数据如下图: 检查HDFS上的目标文件内容可以看出,回车换行符位置的数据被截断了,导致数据列错位。 Sqoop提供了配置参数,在导入时丢弃掉数据的分隔符&…...
LightM-UNet(2024 CVPR)
论文标题LightM-UNet: Mamba Assists in Lightweight UNet for Medical Image Segmentation论文作者Weibin Liao, Yinghao Zhu, Xinyuan Wang, Chengwei Pan, Yasha Wang and Liantao Ma发表日期2024年01月01日GB引用> Weibin Liao, Yinghao Zhu, Xinyuan Wang, et al. Ligh…...
stm32硬件实现与w25qxx通信
使用的型号为stm32f103c8t6与w25q64。 STM32CubeMX配置与引脚衔接 根据stm32f103c8t6引脚手册,采用B12-B15四个引脚与W25Q64连接,实现SPI通信。 W25Q64SCK(CLK)PB13MOSI(DI)PB15MISO(DO)PB14CS(…...
FPGA 使用 CLOCK_DEDICATED_ROUTE 约束
使用 CLOCK_DEDICATED_ROUTE 约束 CLOCK_DEDICATED_ROUTE 约束通常在从一个时钟区域中的时钟缓存驱动到另一个时钟区域中的 MMCM 或 PLL 时使 用。默认情况下, CLOCK_DEDICATED_ROUTE 约束设置为 TRUE ,并且缓存 /MMCM 或 PLL 对必须布局在相同…...
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
一、GenBI AI 代理介绍(文末提供下载) github地址:https://github.com/Canner/WrenAI 本文信息图片均来源于github作者主页 在 Wren AI,我们的使命是通过生成式商业智能 (GenBI) 使组织能够无缝访问数据&…...
C动态库的生成与在Python和QT中的调用方法
目录 一、动态库生成 1)C语言生成动态库 2)c类生成动态库 二、动态库调用 1)Python调用DLL 2)QT调用DLL 三、存在的一些问题 1)python调用封装了类的DLL可能调用不成功 2)DLL格式不匹配的问题 四、…...
C++ Primer 自定义数据结构
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
解析 Oracle 中的 ALL_SYNONYMS 和 ALL_VIEWS 视图:查找同义词与视图的基础操作
目录 前言1. ALL_SYNONYMS 视图2. ALL_VIEWS 视图3. 扩展 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. ALL_SYNONYMS 视图 在 Oracle 数据库中,同义词(Synonym)是对数…...
PyTorch框架——基于深度学习YOLOv8神经网络学生课堂行为检测识别系统
基于YOLOv8深度学习的学生课堂行为检测识别系统,其能识别三种学生课堂行为:names: [举手, 读书, 写字] 具体图片见如下: 第一步:YOLOv8介绍 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本…...
深入探索 Vue 3 Markdown 编辑器:高级功能与实现
目录 1. 为什么选择 Markdown 编辑器?2. 选择合适的 Markdown 编辑器3. 安装与基本配置安装 配置 Markdown 编辑器代码说明 4. 高级功能实现4.1 实时预览与双向绑定4.2 插入图片和图像上传安装图像上传插件配置图像上传插件 4.3 数学公式支持安装 KaTeX配置 KaTeX 插…...
7.攻防世界fileclude
题目描述 进入题目页面如下 看到题目提示应该为文件包含漏洞 解释上述代码 // 输出提示信息:错误的方式! WRONG WAY! <?php // 包含名为 "flag.php" 的文件,通常这个文件里可能包含重要的敏感信息,如 flag inclu…...
【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现
文章目录 介绍Transformer核心组件架构图编码器(Encoder)解码器(Decoder) 优点应用代码实现导包基于位置的前馈网络残差连接后进行层规范化编码器 Block编码器解码器 Block解码器训练预测 个人主页:道友老李 欢迎加入社…...
【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
目录 1 -> HML语法 1.1 -> 页面结构 1.2 -> 数据绑定 1.3 -> 普通事件绑定 1.4 -> 冒泡事件绑定5 1.5 -> 捕获事件绑定5 1.6 -> 列表渲染 1.7 -> 条件渲染 1.8 -> 逻辑控制块 1.9 -> 模板引用 2 -> CSS语法 2.1 -> 尺寸单位 …...
当WebGIS遇到智慧文旅-以长沙市不绕路旅游攻略为例
目录 前言 一、旅游数据组织 1、旅游景点信息 2、路线时间推荐 二、WebGIS可视化实现 1、态势标绘实现 2、相关位置展示 三、成果展示 1、第一天旅游路线 2、第二天旅游路线 3、第三天旅游路线 4、交通、订票、住宿指南 四、总结 前言 随着信息技术的飞速发展&…...
《大数据时代“快刀”:Flink实时数据处理框架优势全解析》
在数字化浪潮中,数据呈爆发式增长,实时数据处理的重要性愈发凸显。从金融交易的实时风险监控,到电商平台的用户行为分析,各行业都急需能快速处理海量数据的工具。Flink作为一款开源的分布式流处理框架,在这一领域崭露头…...
【机器学习理论】朴素贝叶斯网络
基础知识: 先验概率:对某个事件发生的概率的估计。可以是基于历史数据的估计,可以由专家知识得出等等。一般是单独事件概率。 后验概率:指某件事已经发生,计算事情发生是由某个因素引起的概率。一般是一个条件概率。 …...
使用Pygame制作“吃豆人”游戏
本篇博客展示如何使用 Python Pygame 编写一个简易版的“吃豆人(Pac-Man)” 风格游戏。这里我们暂且命名为 Py-Man。玩家需要控制主角在一个网格地图里移动、吃掉散布在各处的豆子,并躲避在地图中巡逻的幽灵。此示例可帮助你理解网格地图、角…...
使用 Docker(Podman) 部署 MongoDB 数据库及使用详解
在现代开发环境中,容器化技术(如 Docker 和 Podman)已成为部署和管理应用程序的标准方式。本文将详细介绍如何使用 Podman/Docker 部署 MongoDB 数据库,并确保其他应用程序容器能够通过 Docker 网络成功连接到 MongoDB。我们将逐步…...
SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言
目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…...
