当前位置: 首页 > news >正文

AtCoder Beginner Contest 391(A~E题题解)

A - Lucky Direction

思路:纯模拟的一个水题

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  
string s;
signed main() 
{   cin>>s;for(int i=0;i<s.size();i++){char c=s[i];if(c=='N'){cout<<"S";}else if(c=='S'){cout<<"N";}else if(c=='E'){cout<<"W";}else if(c=='W'){cout<<"E";}
}return 0;  
}

 B - Seek Grid

思路:数据很小,直接写一个n的四次方的代码即可,暴力模拟

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  
char a[55][55];
char b[55][55];
signed main() 
{   int n,m;cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){cin>>b[i][j];}}for(int i=1;i<=n-m+1;i++){for(int j=1;j<=n-m+1;j++){if(a[i][j]==b[1][1]){int flag=1;for(int k=i;k<=i+m-1;k++){for(int l=j;l<=j+m-1;l++){if(a[k][l]!=b[k-i+1][l-j+1]){flag=0;break;}}}if(flag==1){cout<<i<<" "<<j<<"\n";return 0;}}}}return 0;  
}

 C - Pigeonhole Query

 思路:我们可以用cnt数组去统计每个鸽巢的鸽子的数量,如果变成2,则大于1的鸽巢数量+1,如果减去变成1则大于1的鸽巢数量-1

最终即为结果

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  
int n;
int q;
int flag;
int p,h;
int cnt[1000005];
map<int,int> mp;//鸽子~鸽巢 
signed main() 
{   cin>>n;for(int i=1;i<=n;i++){cnt[i]=1;mp[i]=i;}cin>>q;int ans=0;for(int i=1;i<=q;i++){cin>>flag;if(flag==1){cin>>p>>h;cnt[mp[p]]--;if(cnt[mp[p]]==1)ans--;mp[p]=h;cnt[h]++;if(cnt[h]==2)ans++;}else{cout<<ans<<"\n";}}return 0;  
}

 D - Gravity

 思路:我们可以将思路转变一下,先去求出每个方块的消除时间,然后去比对他问的时间,如果消除时间小于提问的时间就是已经被消除了,否则就是还在

我们可以去统计每一列都有多少方块,那么能消除的行数,也就是每一列方块的最小个数,这个应该都能理解吧

那我们同理应该能明白,每一行删除都是一个特定的时间,当前行内的方块的最高的高度,就是当前行的删除时间

一但出现某一列的方块为0,就结束循环,因此我们应当注意上面红字还有一个特判如果消除时间为0,那就证明一直没有被消除,因此也是yes

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  
int n,w;
int q;
int t,a;
int x,y;
vector<pair<int,int>> col[200005];//表示每一列的每一行在什么位置 
int te[200005];//表示每个方块消失的时间 
signed main() 
{   cin>>n>>w;for(int i=1;i<=n;i++){cin>>x>>y;col[x].push_back(make_pair(y,i));}for(int i=1;i<=w;i++){sort(col[i].begin(),col[i].end());}for(int k=1;k<=n;k++)//第k次消除{int maxn=0;for(int i=1;i<=w;i++){if(col[i].size()<k){maxn=-1;break;}maxn=max(maxn,col[i][k-1].first);;}if(maxn==-1)break;for(int i=1;i<=w;i++){te[col[i][k-1].second]=maxn;}}cin>>q;for(int i=1;i<=q;i++){cin>>t>>a;if(te[a]==0||t<te[a]){cout<<"Yes\n";}else{cout<<"No\n";}}return 0;  
}

E - Hierarchical Majority Vote

思路:我们可以将这道题看做是一个树上dp的问题,每个父节点都有三个子节点,然后从根节点向下深搜,再将结果返回根节点即可

我们来看定义dp[i][j]表示i结点变换为j这个数,所需要的最小操作数 ,我们在统计父节点的时候,如果想让这个点为1只需要有两个点为1即可,如果为0,就只需要两个点为0即可,因此我们在统计当前点颜色为c的时候,只要将这几个点的颜色变为c的情况累加起来,并且减去最大的这个价值即可

ans[i]表示i点在没有经过操作的时候应当为的数字

然后最后输出dp[root][ans[root]^1]即可,root为根节点

#include <bits/stdc++.h>  
using namespace std;  
#define int long long  
int n,len;
string s;
vector<int> e[5000005];//存储每个的子节点 
int dp[5000005][2];//dp[i][j]表示将下标为i的点变为j所需的最小操作次数 
int ans[5000005];//原本应该的结果 
void dfs(int v)
{if(v<=n){if(s[v]=='1'){dp[v][0]=1;}else{dp[v][1]=1;}ans[v]=s[v]-'0';return;}int cnt=0;for(int u:e[v]){dfs(u);cnt+=ans[u];}if(cnt>=2){ans[v]=1;}else{ans[v]=0;}for(int c=0;c<=1;c++){int sum=0;int maxn=0;for(int u:e[v]){sum+=dp[u][c];maxn=max(maxn,dp[u][c]);}dp[v][c]=sum-maxn;}
}
signed main() 
{   cin>>n;cin>>s;n=s.size();len=n;s=" "+s;for(int i=1;i+2<=len;i+=3){len++;e[len].push_back(i);e[len].push_back(i+1);e[len].push_back(i+2);} dfs(len);cout<<dp[len][ans[len]^1];return 0;  
}

相关文章:

AtCoder Beginner Contest 391(A~E题题解)

A - Lucky Direction 思路&#xff1a;纯模拟的一个水题 #include <bits/stdc.h> using namespace std; #define int long long string s; signed main() { cin>>s;for(int i0;i<s.size();i){char cs[i];if(cN){cout<<"S";}else if(c…...

mysql mvcc 锁 关系

多版本并发控制&#xff08;MVCC&#xff09;是一种用于数据库并发控制的机制&#xff0c;它可以在保证数据一致性的同时&#xff0c;提高数据库的并发性能。下面结合 MVCC 机制&#xff0c;详细阐述常见的四种事务隔离级别&#xff08;读未提交、读已提交、可重复读、串行化&a…...

安卓手机基于 Termux 安装 AList 并设置开机自启的详细教程

安装 AList 安装 Termux&#xff1a; 点击下载 更新软件包&#xff1a;打开 Termux&#xff0c;运行以下命令以更新软件包列表并升级已安装的软件包&#xff1a; bash复制 pkg update && pkg upgrade安装 AList&#xff1a;运行以下命令安装 AList&#xff1a; bash复…...

LeetCode:503.下一个更大元素II

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;503.下一个更大元素II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[…...

实验5 配置OSPFv2验证

实验5 配置OSPFv2验证 1.实验目的 &#xff08;1&#xff09;OSPFv2 验证的类型和意义。 &#xff08;2&#xff09;配置基于区域的 OSPFv2 简单口令验证和 MD5 验证的方法。 &#xff08;3&#xff09;配置基于链路的 OSPFv2 简单口令验证和 MD5 验证的方法。 2.实验准备 配置…...

第二节 docker基础之---镜像构建及挂载

查看当前镜像&#xff1a; [rootdocker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [rootdocker ~]#很明显docker是咱们新搭建的所以目前还没有镜像 1&#xff0c;搜索镜像&#xff1a; [rootdocker ~]# docker search centos 搜索镜像并过滤是官…...

论文阅读:MGMAE : Motion Guided Masking for Video Masked Autoencoding

MGMAE:Motion Guided Masking for Video Masked Autoencoding Abstract 掩蔽自编码&#xff08;Masked Autoencoding&#xff09;在自监督视频表示学习中展现了出色的表现。时间冗余导致了VideoMAE中高掩蔽比率和定制的掩蔽策略。本文旨在通过引入运动引导掩蔽策略&#xff0…...

记录一下 在Mac下用pyinstallter 打包 Django项目

安装: pip install pyinstaller 在urls.py from SheepMasterOneToOne import settings from django.conf.urls.static import staticurlpatterns [path("admin/", admin.site.urls),path(generate_report/export/, ReportAdmin(models.Report, admin.site).generat…...

【漫话机器学习系列】084.偏差和方差的权衡(Bias-Variance Tradeoff)

偏差和方差的权衡&#xff08;Bias-Variance Tradeoff&#xff09; 1. 引言 在机器学习模型的训练过程中&#xff0c;我们常常面临一个重要的挑战&#xff1a;如何平衡 偏差&#xff08;Bias&#xff09; 和 方差&#xff08;Variance&#xff09;&#xff0c;以提升模型的泛…...

deepseek本地部署-linux

1、官网推荐安装方法&#xff08;使用脚本&#xff0c;我绕不过github&#xff0c;未采用&#xff09; 登录ollama下载网站https://ollama.com/download/linux&#xff0c;linux下有下载脚本。 正常来说&#xff0c;在OS系统下直接执行脚本即可。 2、手动安装方法 2.1获取ol…...

解决使用python提取word文档中所有的图片时图片丢失的问题

python解析word文档&#xff0c;提取文档中所有的图片并保存&#xff0c;并将原图位置用占位符替换。 问题描述 利用python-dox库解析word文档&#xff0c;并提取里面的所有图片时发现会出现一摸一样的图片只解析一次&#xff0c;导致图片丢失&#xff0c;数量不对的情况。 …...

【Spring相关知识】Spring应用如何优雅使用消息队列

文章目录 概述**核心概念****使用场景****快速入门**1. 添加依赖2. 配置 Binder3. 定义消息通道4. 发送和接收消息5. 运行应用 **高级特性****优点****适用场景** 概述 Spring Cloud Stream 是一个用于构建消息驱动微服务的框架&#xff0c;它基于 Spring Boot 和 Spring Inte…...

人工智能:从概念到未来

人工智能&#xff1a;从概念到未来 一、引言 在当今数字化时代&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;已从科幻小说和电影中的幻想逐渐走进现实&#xff0c;成为推动社会进步和经济发展的关键力量。它正在深刻地改变着我们的生活…...

CUDA Graph

cudaGraphLaunch 是 NVIDIA CUDA API 中的一个函数&#xff0c;用于在 CUDA Graphs 中启动一个已实例化的图。 CUDA Graphs 简介 CUDA Graphs 是 NVIDIA CUDA 编程模型中的一种技术&#xff0c;旨在优化 GPU 程序的性能。它允许将一系列连续的 GPU 操作&#xff08;如计算和数…...

1343. 大小为 K 且平均值大于等于阈值的子数组数目

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 在遍历时维护一个统计的变量&#xff0c;用来统计满足条件的子数组个数 2.2 代码尝试 class Solution { public:int numOfSubarrays(vec…...

IDEA+DeepSeek让Java开发起飞

1.获取DeepSeek秘钥 登录DeepSeek官网 : https://www.deepseek.com/ 进入API开放平台&#xff0c;第一次需要注册一个账号 进去之后需要创建一个API KEY&#xff0c;然后把APIkey记录保存下来 接着我们获取DeepSeek的API对话接口地址&#xff0c;点击左边的&#xff1a;接口…...

C# winforms 使用菜单和右键菜单

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

IDEA编写SpringBoot项目时使用Lombok报错“找不到符号”的原因和解决

目录 概述|背景 报错解析 解决方法 IDEA配置解决 Pom配置插件解决 概述|背景 报错发生背景&#xff1a;在SpringBoot项目中引入Lombok依赖并使用后出现"找不到符号"的问题。 本文讨论在上述背景下发生的报错原因和解决办法&#xff0c;如果仅为了解决BUG不论原…...

C基础寒假练习(6)

一、终端输入行数&#xff0c;打印倒金字塔 #include <stdio.h> int main() {int rows;printf("请输入倒金字塔的行数: ");scanf("%d", &rows);for (int i rows; i > 0; i--) {// 打印空格for (int j 0; j < rows - i; j) {printf(&qu…...

【论文翻译】DeepSeek-V3论文翻译——DeepSeek-V3 Technical Report——第一部分:引言与模型架构

论文原文链接&#xff1a;DeepSeek-V3/DeepSeek_V3.pdf at main deepseek-ai/DeepSeek-V3 GitHub 特别声明&#xff0c;本文不做任何商业用途&#xff0c;仅作为个人学习相关论文的翻译记录。本文对原文内容直译&#xff0c;一切以论文原文内容为准&#xff0c;对原文作者表示…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...