ABC342 题解

ABC342 题解

A

Description

给定一个串 s s s,求与 s s s 中其它字符不同的唯一字符的编号。

Solution

直接把 s s s 存到 t t t 里排序(确实,sort(t.begin(), t.end()) 就可以),首尾特判再到 s s s 里查一下就可以了。

Code

void solve(int testcase, ...){init_vars();string s; cin >> s;string t = s; sort(t.begin(), t.end());char ans;if(t[0] != t[1]) ans = t[0];else ans = t[t.length() - 1];for(int i = 0; i < s.length(); i++){if(s[i] == ans) cout << i + 1 <<endl;}
}

B

Description

给定一个数列 a a a,表示 b a i = i \displaystyle{b_{a_i} = i} bai=i

给定 q q q 次查询 x x x y y y,求 b x b_x bx 是否小于 b y b_y by

Solution

比 A 还简单,直接模拟。

Code

int p[201];void solve(int testcase, ...){init_vars();int n; cin >> n;for(int i = 1; i <= n; i++){int x; cin >> x; p[x] = i;}int q; cin >> q;for(int i = 0; i < q; i++){int a, b; cin >> a >> b;if(p[a] < p[b]) cout << a << endl;else cout << b << endl;}
}

C

Description

给定一个串和 q q q 个操作,每次操作将一字符换成另一个。

问最后的字符串。

Solution

维护一个 az 的表。

暴力(当然不是那种 bt)的复杂度是 O ( 26 ⋅ n ) O(26\cdot n) O(26n)

Code

void solve(int testcase, ...){init_vars();int n; cin >> n;string s; cin >> s;cin >> n;int bucket[26];for(int i = 0; i < 26; i++) bucket[i] = i;for(int i = 0; i < n; i++){char u, v; cin >> u >> v;u -= 'a', v -= 'a';for(int j = 0; j < 26; j++){if(bucket[j] == u) bucket[j] = v;}}for(int i = 0; i < s.length(); i++){cout << (char)('a' + bucket[s[i] - 'a']);}cout << endl;
}

D

Description

给定数列 a a a,求 ( i , j ) (i,j) (i,j) 的个数( i < j i<j i<j),满足 a i a j = x 2 ( x ∈ Z ) a_ia_j=x^2\ (x\in \Z) aiaj=x2 (xZ)

Solution

对于每个数求最小的数,使其满足相乘后乘积是完全平方数,记为 f ( x ) f(x) f(x)

例如 45 × 5 = 1 5 2 45\times 5=15^2 45×5=152,所以 f ( 45 ) = 5 f(45)=5 f(45)=5

可以证明, f f f 值相等的两个数乘积才会完全平方。(请读者自行证明)

注意特判 0 0 0 的情况!

Code

int a[200001], b[200001];int calc(int x){if(x == 0) return 0;vector<pair<int, int> > vec;for(int i = 2; i * i <= x; i++){if(x % i == 0){vec.push_back(make_pair(i, 0));while(x % i == 0){vec[vec.size() - 1].second++;x /= i;}}}if(x) vec.push_back(make_pair(x, 1));int ans = 1;for(int i = 0; i < vec.size(); i++){if(vec[i].second % 2) ans *= vec[i].first;}return ans;
}void solve(int testcase, ...){init_vars();int n; cin >> n;for(int i = 0; i < n; i++){cin >> a[i];a[i] = calc(a[i]);}map<int, int> mp;for(int i = 0; i < n; i++) mp[a[i]]++;int ans = 0, tot = 0;for(int i = 0; i < n; i++){if(a[i] == 0){ans += n - tot - 1, tot++;continue;}mp[a[i]]--;ans += mp[a[i]];}cout << ans << endl;
}

E

Description

自己看去。

Solution

按着 Dij 的方法做,笔者没有能力加以证明

复杂度 O ( Dij ) O(\text{Dij}) O(Dij)

Code

vector<pair<int, node> > gv[200001];int dis[200001], vis[200001];inline void add_edge(int u, int v, int l, int d, int k, int c){gv[u].push_back(make_pair(v, (node){l, d, k, c}));
}void dij(int st){memset(dis, -1, sizeof(dis));priority_queue<pair<int, int> > pq;pq.push(make_pair(LONG_LONG_MAX, st));dis[st] = LONG_LONG_MAX;while(pq.size()){int x = pq.top().second, y = pq.top().first;pq.pop();if(vis[x]) continue;vis[x] = 1;for(auto v : gv[x]){if(y - v.second.l - v.second.c < 0) continue;int z = min((y - v.second.l - v.second.c) / v.second.d * v.second.d + v.second.l, \v.second.l + (v.second.k - 1) * v.second.d);
//			cout << v.first << " " << z << endl;if(z > dis[v.first]){dis[v.first] = z;pq.push(make_pair(z, v.first));}}}
}void solve(int testcase, ...){init_vars();int n, m; cin >> n >> m;for(int i = 0; i < m; i++){int l, d, k, c, a, b;cin >> l >> d >> k >> c >> a >> b;add_edge(b, a, l, d, k, c);}dij(n);for(int i = 1; i < n; i++){if(dis[i] == -1) cout << "Unreachable" << endl;else cout << dis[i] << endl;}
}

F&G

F 建议看下 Pigeon 的题解。

G 可持久化,启动!

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

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

相关文章

计算机设计大赛 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…

office word保存pdf高质量设置

1 采用第三方pdf功能生成 分辨率越大质量越好

MySQL集群 双主架构(配置命令)

CSDN 成就一亿技术人&#xff01; 今天刚开学第一天给大家分享一期&#xff1a;MySQL集群双主的配置需求和命令 CSDN 成就一亿技术人&#xff01; 神秘泣男子主页&#xff1a;作者首页 <———— MySQL专栏 &#xff1a;MySQL数据库专栏<———— MySQL双主是一…

学习笔记丨Shell

Usage of shell script References: Learn Shell, Shell 教程 | 菜鸟教程 The first line of shell script file begins with #!, followed by the full path where the shell interpreter is located. For example, #!/bin/bashTo find out the currently active shell and i…

python语言常见面试题:描述Python中的字典(Dictionary)和集合(Set)之间的区别。

Python中的字典&#xff08;Dictionary&#xff09;和集合&#xff08;Set&#xff09;是两种非常有用的数据结构&#xff0c;它们之间有一些明显的区别。 字典&#xff08;Dictionary&#xff09; 字典是一种无序的键值对集合。在字典中&#xff0c;每个键&#xff08;key&a…

Oracle 基础表管理(Heap-Organized Table Management)

表是数据库中负责数据存储的对象&#xff0c;在RDBMS中&#xff0c;数据以行、列的形式存储在表中。Oracle中表有很多种类型&#xff0c;最基础且应用最常用的类型就是堆表&#xff08;Heap-Organized Table&#xff09;&#xff0c;本文列举了Oracle堆表的常用管理操作。 一、…

Cpython和Jpython区别

Cpython和Jpython是Python语言的两种不同实现方式&#xff0c;它们之间存在一些关键的区别。 实现语言&#xff1a;Cpython是用C语言实现的&#xff0c;而Jpython则是用Java语言实现的。这意味着Cpython的源代码是用C语言编写的&#xff0c;而Jpython的源代码是用Java语言编写的…

pytorch --反向传播和优化器

1. 反向传播 计算当前张量的梯度 Tensor.backward(gradientNone, retain_graphNone, create_graphFalse, inputsNone)计算当前张量相对于图中叶子节点的梯度。 使用反向传播&#xff0c;每个节点的梯度&#xff0c;根据梯度进行参数优化&#xff0c;最后使得损失最小化 代码…

React Hooks概述及常用的React Hooks介绍

Hook可以让你在不编写class的情况下使用state以及其他React特性 useState ● useState就是一个Hook ● 通过在函数组件里调用它来给组件添加一些内部state,React会在重复渲染时保留这个state 纯函数组件没有状态&#xff0c;useState()用于设置和使用组件的状态属性。语法如下…

Qt的QThread、QRunnable和QThreadPool的使用

1.相关描述 随机生产1000个数字&#xff0c;然后进行冒泡排序与快速排序。随机生成类继承QThread类、冒泡排序使用moveToThread方法添加到一个线程中、快速排序类继承QRunnable类&#xff0c;添加到线程池中进行排序。 2.相关界面 3.相关代码 widget.cpp #include "widget…

实验室储样瓶耐强酸强碱PFA材质试剂瓶适用新材料半导体

PFA&#xff0c;全名可溶性聚四氟乙烯&#xff0c;试剂瓶又叫取样瓶、样品瓶、广口瓶、储样瓶等。主要用于痕量分析、同位素分析等实验室&#xff0c;广泛应用于新兴的半导体、新材料、多晶硅、硅材、微电子等行业。 规格参考&#xff1a;30ml、60ml、100ml、125ml、250ml、30…

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 参考博文: 1.C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 2.Linux笔记之LD_LIBRARY_PATH详解 3.qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径 c…

2024年湖北省职业院校技能大赛 “信息安全管理与评估”改革赛样题理论知识

理论技能与职业素养&#xff08;100分&#xff09; 2023年全国职业院校技能大赛&#xff08;高等职业教育组&#xff09; “信息安全管理与评估”理论技能 【注意事项】 1.理论测试前请仔细阅读测试系统使用说明文档&#xff0c;按提供的账号和密码登录测试系统进行测试&…

如何将本地项目上传到github上

将本地项目上传到github上有很多种方法&#xff0c;这里只讲述我认为最简单快捷的一种&#xff0c;先在github中创建一个仓库&#xff0c;接着在本地建文件夹&#xff0c;用命令行将项目推送到本地仓库&#xff0c;然后连接远程仓库&#xff0c;将本地项目推送到远程仓库上。要…

时间序列分析实战(四):Holt-Winters建模及预测

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

pytorch梯度累积

梯度累加其实是为了变相扩大batch_size&#xff0c;用来解决显存受限问题。 常规训练方式&#xff0c;每次从train_loader读取出一个batch的数据&#xff1a; for x,y in train_loader:pred model(x)loss criterion(pred, label)# 反向传播loss.backward()# 根据新的梯度更…

Jessibuca 插件播放直播流视频

jessibuca官网&#xff1a;http://jessibuca.monibuca.com/player.html git地址&#xff1a;https://gitee.com/huangz2350_admin/jessibuca#https://gitee.com/link?targethttp%3A%2F%2Fjessibuca.monibuca.com%2F 项目需要的文件 1.播放组件 <template ><div i…

3. Java中的锁

文章目录 乐观锁与悲观锁乐观锁(无锁编程,版本号机制)悲观锁两种锁的伪代码比较 通过 8 种锁运行案例,了解锁锁相关的 8 种案例演示场景一场景二场景三场景四场景五场景六场景七场景八 synchronized 有三种应用方式8 种锁的案例实际体现在 3 个地方 从字节码角度分析 synchroni…

CentOS 7全系列免费

CentOS 7 全系列免费&#xff1a;桌面版、工作站版、服务器版等等………… 上文&#xff0c;关于CentOS 7这句话&#xff0c;被忽略了。 注意版本&#xff1a;知识产权、网络安全。

python opencv实现图片清晰度增强

目录 一:直方图处理 二:图片生成 三:处理图片 直方图均衡化:直方图均衡化是一种增强图像对比度的方法,特别是当图像的有用数据的对比度接近背景的对比度时。OpenCV中的cv2.equalizeHist()函数可以实现直方图均衡化。 一:直方图处理 计算并返回一个图像的灰度直方图,…