【C++】 —— 笔试刷题day_23

一、 打怪

题目解析

在这里插入图片描述

我们现在要去刷毛球怪,我的攻击和血量是ha、毛球怪的攻击和血量是HA

我们和毛球怪的对决是轮流攻击(我们先手),当血量小于等于0时死亡;

现在我们要求在自己存活的条件下,最多能够杀死几只毛球怪;最后输出这个数量。

注意:如果能够杀死无数只怪物,就输出-1

算法思路

对于这道题,首先我们想到的可能就是模拟整个打怪过程,然后记录杀死怪物的数量。

而对于模拟整个过程,程序运行的时间也太长了;而且如果我们能够杀死无数只怪物,那我们要一直模拟整个过程;那也太麻烦了

有没有更加简单的方法?

这道题我们每一个怪物的血量和攻击都是固定的,那我们能不能求出来我们杀死一只怪物所受到的伤害,在根据我们自身的血量,不就可以直接计算出我们能够杀死多少只怪物吗?

所以我们的思路就是先求出来我们杀死一只怪物要攻击多少次,再求出自己所受到的伤害,最后直接计算出能够杀死怪物的数量。

  • 计算杀死一只怪要攻击多少次:m = H/a + (H%a == 0?0:1);

  • 我们要受到多少次攻击:n = m-1;我们先手,所以我们受到攻击的次数比我们攻击的次数少一)

  • 我们杀死一只怪要受到的伤害:r = m*A;(我们受到的伤害就等于受到攻击的次数*怪物的攻击)

  • 能杀死怪物的最多数量:ret = h%r==0?(h/r-1):h/r;

    题目的前提是我们要存活下来,如果h%r==0,那在面对第h/r这只怪物时,我们的生命值是先减到0的,所以我们杀不死这一只怪,杀怪的数量就等于h/r -1;如果h%r != 0,那就说明杀死第h/r只怪以后我们还是存活的,那杀怪的数量就是h/r

最后我们来处理一下能够杀死无数只怪的问题

如果能够杀死无数只怪,那就说明我们杀死一只怪是没有掉生命值的;

那只有我们能够一次攻击杀死怪物才会无伤打怪,那也就是说我们的攻击a要大于等于怪物的生命H的。

所以当a>=H时,输出-1即可。

代码实现

#include<iostream>
using namespace std;
int h,a,H,A;int fun()
{if(H<=a)return -1;int n = H/a + (H%a == 0?0:1);//几次攻击能杀死一只怪int m = n-1;//杀死一只怪要受到几次怪物的攻击。int r = m*A;//杀死一只怪要受到的伤害int ret = h%r == 0? h/r-1:h/r;return ret;
}
int main()
{int t;cin>>t;while(t--){cin>>h>>a>>H>>A;cout<<fun()<<endl;}return 0;
}

二、字符串分类

题目解析

在这里插入图片描述

这里题目给定t个字符串,让我们对这t个字符串进行分类;

对于字符串AB,如果A可以通过交换任意位置的两个字符,可以变换到B(可以交换无数次)那字符串AB就是属于同一类字符串;

例如:abcdabdcdcba这些字符串都属于同一类。

算法思路

对于两个字符串,如果它们属于同一类,那这两个字符串中字符的种类和每一个字符出现的次数都是相等的。

如果我们直接去判断两个字符串中字符种类和字符出现的次数,那就非常麻烦了;

这里我们想一想,如果AB字符串属于同一类,那它们中字符的种类和出现的次数都是相等的,那如果我们将字符串排一下序,那AB排序后的结果是不是同一个字符串呢?

很显然是的,abcddcba排序之后都是abcd

那字符串经过排序后的字符串是相等的,那这些字符串是不是都属于同一类字符串;

所以,我们这里思路就是:先对字符串进行排序,在记录一下排序后字符串的种类即可

  • 排序字符串:使用sort即可
  • 记录排序后字符串的种类:使用hash记录排序后字符串的种类
  • **结果:**我们只需要去hash表中查看字符串要多少种即可。

代码实现

#include <iostream>
#include <algorithm>
#include <unordered_set>
using namespace std;int main() {int t;cin >> t;unordered_set<string> hash;while (t--) {string str;cin >> str;sort(str.begin(), str.end());hash.insert(str);}cout << hash.size() << endl;
}

三、城市群数量

题目解析

在这里插入图片描述

题目给定一个n阶矩阵,其中每一个位置是01

如果dp[i][j] == 1就表示,第i个城市和第j个城市相连;(如果a城市和b城市相连,bc城市相连,那就任务a城市和c城市相连。

现在我们要去求在这n个城市中,有多少个城市群。

算法思路

这道题,就是一道搜索题目,我们要使用深度优先遍历dfs或者广度优先遍历来解决bfs

思路简单来说就是,遍历每一个城市,如果这个城市还没有和其他城市成群,那就从当前城市来一次深度优先遍历dfs,将它所在城市群的所有城市成群;

最后,我们只需要记录进行了几次dfs(进行了多少次dfs那就表示存在多少个城市群)。

代码实现

class Solution {public:bool vis[201] = {false};void dfs(vector<vector<int> >& m, int pos, int n) {vis[pos] = true;for (int i = 0; i < n; i++) {if (m[pos][i] == 1 && vis[i] == false)dfs(m, i, n);}}int citys(vector<vector<int> >& m) {int n = m.size();int ret = 0;for (int i = 0; i < n; i++) {if (vis[i] == false) {ret++;dfs(m, i, n);}}return ret;}
};

到这里本篇文章内容就结束了
感谢各位的支持

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

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

相关文章

对话模型和补全模型区别

对话模型和补全模型区别 什么是对话模型、补全模型 什么是 Completion 最基本地说,文本模型是一个经过训练的大型数学模型,旨在完成一项单一任务:预测下一个 token 或字符。这个过程被称为 completion,在您的旅程中您会经常遇到这个术语。 例如,当使用 completion 文本…

dirsearch 使用教程:详细指南与配置解析

dirsearch 是一款强大的开源命令行工具&#xff0c;用于对 Web 服务器进行目录和文件暴力破解。它通过扫描目标网站&#xff0c;尝试发现隐藏的目录、文件或潜在的敏感资源&#xff0c;广泛应用于渗透测试和安全审计。dirsearch 提供丰富的选项和灵活的配置文件支持&#xff0c…

跟着deepseek学golang--认识golang

文章目录 一、Golang核心优势1. 极简部署方式生产案例​​&#xff1a;依赖管理​​&#xff1a;容器实践​​&#xff1a; 2. 静态类型系统​​类型安全示例​​&#xff1a;性能优势​​&#xff1a;​​代码重构​​&#xff1a; 3. 语言级并发支持​​GMP调度模型实例​​&…

Web常见攻击方式及防御措施

一、常见Web攻击方式 1. 跨站脚本攻击(XSS) 攻击原理&#xff1a;攻击者向网页注入恶意脚本&#xff0c;在用户浏览器执行 存储型XSS&#xff1a;恶意脚本存储在服务器&#xff08;如评论区&#xff09; 反射型XSS&#xff1a;恶意脚本通过URL参数反射给用户 DOM型XSS&…

CGAL 网格内部生成随机点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里实现一种基于点的射线法来判断一个点是否一个多面提的内部,通过不停的生成随机点,以达到我们想要的效果,思路其实相对简单,但是很实用。具体内容如下: 1. 首先,我们需要构建随机方向的射线(半无限射线)…

tigase源码学习杂记-组件化设计

前言 tigase官方号称高度抽象和组件化。这篇文章就记录一下我研究组件化的相关设计 概述 我的理解tigase高度组件化是所有的关键的功能的类&#xff0c;它都称之为组件&#xff0c;即只要继承于BasicComponent&#xff0c;它都可以成为组件&#xff0c;BasicComponent类实现…

【Redis】 Redis中常见的数据类型(二)

文章目录 前言一、 List 列表1. List 列表简介2.命令3. 阻塞版本命令4. 内部编码5. 使用场景 二、Set 集合1. Set简单介绍2. 普通命令3 . 集合间操作4. 内部编码5. 使用场景 三、Zset 有序集合1.Zset 有序集合简介2. 普通命令3. 集合间操作4. 内部编码5. 使用场景 结语 前言 在…

OpenAI为何觊觎Chrome?AI时代浏览器争夺战背后的深层逻辑

目录 引言&#xff1a;一场蓄谋已久的"蛇吞象"计划 一、Chrome&#xff1a;数字世界的"黄金入口" 1.1 用户规模对比&#xff1a;ChatGPT与Chrome的悬殊差距 1.2 Chrome的生态价值远超浏览器本身 二、OpenAI的"入口焦虑"与战略布局 2.1 AI时…

二分小专题

P1102 A-B 数对 P1102 A-B 数对 暴力枚举还是很好做的&#xff0c;直接上双层循环OK 二分思路:查找边界情况&#xff0c;找出最大下标和最小下标&#xff0c;两者相减1即为答案所求 废话不多说&#xff0c;上代码 //暴力O(n^3) 72pts // #include<bits/stdc.h> // usin…

java延迟map, 自定义延迟map, 过期清理map,map能力扩展。如何设置map数据过期,改造map适配数据过期

1. 功能&#xff1a; map 线程安全&#xff0c;能够对存入的数据设置过期&#xff0c;或者自定义删除 2. aliyun代码看到的一个对象正好符合上述需求 出处是aliyun sdk core jar包的一个类。感兴趣可以去下载下jar查看 下面是源码&#xff1a; package com.aliyuncs.policy.…

国芯思辰|可编程线性霍尔传感器AH820替换HAL825用于汽车涡轮增压

涡轮增压技术是提高发动机的进气能力的技术&#xff0c;霍尔传感器可以达到监测涡轮转速的作用。在涡轮增压器的轴上安装一个永磁体&#xff0c;当涡轮旋转时&#xff0c;永磁体也随之转动&#xff0c;产生周期性变化的磁场。霍尔传感器靠近永磁体安装&#xff0c;能够检测到磁…

(转)正则化等最优化方法介绍

参考&#xff1a; http://blog.csdn.net/pipisorry/article/details/52108040 附带 损失函数&#xff1b;经验风险&#xff1b;正则化&#xff1b;结构风险 损失函数&#xff08;loss function&#xff09;是用来估量你模型的预测值f(x)与真实值Y的不一致程度&#xff0c;它是…

多维时序 | LightGBM多变量时序预测(Matlab完整源码和数据,适合基础小白研究)

多维时序 | LightGBM多变量时序预测&#xff08;Matlab完整源码和数据&#xff0c;适合基础小白研究&#xff09; 目录 多维时序 | LightGBM多变量时序预测&#xff08;Matlab完整源码和数据&#xff0c;适合基础小白研究&#xff09;效果一览基本介绍程序设计参考资料 效果一览…

【解决】Android Gradle Sync 报错 Could not read workspace metadata

异常信息 Caused by: java.io.UncheckedIOException:Could not read workspace metadata from C:\Users\xxx\.gradle\caches\transforms-4\69955912123c68eecd096b71c66ee211\metadata.bin 异常原因 看字面意思是不能读取metadata文件&#xff0c;原因可能是因为缓存目录异常…

Java面试实战:电商场景下的Spring Cloud微服务架构与缓存技术剖析

第一轮提问 面试官: 谢飞机&#xff0c;我们先从基础问题开始。请问你知道Spring Boot和Spring Cloud的区别吗&#xff1f; 谢飞机: 当然知道&#xff01;Spring Boot主要用于快速构建独立运行的Spring应用&#xff0c;而Spring Cloud则是在Spring Boot的基础上实现分布式系统…

Express 路由使用、请求报文参数获取、路由参数提取

Express 路由使用、请求报文参数获取、路由参数提取 &#x1f6e3;️ 一、Express 路由基本用法 const express require(express); const app express();// 基本 GET 路由 app.get(/, (req, res) > {res.send(Hello GET!); });// POST 路由 app.post(/submit, (req, res)…

【前端】手写代码输出题易错点汇总

两天更新完。 const promise new Promise((resolve, reject) > {console.log(1);console.log(2); }); promise.then(() > {console.log(3); }); console.log(4); //1 //2 //4promise.then 是微任务&#xff0c;它会在所有的宏任务执行完之后才会执行&#xff0c;同时需…

基于深度学习和单目测距的前车防撞及车道偏离预警系统

随着人工智能与计算机视觉技术的飞速发展,高级驾驶辅助系统(ADAS)已成为现代汽车智能化的关键标志。它不仅能有效提升行车安全,还能为自动驾驶时代的全面到来奠定坚实基础。本文深入剖析一套功能完备、基于深度学习模型的 ADAS 系统的架构与核心实现,带您领略智能驾驶背后…

JWT(JSON Web Token)用户认证

1、颁发token <!--JWT依赖--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><dependency><groupId>javax.xml.bind</groupId>…

【质量管理】现代TRIZ(萃智)理论概述

一、什么是TRIZ理论 TRIZ理论,即发明问题解决理论(Teoriya Resheniya Izobreatatelskikh Zadatch),是由前苏联发明家根里奇阿奇舒勒(Genrich S. Altshuller)于1946年创立的。它是一门基于知识的、面向人的发明问题解决系统化方法学。TRIZ理论通过研究大量的专利,总结出技…