【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.pswp.cn/news/902678.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902678.shtml
英文地址,請注明出處:http://en.pswp.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理論通過研究大量的專利,總結出技…