AtCoder Beginner Contest 416(ABCDE)

A - Vacation Validation

翻译:

        给你一个长度为 N 的字符串 S,它由 o 和 x 以及整数 L 和 R 组成。

        请判断 S 中从第 L 个字符到第 R 个字符的所有字符是否都是 o。

思路:

        (模拟)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){int n,l,r;cin>>n>>l>>r;string s;cin>>s;s = ' '+s;int f = 1;for (int i=l;i<=r;i++){f &= (s[i]=='o');}cout<<(f ? "Yes" : "No")<<endl;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();int t=1;
//    cin>>t;while (t--) solve();return 0;
}



B - 1D Akari

翻译:

        给你一个由 . 和 # 组成的字符串 S。

        在满足以下所有条件的所有字符串 T 中,找出一个具有最多 o 的字符串。

  • T 的长度等于 S 的长度。
  • T 由 .、# 或 o 组成。
  • 当且仅当 S_i = # 时,T_i = #。
  • 如果 T_i=T_j=o(i<j),那么在 T_{i+1},...,T_{j-1} 中至少存在一个 #。

思路:

        这题S与T的#位置是一一对应的。遍历S,遍历i到#时将右边T[i+1]=o,最后将T自左到右第一个非#变为o。(模拟,贪心)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){string s;cin>>s;bool flag = 0;int n = s.size();char res[n];for (int i=0;i<n;i++){res[i] = s[i];if (s[i]=='#'){if (!flag){for (int j=i-1;j>=0;j--){if (res[j]=='.'){flag = 1;res[j] = 'o';break;}}}if (flag){for (i+=1;i<n;i++){if (s[i]=='.') {res[i] = 'o';break;}else{res[i] = s[i];}}}}}flag = 1;for (int i=0;i<n;i++) flag&=(res[i]=='.');if (flag) res[0] = 'o';for (int i=0;i<n;i++) cout<<res[i];
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();int t=1;
//    cin>>t;while (t--) solve();return 0;
}



C - Concat (X-th)

翻译:

        给你 N 个字符串 S_1,...,S_N

        对于长度为 K 的序列(A_1,...,A_K),其中所有元素都在 1 到 N 之间(包括 N),定义字符串 f(A_1,...,A_K)S_{A_1}+S_{A_2}+...+S_{A_K}

        将 N^K 个序列的所有f(A_1,...,A_K) 按词序排序,找出第 X 个最小的字符串。

思路:

        求出所有情况放入数组,排序数组得到第 X 个最小的字符串。(dfs)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){int n,k,x,m,cnt=0;cin>>n>>k>>x;m = (int)pow(n,k);string s[n+1];vector<string> res(m);vector<int> a(k);for (int i=1;i<=n;i++) cin>>s[i];function<void(int)> dfs = [&](int step) {if (step == k) {string tmp = "";for (int i = 0; i < k; i++) tmp += s[a[i]];res[cnt++] = tmp;return;}for (int i = 1; i <= n; i++) {a[step] = i;dfs(step + 1);}};dfs(0);sort(res.begin(),res.end());cout<<res[x-1]<<endl;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();int t=1;
//    cin>>t;while (t--) solve();return 0;
}

D - Match, Mod, Minimize 2

翻译:

        给你长度为 N 的序列 A=(A_1,A_2,...,A_N)B=(B_1,B_2,...,B_N),它们由非负整数和正整数 M 组成。

        当你可以自由地重新排列 A 的元素时,求 \sum\limits_{i=1}^N((A_i+B_i)\mod M) 的最小值。

        已给出 T 个测试案例,请为每个案例找出答案。

思路:

        先对A与B取模,要让和最小那么A,B中和大于M的对数应该最大,以此减去更多的M。对A,B升序排序再使用双指针配对。(数学,双指针)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){ll n,m,res=0;cin>>n>>m;vector<ll> a(n),b(n);for (ll &i:a){cin>>i;i=i%m;res+=i;}for (ll &i:b){cin>>i;i=i%m;res+=i;}sort(a.begin(),a.end());sort(b.begin(),b.end());for (int i=0,j=n-1;i<n;i++){if (a[i]+b[j]>=m){res-=m;j--;}}cout<<res<<endl;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();int t=1;cin>>t;while (t--) solve();return 0;
}

E - Development

翻译:

        AtCoder 国家有 N 个城市(编号从1 到 N)、M 条公路和 K 个机场。

        第 i 条公路双向连接城市 A_iB_i,需要 C_i 小时的路程。D_1,...,D_K 城市都有机场,在有机场的城市之间旅行需要 T 小时。

        按顺序处理 Q 个查询。每个查询都是以下三种类型之一:

  • 1 x y t: 建造一条在 t 小时内双向连接 x 和 y 两个城市的道路。
  • 2 x: 一个机场建造在城市x。
  • 3:设 f(x,y)为从城市 x 出发,利用公路和机场(如果可以到达)到达城市 y 所需的最小小时数,0(如果无法到达)。求 \sum^N_{x=1}\sum^N_{y=1}f(x,y)

思路:

        要理解floyd的最外层是作为中间点存在,在执行查询1时,将中间点固定为x,y;执行查询2时,先确定一个超级原点0,将所有x连在0上,此时中间点为x,0,此时两个机场间的距离会变为2t为了平衡将查询1的时间乘2即可;(floyd)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll INF = 1e18;
ll n,m,k,t;
vector<vector<ll>> maze(510,vector<ll>(510,INF));
void solve(){cin>>n>>m;for (int i=0;i<=n;i++) for (int j=0;j<=n;j++) maze[i][j] = INF;for (int i=0;i<=n;i++) maze[i][i] = 0;for (ll a,b,c,i=0;i<m;i++){cin>>a>>b>>c;maze[a][b] = maze[b][a] = min(maze[a][b],2*c);}cin>>k>>t;for (ll a,i=0;i<k;i++){cin>>a;maze[a][0] = maze[0][a] = t;}for (ll kk=0;kk<=n;kk++){for (ll i=0;i<=n;i++){for (ll j=0;j<=n;j++){maze[i][j] = min(maze[i][j],maze[i][kk]+maze[kk][j]);}}}ll q,flag,a,b,c;cin>>q;while (q--){cin>>flag;if (flag==1){cin>>a>>b>>c;maze[a][b] = maze[b][a] = min(maze[a][b],2*c);for (ll i=0;i<=n;i++){for (ll j=0;j<=n;j++){maze[i][j] = min({maze[i][j],maze[i][a]+maze[b][j]+maze[a][b],maze[i][b]+maze[a][j]+maze[b][a]});}}}else if (flag==2){cin>>a;maze[a][0] = maze[0][a] = t;for (ll i=0;i<=n;i++){for (ll j=0;j<=n;j++){maze[i][j] = min({maze[i][j],maze[i][a]+maze[a][0]+maze[0][j],maze[i][0]+maze[0][a]+maze[a][j]});}}}else{ll res = 0;for (ll i=1;i<=n;i++){for (ll j=1;j<=n;j++){if (maze[i][j]!=INF){res+=maze[i][j];}}}cout<<(res>>1)<<'\n';}}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();int t=1;while (t--) solve();return 0;
}

之后补题会在此增加题解。    

思路标准:思路+算法概要+时空复杂度。

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

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

相关文章

【AlphaFold3】网络架构篇(2)|Input Embedding 对输入进行特征嵌入

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; Yaoyao2024往期回顾&#xff1a;【AlphaFold3】网络架构篇&#xff08;1&#xff09;|概览预测算法每日一言&#x1f33c;: 去留无意&#xff0c;闲看庭前花开花落&#xff1b…

秋招Day20 - 微服务 - 概念

什么是微服务&#xff1f;将一个大型的单体项目分割成一个个可以独立开发和部署的小服务&#xff0c;服务之间松耦合&#xff0c;可以通过轻量级通信机制&#xff08;比如HTTP&#xff09;相互协作微服务带来了哪些挑战&#xff1f; 介绍一下一下Dubbo&#xff1f;Dubbo是一个高…

PyTorch 生态四件套:从图片、视频到文本、语音的“开箱即用”实践笔记

写在前面 当我们谈论 PyTorch 时&#xff0c;我们首先想到的是 torch.Tensor、nn.Module 和强大的自动求导系统。但 PyTorch 的力量远不止于此。为了让开发者能更高效地处理图像、文本、音频、视频等真实世界的复杂数据&#xff0c;PyTorch 建立了一个强大的官方生态系统。本文…

2023 年 NOI 最后一题题解

问题描述2023 年 NOI 最后一题是一道融合图论与动态规划的综合优化问题&#xff0c;聚焦于带时间窗约束的多路径规划。题目具体要求如下&#xff1a;给定一个有向图&#xff0c;其中节点代表城市&#xff0c;边代表交通路线。每条边具有三个属性&#xff1a;行驶时间、基础费用…

Android补全计划 TextView设置文字不同字体和颜色

1 富文本 1 java中动态加载文本 颜色 String strMsg "今天<font color\"#00ff00\">天气不错</font>"; tv_msg.setText(Html.fromHtml(strMsg));字体和颜色 String str2 "今天<font color\"#00ff00\"><big>天气不…

C语言:详解单链表与例题

C语言&#xff1a;详解单链表与例题 1.单链表的实现 2.例题&#xff1a;移除链表元素 1.单链表的实现 链表根据带头或不带头、单向或双向、循环或不循环分类为8种&#xff0c;最常用的是单链表和双向链表&#xff0c;单链表是 不带头单向不循环 链表。 链表由节点组成&#xff…

从0开始学习R语言--Day62--RE插补

对于会有多次测量值的数据&#xff0c;用普通的回归去插补&#xff0c;往往会忽略掉数据个体本身的特点&#xff0c;毕竟多次的测量值其实就代表了数据个体的不稳定性&#xff0c;存在额外的干扰。而RE的插补原理是结合个体本身的随机效应和群体的固体效应再加上截距进行插补的…

RESTful API开发指南:使用Spring Boot构建企业级接口

目录 1. 引言2. RESTful API基础概念3. Spring Boot环境搭建4. 项目结构设计5. 核心组件开发6. 数据库集成7. 安全认证8. 异常处理9. API文档生成10. 测试策略11. 部署与监控12. 最佳实践 1. 引言 在现代软件开发中&#xff0c;RESTful API已成为构建分布式系统和微服务架构…

从 Print 到 Debug:用 PyCharm 掌控复杂程序的调试之道

目录摘要调试工具窗口会话工具栏调试工具栏单步工具栏调试器选项卡调用栈帧&#xff08;Frames&#xff09;变量&#xff08;Variables&#xff09;&#x1f4a1; 表达式求值区域&#xff08;Evaluate expression field&#xff09;&#x1f5b1;️ 右键菜单&#xff08;Contex…

用于前列腺活检分级的分层视觉 Transformer:迈向弥合泛化差距|文献速递-医学影像算法文献分享

Title题目Hierarchical Vision Transformers for prostate biopsy grading: Towardsbridging the generalization gap用于前列腺活检分级的分层视觉 Transformer&#xff1a;迈向弥合泛化差距01文献速递介绍前列腺癌是全球男性中第二常见的确诊癌症&#xff0c;也是第五大致命癌…

Apple基础(Xcode②-Flutter结构解析)

&#x1f3d7;️ 目录结构速查表&#xff08;your_project/ios/ 下&#xff09;ios/ ├── Runner/ ← 原生 iOS 工程根目录&#xff08;Xcode 打开它&#xff09; │ ├── AppDelegate.swift ← App 入口&#xff08;类似 Android 的 MainActivity&…

X00229-基于深度强化学习的车联网资源分配python完整

X00229-基于深度强化学习的车联网资源分配python完整

面向多模态自监督学习的共享表示与独有表示解耦

通俗说法&#xff1a;在多模态自监督学习中&#xff0c;将共享信息和独有信息分离开来 Abstract 问题&#xff1a; 传统方法通常假设在训练和推理阶段都可以访问所有模态信息&#xff0c;这在实际应用中面对模态不完整输入时会导致性能显著下降。 解决方法&#xff1a;提出了一…

【iOS】weak修饰符

前言前面我们已经学习了解了sideTable&#xff0c;今天来看看在OC中&#xff0c;sideTable是如何在我们使用weak时工作的。在OC中&#xff0c;weak修饰符是一种用于声明“弱引用”的关键字&#xff0c;其核心特性是不参与对象的引用计数管理&#xff0c;而且当被引用的对象被释…

【JVM篇10】:三种垃圾回收算法对比详解

文章目录1. 标记-清除算法2. 复制算法3. 标记-整理算法总结与面试要点在通过 可达性分析等算法识别出所有存活对象和垃圾对象后&#xff0c;垃圾收集器&#xff08;GC&#xff1a;Garbage Collector&#xff09;就需要执行回收操作来释放垃圾对象所占用的内存。以下是三种最基础…

JXD进步25.7.30

1.为啥是update&#xff0c;因为你if判断有问题。或者是你上来就给id赋值了。2. 这个是清空network历史3.断点位置打在这里&#xff1a;打在上面它进不来4.

Flutter开发实战之网络请求与数据处理

第6章:网络请求与数据处理 “数据是应用的血液,网络是连接世界的桥梁。” 在移动应用开发中,与服务器进行数据交互是必不可少的功能。无论是获取用户信息、提交表单数据,还是上传图片、下载文件,都离不开网络请求。本章将带你深入掌握Flutter中的网络编程技巧。 6.1 网络…

快速分页实现热点功能-索引和order by

需求:分页求出进三天的发布视频的权重热度 权重 / 衰减时间 衰减时间 当前时间 - 视频发布时间 小根堆来实现这个公式可以很好的利用半衰期来进行解决难点:如果一次性加载太多到springBoot服务器里面会造成堆内存占用过多&#xff0c;分页又有可能造成深分页问题&#xff0c;…

HAProxy(高可用性代理)

1 HAProxy 简介 HAProxy&#xff08; High Availability Proxy&#xff09;是一个高性能的负载均衡器和代理服务器&#xff0c;为基于 TCP 和 HTTP 的应用程序提供高可用性、负载平衡和代理&#xff0c;广泛应用于提高 web 应用程序的性能和可靠性。它支持多种协议&#xff0c…

Vulnhub靶场:ica1

一、信息收集nmap扫描一下IP。&#xff08;扫不出来的可以看一下前面几篇找ip的步骤&#xff09;下面给了框架的版本是9.2的&#xff0c;我们去kali里搜一下有没有已经公开的漏洞。searchsploit qdPM 9.2 locate 50176.txt more /usr/share/exploitdb/exploits/php/webapps/50…