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;  
}

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

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

相关文章

redis中的hash结构

hash类型也叫散列&#xff0c;其中value是一个无序字典&#xff0c;不用像string类型中的value用jason结构去存储&#xff0c;他的value可以将对象中的每个字段独立存储&#xff0c;而且有个好处&#xff0c;方便修改value值 类似于这样 hash类型的常见命令&#xff1a;

USB子系统学习(四)使用libusb读取鼠标数据

文章目录 1、声明2、HID协议2.1、描述符2.2、鼠标数据格式 3、应用程序4、编译应用程序5、测试 1、声明 本文是在学习韦东山《驱动大全》USB子系统时&#xff0c;为梳理知识点和自己回看而记录&#xff0c;全部内容高度复制粘贴。 韦老师的《驱动大全》&#xff1a;商品详情 …

02.08 多路文件IO

思维导图1&#xff1a; 思维导图2&#xff1a; 高效处理多路文件IO&#xff1a;select、poll和epoll模型详解 在现代网络编程中&#xff0c;高效地监视多个文件描述符的IO状态&#xff08;如可读、可写、异常&#xff09;是至关重要的。本文将详细介绍三种常用的多路文件IO模…

opentelemetry-collector 配置elasticsearch

一、修改otelcol-config.yaml receivers:otlp:protocols:grpc:endpoint: 0.0.0.0:4317http:endpoint: 0.0.0.0:4318 exporters:debug:verbosity: detailedotlp/jaeger: # Jaeger supports OTLP directlyendpoint: 192.168.31.161:4317tls:insecure: trueotlphttp/prometheus: …

基于联合概率密度与深度优化的反潜航空深弹命中概率模型研究摘要

前言:项目题材来自数学建模2024年的D题,文章内容为笔者和队友原创,提供一个思路。 摘要 随着现代军事技术的发展,深水炸弹在特定场景下的反潜作战效能日益凸显,如何最大化的发挥深弹威力也成为重要研究课题。本文针对评估深弹投掷落点对命中潜艇概率的影响进行分析,综合利…

fps动作系统2:手臂动画

文章目录 角色蓝图pawn自动控制玩家 动画蓝图事件图表动画图表状态机时长 随机序列播放器混合空间播放器权重速度 角色蓝图 pawn 自动控制玩家 设置玩家控制器控制此pawn。 动画蓝图 事件图表 更新角色的相关数值 动画图表 设置角色相关动画以及切换规则 状态机 状态…

使用 ElementUI 和 Spring 实现稳定可靠的文件上传和下载功能

前端(ElementUI) 1. 文件上传 使用 el-upload 组件配置上传接口处理上传成功和失败<template><div><el-uploadclass="upload-demo"action="http://your-server-url/upload":on-success="handleSuccess":on-error="handle…

Docker安装pypiserver私服

Docker安装pypiserver私服 1 简介 Python开源包管理工具有pypiserver、devpi和Nexus等&#xff0c;pypiserver安装部署比较简单&#xff0c;性能也不错。 搭建pypiserver私服&#xff0c;可以自己构建镜像&#xff0c;也可以使用官网的docker镜像。 # Github地址 https://g…

[ Spring ] Integrate Spring Boot Service Monitor Prometheus and Grafana

文章目录 Install Prometheus ServerInstall Grafana ServerSpring Prometheus ProjectSpring Prometheus PropertiesSpring Prometheus ApplicationSpring Prometheus ConfigurationSpring Prometheus ControllerConfigure Grafana Dash Board Install Prometheus Server # d…

“现代C++ RAII库:设计、优化及实战应用“

文章目录 代码 示例raii 类的使用示例代码&#xff1a;解释&#xff1a; raii_var 类的使用示例代码&#xff1a;解释&#xff1a; 结合线程使用示例代码&#xff1a;解释&#xff1a; make_raii 函数签名&#xff1a;示例&#xff1a;解释&#xff1a; raii_bind_var 函数签名…

代码随想录day06

242.有效的字母异位词 刚学哈希表想着使用unordered_set来实现&#xff0c;结果无法通过&#xff0c;原因是对字母异位词理解有问题&#xff0c;字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语&#xff0c;并使用所有原字母一次。对字母出现的次数有要求&am…

Java_双列集合

双列集合特点 存放的是键值对对象&#xff08;Entry&#xff09; Map 因为都是继承Map&#xff0c;所以要学会这些API&#xff0c;后面的类就都知道了 put 有两个操作&#xff0c;添加&#xff08;并返回null&#xff09;或者覆盖&#xff08;返回被覆盖的值&#xff09…

MHTML文件如何在前端页面展示

MHTML文件如何在前端页面展示 需求背景&#xff1a; 目前在给证券公司做项目&#xff0c;但是在使用新系统的过程中&#xff0c;甲方还希望之前之前系统的历史记录可以看到。 最初制定的计划是项目组里面做数据的把原系统页面爬取下来&#xff0c;转成图片&#xff0c;直接给…

解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException

解决Spring Boot中MySQL数据库报错“Bad SQL Grammar”的问题 目录 解决Spring Boot中MySQL数据库报错“Bad SQL Grammar”的问题 问题描述解决步骤解决方案结论附&#xff1a;MySql常用配置参数及使用场景 在使用Spring Boot连接MySQL数据库时&#xff0c;有时候会遇到“B…

【AI日记】25.02.08

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 AI 应用探索周二有个面试&#xff0c;明后天打算好好准备一下&#xff0c;我打算主要研究下 AI 如何在该行业赋能和应用&#xff0c;以及该行业未来的发展前景和公司痛点&#…

【AI学习】关于 DeepSeek-R1的几个流程图

遇见关于DeepSeek-R1的几个流程图&#xff0c;清晰易懂形象直观&#xff0c;记录于此。 流程图一 来自文章《Understanding Reasoning LLMs》&#xff0c; 文章链接&#xff1a;https://magazine.sebastianraschka.com/p/understanding-reasoning-llms?continueFlagaf07b1a0…

零基础都可以本地部署Deepseek R1

文章目录 一、硬件配置需求二、详细部署步骤1. 安装 Ollama 工具2. 部署 DeepSeek-R1 模型3. API使用4. 配置图形化交互界面&#xff08;可选&#xff09;5. 使用与注意事项 一、硬件配置需求 不同版本的 DeepSeek-R1 模型参数量不同&#xff0c;对硬件资源的要求也不尽相同。…

索引失效的场景

chatGpt 7. 使用 DISTINCT 或 GROUP BY 当查询中涉及 DISTINCT 或 GROUP BY 时&#xff0c;如果查询没有合适的索引支持&#xff0c;可能会导致性能问题&#xff0c;虽然不完全是索引失效&#xff0c;但会影响查询效率。 sql SELECT DISTINCT department_id FROM employees;…

Node.js中http模块(二)

一、http模块 http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer0) 方法&#xff0c;就能方便的把一台普通的电脑&#xff0c;变成一台 Web 服务器&#xff0c;从而对外提供 Web 资源服务。 二、域名和域名服务器 尽管 I…

Dockerfile 文件详解

在平常的开发工作中&#xff0c;我们经常需要部署项目&#xff0c;一个项目开发完成后&#xff0c;使用 Docker 方式部署&#xff0c;那么首先得构造镜像&#xff0c;构造镜像最主要的就是 Dockerfile 文件的编写&#xff0c;今天简单来总结下 Dockerfile 文件的编写以及有哪些…