AtCoder Beginner Contest 346 A - D

A - Adjacent Product

大意

给定一些数,输出它们两两之间的乘积

思路

直接模拟即可。

代码

#include <iostream>
#include <vector>
using namespace std;
int main(){int n;cin>>n;vector<int> a(n);for(auto &x: a) cin >> x;for(int i = 0; i< n - 1; i++) cout << a[i] * a[i+1] << " ";return 0;
}

B - Piano

大意

给定一个由\texttt{wbwbwwbwbwbw}无限拼接的字符串。

给定w,b,问是否由一个子串,其有 w个 \texttt{w}, b\texttt{b}

思路

枚举子串的起点,只有12种情况。

对于每一个可能的起点,统计其后的w+b个字符,看看是否满足上述需求即可。

时间复杂度O(12(w+b))

代码

#include<iostream>
#include<unordered_map>
using namespace std;int main(){int w, b;cin >> w >> b;int len = w + b;const string s = "wbwbwwbwbwbw";bool flag = false;for(int i = 0; i < s.size(); i++){unordered_map<char, int> mp;for(int j = i, cnt = 0; cnt < len; j = (j + 1) % s.size(), cnt++) mp[s[j]]++;if(mp['w'] == w && mp['b'] == b){flag = true;break;}}if(flag) cout << "Yes" << endl;else cout << "No" << endl;return 0;
}

C - Σ

大意

给定序列A,求[1,k]中所有数的和,但要排除A中出现的数字。

思路

首先1+2+...+k=\dfrac{k(k+1)}{2},算出后减去A中出现过的数即可。

注意要对A去重,或者使用set。

代码

#include<iostream>
#include<vector>
#include<set>
using namespace std;
typedef long long LL;int main(){ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);LL n, k;cin >> n >> k;vector<LL> a(n);for(auto &x: a) cin >> x;set<LL> b(a.begin(), a.end());LL ans = k * (k + 1) / 2;for(auto &x: b){if(x <= k) ans -= x;}cout << ans << endl;return 0;
}

D - Gomamayo Sequence

大意

给定一个01字符串S,对第i位取反需要 C_i的代价。

定义一个好的字符串,当且仅当只有一个相邻位置上的数字是相同的。

问将字符串变成好的字符串的最小代价。

思路

长度为n的好串只有n个,我们可以枚举所有的情况。

我们枚举相邻数字相同的位置,然后计算变成010101...101010...这两种情况的代价,取最小值。

可以设前缀和与后缀和数组pre_1,pre_2,suf_1,suf_2,事先计算所有前缀和后缀变成010101...101010...的代价,通过前缀代价+后缀代价,就可以得到当前枚举的情况的代价。

代码

#include<iostream>
#include<vector>
using namespace std;
#define int long long
typedef long long LL;
const int INF = 1e18 + 10;template<class T>
T min(T a, T b, T c){return min(min(a, b), c);
}signed main(){LL n;string s, t="01";cin >> n >> s;vector<LL> c(n);for(auto &x: c) cin>>x;vector<LL> pre1(n), pre2(n), suf1(n), suf2(n);for(int i = 0; i < n; i++){pre1[i] = (s[i] == t[i & 1]? c[i]: 0) + (i > 0? pre1[i - 1]: 0);pre2[i] = (s[i] == t[~i & 1]? c[i]: 0) + (i > 0? pre2[i - 1]: 0);}for(int i = n - 1; i >= 0; i--){suf1[i] = (s[i] == t[i & 1]? c[i]: 0) + (i < n - 1? suf1[i + 1]: 0);suf2[i] = (s[i] == t[~i & 1]? c[i]: 0) + (i < n - 1? suf2[i + 1]: 0);}LL ans = INF;for(int i = 0; i < n - 1; i++){ans = min(ans, pre1[i] + suf2[i + 1], pre2[i] + suf1[i + 1]);}cout << ans << endl;return 0;
}

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

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

相关文章

javase day11笔记

第十一天课堂笔记 构造代码块 { } 给 所有对象 共性特点 进行初始化操作 创建对象时在堆区对象中存放实例变量,同时执行构造代码块 执行顺序:静态代码块—>非静态代码块—>构造方法 继承★★★ 将多个类中相同的实例变量和实例方法 , 单独存放到一个类中,成为父类…

C++入门:类和对象(上)

类和对象重点解析 1.类的定义1.类的访问限定符及封装1.C实现封装的方式2.访问限定符注意 3.封装 2.类对象模型2.1类对象存储方式2.2类对象的大小2.2.1结构体内存对齐原则2.2.2为什么要内存对齐 3.this指针3.1this指针的引出3.2this指针的特性3.3this指针的存储3.4this指针可以为…

vs2019新建Qt工程中双击 .ui 文件无法打开

vs2019 中创建的 Qt 工程&#xff0c;在使用的过程中&#xff0c;经常会有&#xff1a;双击 .ui 文件&#xff0c;闪退的情况&#xff0c;也即 .ui 文件无法打开&#xff01; 针对该问题的详细解决步骤如下&#xff1a; 1、右击该 .ui 文件&#xff0c;选择“打开方式” 2、…

苍穹外卖笔记

苍穹外卖 DAY01nginx反向代理MD5加密yapi进行接口导入Swagger介绍 DAY02新增员工需求分析和设计写相关代码测试(1. 后端文档测试 2. 前后端联调代码完善 员工分页查询DAY01 02涉及到的知识 DAY01 nginx反向代理 MD5加密 拓展&#xff1a;spring security jwt 提供了更强大灵…

基于YOLOv8深度学习的橙子病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Java二阶知识点总结(七)SVN和Git

SVN 1、SVN和Git的区别 SVN是集中式的&#xff0c;也就是会有一个服务器保存所有代码&#xff0c;拉取代码的时候只能从这个服务器上拉取&#xff1b;Git是分布式的&#xff0c;也就是说每个人都保存有所有代码&#xff0c;如果要获取代码&#xff0c;可以从其他人手上获取SV…

Java秘笈

一、缩略 二、详版 【CDN分发】||----【跳板机】---SSH&#xff1a;(^_^) 管理员/运维Iptables【防火墙】要求&#xff1a;HA||----【等保系统】||----【蜜罐系统】【反向代理】Nginx/Lvs【静态服务器】【边际路由】要求&#xff1a;HA||Gateway/Zull【Api网关】要求&#xff1…

6. ping在windows中的常见用法

&#xff08;1&#xff09;ping简介 1.ping简介 &#xff08;2&#xff09;在windows上用法 1.直接ping 对方IP&#xff08;无参数时&#xff09; 2.ping -t IP (长ping) 3.ping -n 包数量 4.ping -l 字节大小 IP 5.如何批量的ping一个网段&#xff1f; &#xff08;1&a…

异步处理 (vue async和await)

出现这种情况可以是加载顺序的问题&#xff0c;加载没有完成就是显示数据了 试试 async和await async beforeOpen(done, type) {if (["edit", "view"].includes(type)) {await getDetail(this.form.id).then((res) > {this.form res.data.data;conso…

最好用的软件安装教程合集(Matlab\ Anaconda\Pytorch..)

MATLAB R2022b 安装教程 http://t.csdnimg.cn/dQ0Qwhttp://t.csdnimg.cn/dQ0Qw Anaconda安装教程 https://blog.csdn.net/fan18317517352/article/details/123035625https://blog.csdn.net/fan18317517352/article/details/123035625 Pytorch安装教程 https://blog.csdn.net…

PyQT5学习--新建窗体模板

目录 1 Dialog 2 Main Window 3 Widget Dialog 模板&#xff0c;基于 QDialog 类的窗体&#xff0c;具有一般对话框的特性&#xff0c;如可以模态显示、具有返回值等。 Main Window 模板&#xff0c;基于 QMainWindow 类的窗体&#xff0c;具有主窗口的特性&#xff0c;窗口…

【Unity】宏定义Scripting Define Symbols

1.宏的用处 我们在使用Unity开发的时候&#xff0c;经常需要根据不同环境执行不同的代码 比如安卓手机和苹果手机获取路径代码 这个时候&#xff0c;宏就派上用场了。 代码示例&#xff1a; //获取路径public string GtePath(){//不同平台&#xff0c;取不同的存储路径string…