【每日一题 | 2025年5.5 ~ 5.11】搜索相关题

news2025/7/18 21:12:21

在这里插入图片描述

个人主页:Guiat
归属专栏:每日一题

在这里插入图片描述

文章目录

  • 1. 【5.5】P3717 [AHOI2017初中组] cover
  • 2. 【5.6】P1897 电梯里的尴尬
  • 3. 【5.7】P2689 东南西北
  • 4. 【5.8】P1145 约瑟夫
  • 5. 【5.9】P1088 [NOIP 2004 普及组] 火星人
  • 6. 【5.10】P1164 小A点菜
  • 7. 【5.11】P1019 [NOIP 2000 提高组] 单词接龙

正文

1. 【5.5】P3717 [AHOI2017初中组] cover

题目链接:https://www.luogu.com.cn/problem/P3717

【分析】
暴力搜索 + 两点距离公式,时间复杂度:O(m * n ^ 2)。

【AC_Code】

#include <iostream>
#include <cmath>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

bool vis[105][105]; int ans;

void solve()
{
	int n, m, r; cin >> n >> m >> r;
	while (m --)
	{
		int x, y; cin >> x >> y;
		for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++)
		{
			double dis = sqrt(pow((i - x), 2) + pow((j - y), 2));
			if (dis <= r) vis[i][j] = true;
		}
	}
	for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++) if (vis[i][j]) ans ++;
	cout << ans << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve();
	
	return 0;
}

2. 【5.6】P1897 电梯里的尴尬

题目链接:https://www.luogu.com.cn/problem/P1897

【分析】

先读懂题目样例,之后按题意模拟即可,具体看代码。

在这里插入图片描述
在这里插入图片描述

【AC_Code】

#include <iostream>
#include <algorithm>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

const int N = 1e5 + 10; int a[N], now, ans;

void solve()
{
	int n; cin >> n; for (int i = 0; i < n; i ++) cin >> a[i];
	sort(a, a + n);
	for (int i = 0; i < n; )
	{
		int tar = a[i];
		if (tar > now) ans += (tar - now) * 6;
		else if (tar < now) ans += (now - tar) * 4;
		int cnt = 0;
		while (i < n && a[i] == tar) cnt ++, i ++;
		ans += 5; ans += cnt; now = tar;
	} ans += now * 4;
	cout << ans << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve();
	
	return 0;
}

3. 【5.7】P2689 东南西北

题目链接:https://www.luogu.com.cn/problem/P2689

【分析】
按题意模拟即可,注意逻辑,属于简单题。

【AC_Code】

#include <iostream>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

int ans;

void solve()
{
	int x1, y1, x2, y2, T; cin >> x1 >> y1 >> x2 >> y2 >> T;
	while (T --)
	{
		char c; cin >> c;
		if (c == 'N' && y1 < y2) y1 ++, ans ++;
		else if (c == 'S' && y1 > y2) y1 --, ans ++;
		else if (c == 'W' && x1 > x2) x1 --, ans ++;
		else if (c == 'E' && x1 < x2) x1 ++, ans ++;
		if (x1 == x2 && y1 == y2) { cout << ans << '\n'; return ; }
	}
	cout << -1 << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve();
	
	return 0;
}

4. 【5.8】P1145 约瑟夫

题目链接:https://www.luogu.com.cn/problem/P1145

【分析】

在这里插入图片描述
pos(删除位置)
4 = (0 + 4) % (2 * 3 - 0)
3 = (4 + 4) % (2 * 3 - 1)
3 = (3 + 4) % (2 * 3 - 2)
=> pos = (pos + m - 1) % (2 * k - i)

【AC_Code】

#include <iostream>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

void solve()
{
	int k; cin >> k; int m = k + 1;
	while (1)
	{
		int pos = 0; bool flag = true;
		for (int i = 0; i < k; i ++)
		{
			pos = (pos + m - 1) % (2 * k - i);
			if (pos < k) { flag = false; break; }
		}
		if (flag) { cout << m << '\n'; return ; }
		m ++;
	}
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve();
	
	return 0;
}

5. 【5.9】P1088 [NOIP 2004 普及组] 火星人

题目链接:https://www.luogu.com.cn/problem/P1088

【分析】
相当于一个全排列模版:求输入的整数序列进行 m 次字典序下一个排列的变换。

【AC_Code】

#include <iostream>
#include <algorithm>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

const int N = 1e4 + 10; int a[N];

void solve()
{
	int n, m; cin >> n >> m;
	for (int i = 0; i < n; i ++) cin >> a[i];
	for (int i = 0; i < m; i ++) next_permutation(a, a + n);
	for (int i = 0; i < n; i ++) cout << a[i] << ' '; cout << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve();
	
	return 0;
}

6. 【5.10】P1164 小A点菜

题目链接:https://www.luogu.com.cn/problem/P1164

【分析】
01背包的变种,构建二维dp矩阵,f[i][j]表示前i个菜品恰好花费j元的方案数,二维可以优化到一维,这里采用二维解法。

【AC_Code】

#include <iostream>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

int a[110], f[110][10010];

void solve()
{
	int n, m; cin >> n >> m; for (int i = 1; i <= n; i ++) cin >> a[i];
	for (int i = 0; i <= n; i ++) f[i][0] = 1;
	for (int i = 1; i <= n; i ++) for (int j = 1; j <= m; j ++)
	{
		f[i][j] += f[i - 1][j];
		if (j >= a[i]) f[i][j] += f[i - 1][j - a[i]];
	}
	cout << f[n][m] << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve();
	
	return 0;
}

7. 【5.11】P1019 [NOIP 2000 提高组] 单词接龙

题目链接:https://www.luogu.com.cn/problem/P1019

【分析】
考察搜索+字符串处理。

【AC_Code】

#include <iostream>
#include <string>
#define IOS ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

string s[25]; int n, vis[25], ans;

string check(string s1, string s2)
{
	for (int i = 1; i < s1.length() && i < s2.length(); i ++)
	{
		if (s1.substr(s1.length() - i, i) == s2.substr(0, i))
			return (s1.substr(0, s1.length() - i) + s2);
	}
	return "0";
}

void dfs(string drag)
{
	if (drag.size() > ans) ans = drag.size();
	for (int i = 0; i < n; i ++)
	{
		if (vis[i] == 2) continue;
		if (check(drag, s[i]) != "0") { vis[i] ++; dfs(check(drag, s[i])); vis[i] --; }
	}
}

void solve()
{
	cin >> n; for (int i = 0; i < n; i ++) cin >> s[i];
	char c; cin >> c;
	for (int i = 0; i < n; i ++)
	{
		if (s[i][0] == c) { vis[i] ++; dfs(s[i]); vis[i] --; }
	}
	cout << ans << '\n';
}

int main()
{
	IOS int _ = 1;   // cin >> _;
	while (_ --) solve();
	
	return 0;
}

结语
感谢您的阅读!期待您的一键三连!欢迎指正!

在这里插入图片描述

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

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

相关文章

多模态大语言模型arxiv论文略读(六十九)

Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ➡️ 论文标题&#xff1a;Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ➡️ 论文作者&#xff1a;Yue Zha…

精讲C++四大核心特性:内联函数加速原理、auto智能推导、范围for循环与空指针进阶

前引&#xff1a;在C语言长达三十余年的演进历程中&#xff0c;每一次标准更新都在试图平衡性能与抽象、控制与安全之间的微妙关系。从C11引入的"现代C"范式开始&#xff0c;开发者得以在保留底层控制能力的同时&#xff0c;借助语言特性大幅提升代码的可维护性与安全…

【HarmonyOS 5】鸿蒙中常见的标题栏布局方案

【HarmonyOS 5】鸿蒙中常见的标题栏布局方案 一、问题背景&#xff1a; 鸿蒙中常见的标题栏&#xff1a;矩形区域&#xff0c;左边是返回按钮&#xff0c;右边是问号帮助按钮&#xff0c;中间是标题文字。 那有几种布局方式&#xff0c;分别怎么布局呢&#xff1f;常见的思维…

Day22 Kaggle泰坦尼克号训练实战

​ 作业 自行学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码 kaggle泰坦里克号人员生还预测 一、流程 思路概述 数据加载 &#xff1a;读取泰坦尼克号的训练集和测试集。数据预处理 &#xff1a;处理缺失值、对分类变量进行编码、…

深入浅出之STL源码分析7_模版实例化与全特化

1.引言 显示实例话和全特化的区别&#xff0c;之前我们在讨论类模版的时候&#xff0c;讨论过&#xff0c;他俩不是同一个概念&#xff0c;类模版中你如果全特化了&#xff0c;还是需要实例化才能生成代码&#xff0c;但是对于函数模版&#xff0c;这个是不同的&#xff0c;函…

2025 Mac常用软件安装配置

1、homebrew 2、jdk 1、使用brew安装jdk&#xff1a; brew install adoptopenjdk/openjdk/adoptopenjdk8 jdk默认安装位置在 /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home 目录。 2、配置环境变量&#xff1a; vim ~/.zshrc# Jdk export JAVA_HOM…

容器技术 20 年:颠覆、重构与重塑软件世界的力量

目录 容器技术发展史 虚拟化技术向容器技术转变 Docker的横空出世 容器编排技术与Kubernetes 微服务的出现与Istio 工业标准的容器运行时 容器技术与 DevOps 的深度融合​ 无服务架构推波助澜 展望未来发展方向 从 20 世纪硬件虚拟化的笨重&#xff0c;到操作系统虚拟…

cmake:test project

本文主要探讨cmake在测试和项目中的应用。 add_test add_test(NAME <name> COMMAND <command> [<arg>...] [CONFIGURATIONS <config>...] [WORKING_DIRECTORY <dir>] [COMMAND_EXPAND_LISTS])  add_test(NAME test_uni COMMAND $<TARGET_F…

C++开发过程中的注意事项详解

目录 C++开发过程中的注意事项详解 一、内存管理:避免泄漏与资源浪费 1.1 使用智能指针管理动态内存 1.2 避免手动内存管理的陷阱 1.3 利用RAII机制管理资源 1.4 容器与内存分配 二、安全性:防御攻击与未定义行为 2.1 输入验证与安全编码 2.2 使用安全的通信协议 2…

第六天:Java数组

数组 数组概述 数组是相同类型数据的有序集合。数组中的元素可以是任意数据类型&#xff0c;包括基本类型和引用类型数组描述是相同类型的若干个数据&#xff0c;按照一定的先后顺序排列组合而成。数组下标从0开始。 数组声明与创建 数组的声明 int[] nums;//声明一个数组…

李沐动手深度学习(pycharm中运行笔记)——09.softmax回归+图像分类数据集+从零实现+简洁实现

09.softmax回归图像分类数据集从零实现简洁实现&#xff08;与课程对应&#xff09; 目录 一、softmax回归 1、回归 vs 分类 2、经典分类数据集&#xff1a; 3、从回归到分类——均方损失 4、从回归到多类分类——无校验比例 5、从回归到多类分类——校验比例 6、softmax和…

Qt获取CPU使用率及内存占用大小

Qt 获取 CPU 使用率及内存占用大小 文章目录 Qt 获取 CPU 使用率及内存占用大小一、简介二、关键函数2.1 获取当前运行程序pid2.2 通过pid获取运行时间2.3 通过pid获取内存大小 三、具体实现五、写在最后 ​ 一、简介 近期在使用软件的过程中发现一个有意思的东西。如下所示&a…

嵌入式学习笔记 - 运算放大器的共模抑制比

一 定义 共模抑制比&#xff08;Common Mode Rejection Ratio, ‌CMRR‌&#xff09;是衡量差分放大器&#xff08;或差分电路&#xff09;抑制共模信号能力的关键指标。它在电子工程中尤为重要&#xff0c;特别是在需要处理微弱信号或对抗环境噪声的场景中。 核心概念 ‌共…

牛客周赛 Round 92-题解

牛客周赛 Round 92-题解 A-小红的签到题 code #include<iostream> #include<string> using namespace std; string s; int main() {int n;cin >> n;cout << "a_";for (int i 0; i < n - 2; i )cout << b;return 0; }B-小红的模…

【PVE】ProxmoxVE8虚拟机,存储管理(host磁盘扩容,qcow2/vmdk导入vm,vm磁盘导出与迁移等)

【PVE】ProxmoxVE8虚拟机&#xff0c;存储管理&#xff08;host磁盘扩容&#xff0c;qcow2/vmdk导入vm&#xff0c;vm磁盘导出与迁移等&#xff09; 文章目录 1、host 磁盘扩容2、qcow2/vmdk导入vm3、vm 磁盘导出与迁移 1、host 磁盘扩容 如何给host扩容磁盘&#xff0c;如增加…

Umi+React+Xrender+Hsf项目开发总结

一、菜单路由配置 1.umirc.ts 中的路由配置 .umirc.ts 文件是 UmiJS 框架中的一个配置文件&#xff0c;用于配置应用的全局设置&#xff0c;包括但不限于路由、插件、样式等。 import { defineConfig } from umi; import config from ./def/config;export default defineCon…

C# Newtonsoft.Json 使用指南

Newtonsoft.Json (也称为 Json.NET) 是一种适用于 .NET 的常用高性能 JSON 框架&#xff0c;用于处理 JSON 数据。它提供了高性能的 JSON 序列化和反序列化功能。 安装 通过 NuGet 安装 基本用法 1. 序列化对象为 JSON 字符串 using Newtonsoft.Json;var product new Prod…

数字电子技术基础(五十七)——边沿触发器

目录 1 边沿触发器 1.1 边沿触发器简介 1.1.1 边沿触发器的电路结构 1.3 边沿触发的D触发器和JK触发器 1.3.1 边沿触发的D型触发器 1.3.2 边沿触发的JK触发器 1 边沿触发器 1.1 边沿触发器简介 对于时钟触发的触发器来说&#xff0c;始终都存在空翻的现象&#xff0c;抗…

VC++ 获取CPU信息的两种方法

文章目录 方法一&#xff1a;使用 Windows API GetSystemInfo 和 GetNativeSystemInfo (基本信息)编译和运行代码解释 方法二&#xff1a;使用 __cpuid&#xff08;CPU序列号、特性等&#xff09;代码解释&#xff1a; 开发过程中需要使用 VC获取电脑CPU信息&#xff0c;先总结…

编程技能:字符串函数02,strcpy

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;字符串函数01&#xff0c;引言 回到目录 …