ABC352编程笔记

news2024/11/15 21:56:30

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.coloradmin.cn/o/1679841.html

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

相关文章

大数据比赛-环境搭建(二)

一、ubuntu安装google 1、下载google的Linux安装版 链接&#xff1a;https://pan.baidu.com/s/1w4Hsa1wbJDfC95fX2vU_1A 提取码&#xff1a;xms6 或者&#xff1a;Google Chrome 64bit Linux版_chrome浏览器,chrome插件,谷歌浏览器下载,谈笑有鸿儒 (chromedownloads.net) …

docker-java 操作docker

部署docker 10分钟学会Docker的安装和使用_docker安装-CSDN博客文章浏览阅读2.5w次&#xff0c;点赞44次&#xff0c;收藏279次。文章目录Docker简介Docker安装Windows安装Linux安装CentOS安装Ubuntu安装最近花了些时间学习docker技术相关&#xff0c;在此做一些总结&#xff0…

静态IP代理:网络世界的隐秘通道

在数字化时代&#xff0c;网络安全和隐私保护日益受到重视。静态IP代理作为一种网络服务&#xff0c;为用户提供了一个稳定且可预测的网络连接方式&#xff0c;同时保护了用户的在线身份。本文将从五个方面深入探讨静态IP代理的概念、优势、应用场景、技术实现以及选择时的考量…

【传知代码】VRT: 关于视频修复的模型(论文复现)

前言&#xff1a;随着数字媒体技术的普及&#xff0c;制作和传播视频内容变得日益普遍。但是&#xff0c;视频中由于多种因素&#xff0c;例如传输、存储和录制设备等&#xff0c;经常出现质量上的问题&#xff0c;如图像模糊、噪声干扰和低清晰度等。这类问题对用户的体验和观…

【JAVA】嵌入式软件工程师-2025校招必备-详细整理

一、Java 基础 1.JDK 和 JRE 有什么区别&#xff1f; jdk&#xff1a;java development kit jre&#xff1a;java runtime Environment jdk是面向开发人员的&#xff0c;是开发工具包&#xff0c;包括开发人员需要用到的一些类。 jre是java运行时环境&#xff0c;包括java虚拟机…

困惑点记录

【第十章 总结思考】CIM之我见 - 知乎

STK中的光照计算模型

本文简要阐述STK中光照计算的模型。 在航天任务中&#xff0c;通常需要分析地面站、飞行器在一定时间内的光照情况&#xff0c;具体包括&#xff1a; 地面站处在光照区和阴影区的具体时间范围&#xff1b;考虑地形遮挡后&#xff0c;地面站的光照区和阴影区的变化情况&#x…

解决kali Linux安装后如何将语言修改为中文

开启虚拟机 用root用户进入终端 进入终端执行dpkg-reconfigure locales命令 选择en_US.UTF-8 UTF-8选项&#xff0c;按空格键将其取消。 选择zh_CN.UTF-8 UTP-8&#xff0c;按空格选择&#xff0c;按tab键选择ok。 选择zh_CN.UTF-8字符编码&#xff0c;按tab键选择ok&#xff0…

【漏洞复现】Secnet-智能路由系统 actpt_5g.data信息泄露

0x01 产品简介 Secnet安网智能AC管理系统是广州安网通信技术有限公司(简称“安网通信”)的无线AP管理系统 0x02 漏洞描述 Secnet智能路由系统 acipt 5g.data 接口存在信息泄露漏洞&#xff0c;未经身份验证的远程攻击者可以利用此漏洞获取系统账户名密码等重要凭据&#xff…

社区服务用工具建立与居民的强关系

在数字化时代的浪潮下&#xff0c;社区服务不再局限于传统的面对面交流模式&#xff0c;而是借助互联网医疗健康服务应用&#xff0c;尤其是智慧康养服务平台&#xff0c;构建起了与居民之间更为紧密、便捷的联系。这种新型的社区服务模式&#xff0c;不仅提升了服务效率&#…

wsl2安装rancher并导入和创建k8s集群

环境准备 安装wsl2点击此文]ubuntu20.04安装docker 点击此文,安装完成后docker镜像仓库改成阿里云镜像加速地址.如果不熟请点击此文 docker 安装rancher 启动wsl,根据官方文档以root身份执行 sudo docker run -d --restartunless-stopped -p 80:80 -p 443:443 --privileged …

第13节 第二种shellcode编写实战(2)

我最近在做一个关于shellcode入门和开发的专题课&#x1f469;&#x1f3fb;‍&#x1f4bb;&#xff0c;主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料&#xff0c;内容里面的每一个环境我都亲自测试实操过的记录&#xff0c;有需要的小伙伴可以参考…

错误: 找不到或无法加载主类问题(已解决)

今天在虚拟机中安装了idea2023.2的版本&#xff0c;运行代码时发现错误找不到主类&#xff01; 直接说结论&#xff1a; 我先clean了一下target&#xff0c;然后重新build&#xff0c;发现maven报错了&#xff0c;idea2023.2默认使用了内置的maven&#xff0c;然后我切换了一下…

Shell之(数组)

目录 一、shell数组 1.数组的定义 2.定义数组的方法 第一种 第二种 第三种 第四种 3.数组分片 4. 数组字符替换 临时替换 永久替换 5.删除数组 删除指定的下标 删除整组 6.数组遍历和重新定义 7.数组追加元素 方式一&#xff1a;指定位置添加 方法二&a…

【JAVA入门】Day05 - 面向对象

【JAVA入门】Day05 - 面向对象 文章目录 【JAVA入门】Day05 - 面向对象一、对象的设计和使用1.1 类和对象1.2 类的分类 二、封装三、private 关键字四、this 关键字五、构造方法六、JavaBean七、对象的内存图7.1 一个对象的内存图7.2 两个对象的内存图7.3 两个引用指向同一个对…

文心一言 VS 讯飞星火 VS chatgpt (252)-- 算法导论18.2 5题

五、因为叶结点无需指向孩子结点的指针&#xff0c;那么对同样大小的磁盘页面&#xff0c;可选用一个与内部结点不同的(更大的) t 值。请说明如何修改 B 树的创建和插人过程来处理这个变化。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 当我们在B树&#xff…

低空经济:无人机竞赛详解

无人机竞赛市场近年来呈现出蓬勃发展的态势&#xff0c;其市场价值不仅体现在竞赛本身&#xff0c;还体现在推动无人机技术创新、拓展应用场景以及促进产业链发展等多个方面。 一、比赛项目介绍 无人机竞赛通常分为多个项目&#xff0c;包括竞速赛、技巧赛、航拍赛等。每个项目…

slugify,slug格式转换工具

目录 前言 安装 特性 基本功能 生成简单的Slug 处理特殊字符 Unicode支持 高级功能 自定义替换规则 过滤停用词 使用不同的分隔符 处理多种语言 实际应用场景 网站和博客的SEO优化 电子商务平台的产品链接 数据清洗和预处理 总结 前言 在Web开发中&#xff0c;生成易于…

vm 虚拟机 Debian12 开启 root、ssh 登录功能

前言&#xff0c;安装的时候语言就选中文就好了。选择中文&#xff0c;在安装的时候就可以选择国内 163 的源。 开启 ssh 功能 先提权&#xff0c;用 root 账户 su安装 ssh 安装 ssh-server apt install openssh-server启动 ssh systemctl start ssh查看 ssh 状态 systemctl st…