ABC352编程笔记

ABC352 编程笔记

在这里插入图片描述
题意:输入,四个数 a , b , c , d a,b,c,d a,b,c,d,若 d d d c , d c,d c,d 之间,则输出 Yes,否则输出 No

正解:直接判断。

#include <bits/stdc++.h>
//#define int long long
using namespace std;void solve()
{int a,b,c,d;cin >> a >> b >> c >> d;if (d >= b && d <= c || d >= c && d <= b) cout << "Yes";else cout << "No";
}signed main()
{int TTT;
//	cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}

在这里插入图片描述
题意:有两个字符串 S , T S,T S,T,找出 T T T 里所有 S S S 的字符的下标,并输出。

正解:模拟。

#include <bits/stdc++.h>
//#define int long long
using namespace std;void solve()
{string s,t;cin >> s >> t;for (int i = 0,j = 0;i < t.size();i++)if (s[j] == t[i]) cout << i+1 << ' ',j++;
}signed main()
{int TTT;
//	cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}

在这里插入图片描述
题意:给出所有人的肩膀的海拔高度和头部的海拔高度,求出所有人叠高高后的最高海拔高度。

正解:贪心。

#include <bits/stdc++.h>
#define int long long
using namespace std;struct node
{int a,b;
}a[200010];
bool cmp(node a,node b)
{if (a.a == b.a) return a.b > b.b;return a.a > b.a;
}void solve()
{int n,sum = 0,mx = -1e18;cin >> n;for (int i = 1;i <= n;i++) cin >> a[i].a >> a[i].b,sum += a[i].a;sort(a+1,a+n+1,cmp);for (int i = 1;i <= n;i++){int now = sum - a[i].a + a[i].b;mx = max(mx,now);}cout << mx;
}signed main()
{int TTT;
//	cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}

在这里插入图片描述
题意:给你一个 1 1 1 n n n 的排列 p p p,找到一个长为 k k k 的子序列,满足子序列中元素重排后构成公差为 1 1 1 的等差数列,求子序列的最小跨度。

正解:用 p i p_i pi 表示 i i i 这个数在原数组里的下标,则只需算 min ⁡ ( p k − p 1 , p k + 1 − p 2 , p k + 2 − p 3 , … , p n − p n − k + 1 ) \min(p_k-p_1,p_{k+1}-p_2,p_{k+2}-p_3,\dots,p_n-p_{n-k+1}) min(pkp1,pk+1p2,pk+2p3,,pnpnk+1),并且让 p a − p a − k + 1 > 0 p_a-p_{a-k+1}>0 papak+1>0

#include <bits/stdc++.h>
#define int long long
using namespace std;int n,k;
int a[200010],b[200010]; void solve()
{cin >> n >> k;for (int i = 1;i <= n;i++) cin >> a[i],b[a[i]] = i;set <int> id; //记录选取的数字的下标,自动排序for (int i = 1;i <= k;i++) id.insert(b[i]);int ans = *id.rbegin() - *id.begin();for (int i = k+1;i <= n;i++){id.erase(b[i-k]);id.insert(b[i]);ans = min(ans,*id.rbegin() - *id.begin());}cout << ans;
}signed main()
{int TTT;
//	cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}

在这里插入图片描述
题意:

给你一个加权无向图 G G G,有 N N N 个顶点,编号为 1 1 1 N N N。最初, G G G 没有边。

您将执行 M M M 次操作来为 G G G 添加边。第 i i i 次操作 ( 1 ≤ i ≤ M ) (1\le i\le M) (1iM) 如下:

  • 给你一个由 K i K_i Ki 个顶点组成的顶点子集 S i = A i , 1 , A i , 2 , … , A i , K i S_i={A_{i,1}, A_{i,2},\dots,A_{i,K_i}} Si=Ai,1,Ai,2,,Ai,Ki。对于每一对 u , v u,v u,v,即 u , v ∈ S i u,v∈S_i u,vSi u < v u<v u<v,在顶点 u u u v v v 之间添加一条边,权重为 C i C_i Ci

执行所有 M M M 操作后,确定 G G G 是否相连。如果是,求 G G G 最小生成树中各条边的总重。

正解:

用 Kruskal 的原理:每次添加最小的边。把所有的边权种类从小到大排序后每次添加最小的边。

#include <bits/stdc++.h>
#define int long long
using namespace std;int n,m;
pair <int,vector<int> > a[666666];
int fa[666666];int find(int x) {return x == fa[x] ? x : fa[x] = find(fa[x]);}
int merge(int x,int y)
{int fx = find(x),fy = find(y);if (fx == fy) return 0;fa[fy] = fx;return 1;
}
bool cmp(pair<int,vector<int> > c,pair<int,vector<int> > b) {return c.first < b.first;}void solve()
{cin >> n >> m;for (int i = 1;i <= n;i++) fa[i] = i;for (int i = 1;i <= m;i++){int k,c;cin >> k >> c;vector <int> v(k);for (int i = 0;i < k;i++) cin >> v[i];a[i] = {c,v}; }sort(a+1,a+m+1,cmp);int ans = 0;for (int i = 1;i <= m;i++){int c = a[i].first;vector <int> v;for (int j = 0;j < a[i].second.size();j++) v.push_back(a[i].second[j]);int id = v[0];for (int j = 0;j < v.size();j++)if (merge(id,v[j]))ans += c;}for (int i = 1;i <= n;i++)if (find(1) != find(i)){cout << "-1\n";return ;}cout << ans << '\n';
}signed main()
{int TTT;
//	cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}

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

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

相关文章

vscode正则匹配技巧

写正则表达式 下面是匹配加粗的单词或空格 \*\*[a-zA-Z\s]*\*\*vscode提取加粗的内容 altenter&#xff0c;再ctrlC复制选中的内容出来

DDD面试题:DDD聚合和表的对应关系是什么 ?(来自蚂蚁面试)

尼恩说在前面&#xff1a; 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如字节、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; DDD 的外部接口调用&#xff0c;应该放在…

深入了解二叉搜索树:原理、操作与应用

文章目录 二叉搜索树二叉搜索树的操作1.查找操作2.插入操作3.查找最大值或者最小值4.删除操作5.前序中序后序遍历 总结 二叉搜索树 形如上图的二叉树就是二叉搜索树&#xff0c;接下来我们来具体阐述一下什么是二叉搜索树。 二叉搜索树的概念&#xff1a;满足左子树的值小于根…

经济学SSCI期刊,中科院3区,IF=2+,难度不大,收稿范围广泛!

一、期刊名称 Information Economics and Policy 二、期刊简介概况 期刊类型&#xff1a;SSCI 学科领域&#xff1a;经济学 影响因子&#xff1a;2.8 中科院分区&#xff1a;3区 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;选择开放出版需支付$3190 三、…

C++ | Leetcode C++题解之第78题子集

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> t;vector<vector<int>> ans;void dfs(int cur, vector<int>& nums) {if (cur nums.size()) {ans.push_back(t);return;}t.push_back(nums[cur]);dfs(cur 1, nums);t.po…

yum仓库和NFS网络共享服务

一、yum 1.1yum的定义 yum是一个基于RPM包&#xff0c;构建的软件更新机制&#xff0c;能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势&#xff0c;所以在安装操作系统的时…

Docker与Harbor:构建企业级私有Docker镜像仓库

目录 引言 一、本地私有仓库 &#xff08;一&#xff09;基本概述 &#xff08;二&#xff09;搭建本地私有仓库 1.下载registry镜像 2.启动容器 3.上传本地镜像 4.客户端下载镜像 二、Harbor简介 &#xff08;一&#xff09;什么是 Harbor &#xff08;二&#xff…

苹果15能用哪些充电宝?充电宝什么牌子好?好用充电宝排名

随着移动设备的普及和功能的不断强大&#xff0c;我们对于充电宝的需求也越来越高。尤其是对于苹果15用户来说&#xff0c;选择一款兼容性好、性能稳定的充电宝显得尤为重要。在市面上众多充电宝品牌中&#xff0c;如何选择适合苹果15的充电宝&#xff1f;究竟哪个牌子的充电宝…

在线扭蛋机小程序:商家稳占市场的新突破口

近几年&#xff0c;扭蛋机进入了爆发期&#xff0c;动漫、游戏的发展更是推动了市场的发展&#xff0c;我国扭蛋机正在蓬勃发展中。 不过&#xff0c;在市场规模扩大下&#xff0c;扭蛋机行业的竞争力也在同时加大&#xff0c;企业商家需要在市场竞争中寻求发展新思路&#xf…

C#进阶-OleDb操作Excel和数据库

在C#编程中&#xff0c;使用OleDb可以方便地实现对Excel文件和数据库的操作。本文探讨了在C#中使用OleDb技术操作Excel和数据库的策略。文章详述了OleDb的定义、配置环境的步骤&#xff0c;并通过实际代码示例演示了如何高效读写Excel文件和交互数据库。文中还评估了OleDb技术的…

KaiwuDB 参编的《分析型数据库技术要求》标准正式发布

近期&#xff0c;中国电子工业标准化技术协会正式发布团体标准《分析型数据库技术要求》&#xff08;项目号&#xff1a;T-CESA 2023-006&#xff09;。该标准由中国电子技术标准化研究院、KaiwuDB&#xff08;上海沄熹科技有限公司&#xff09; 等国内 16 家企业联合起草&…

AI图书推荐:给自媒体创作者的ChatGPT使用指南

你是否厌倦了花费数小时盯着空白屏幕&#xff0c;努力为你的内容想出新鲜点子&#xff1f;想要将你的写作提升到下一个水平&#xff1f;有了ChatGPT&#xff0c;你可以告别写作障碍、无休止的修订和浪费的时间。 在这本全面的指南中&#xff0c;你将学到关于ChatGPT你需要知道…

Hive两代命令行客户端(Hive、Beeline)

Hive命令行客户端 Hive有两个主要的客户端工具&#xff0c;分别是旧版的Hive CLI&#xff08;Command Line Interface&#xff09;和新版的Beeline。 1. Hive CLI&#xff1a; Hive CLI 是 Hive 最早期的命令行客户端工具&#xff0c;它使用 JDBC 连接到 Hive 服务器&#xff…

轻松管理文件夹批量重命名:学会用关键词批量替换文件夹名称技巧

随着计算机中存储的文件和文件夹数量不断增加&#xff0c;如何有效地管理和组织它们变得尤为重要。批量重命名文件夹是提升文件管理效率的关键步骤之一。而利用云炫文件管理器中关键词批量替换文件夹名称的技巧&#xff0c;则可以帮助我们更快速地完成这一任务。 关键词批量替…

国内首发 | CSA大中华区启动《AI安全产业图谱(2024)》调研

在人工智能&#xff08;AI&#xff09;技术的快速发展浪潮中&#xff0c;AI安全已成为全球关注的焦点。为应对AI安全带来的挑战&#xff0c;确保AI技术的健康发展&#xff0c;全球范围内的研究机构、企业和技术社区都在积极探索解决方案。 在这一背景下&#xff0c;CSA大中华区…

什么是短信群发上行和下行

短信群发是一种广泛应用于商业和个人通信的技术&#xff0c;通过一次多条的方式&#xff0c;可以快速高效地传递信息。在实际的群发过程中&#xff0c;会涉及到上行和下行的概念。本文将详细介绍什么是短信群发上行和下行&#xff0c;并解释它们的应用。 什么是短信群发上行 群…

面试中算法(使用栈实现队列)

使用栈来模拟一个队列&#xff0c;要求实现队列的两个基本操作:入队、出队。 栈的特点&#xff1a;先入后出&#xff0c;出入元素都是在同一端&#xff08;栈顶&#xff09;。 队列的特点&#xff1a;先入先出&#xff0c;出入元素是在两端&#xff08;队头和队尾)。 分析&…

OKHTTP 3.12.0 以后版本 headers 中不可携带中文

今天遇到的报错&#xff1a; java.lang.llegalArgumentException: Unexpected char 0x957f at 0 in x-brand value: 电视堆栈 okhttp3.Headers.checkValue(Headers.java:272) okhttp3.Headers$Builder.add(Headers.java:312) okhttp3.Request$Builder.addHeader(Request.iava:…

MySQL数据库——基础事务操作-BEGIN-COMMIT-ROLLBACK

DDL CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 学号,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2) DEFAU…

内存卡不小心格式化了怎么办?3个方法解决数据丢失问题!

“很奇怪&#xff0c;我的内存卡不小心中病毒了&#xff0c;刚刚在清理病毒时不小心把内存卡格式化了。我保存了很多重要的数据在里面&#xff0c;还有方法可以恢复这些数据吗&#xff1f;” 在数字设备日益普及的今天&#xff0c;内存卡已成为我们存储和传输数据的重要工具。但…