C++知識點總結(23):高級模擬算法

高級模擬算法例題

  • 一、P5661 公交換乘
    • 1. 審題
    • 2. 思路
    • 3. 參考答案
  • 二、P1003 鋪地毯
    • 1. 審題
    • 2. 參考答案
  • 三、P1071 潛伏者
    • 1. 審題
    • 2. 思路
    • 3. 參考答案

一、P5661 公交換乘

1. 審題

2. 思路

總花費中,地鐵是必須花費的,公交車可能不花錢(坐地鐵后有贈票),但是與時間和價格有一定關系。

我們來分析一下輸出的 36 36 36 是如何得出的。

第一行: a n s + 10 ans+10 ans+10
第二行:不用花錢
第三行: a n s + 12 ans+12 ans+12
第四行: a n s + 3 ans+3 ans+3
第五行: a n s + 5 ans+5 ans+5
第六行: a n s + 6 ans+6 ans+6

3. 參考答案

#include <iostream>
using namespace std;int n, way, price, t;
int pos = 1, ans;struct Node
{int freeP;int endT;bool used;
}a[100005];int main()
{// 輸入數據cin >> n;while (n--){cin >> way >> price >> t;if (way == 0){ans += price;a[pos].freeP = price;a[pos].endT = t + 45;a[pos].used = false;pos++;}else{while (a[l].endT < t && l < pos-1) // 排除掉過期的贈票{l++;}bool flag = false;for (int i = l; i <= pos-1; i++) // 遍歷贈票{if (price <= a[i].freeP && t <= a[i].endT && a[i].used == false) // 價格、時間、是否被用過{a[i].used = true;flag = true;break;}}if (!flag){ans += price;}}}cout << ans;return 0;
}

二、P1003 鋪地毯

1. 審題

題目描述

為了準備一個獨特的頒獎典禮,組織者在會場的一片矩形區域(可看做是平面直角坐標系的第一象限)鋪上一些矩形地毯。一共有 n n n 張地毯,編號從 1 1 1 n n n。現在將這些地毯按照編號從小到大的順序平行于坐標軸先后鋪設,后鋪的地毯覆蓋在前面已經鋪好的地毯之上。地毯鋪設完成后,組織者想知道覆蓋地面某個點的最上面的那張地毯的編號。注意:在矩形地毯邊界和四個頂點上的點也算被地毯覆蓋。

輸入描述

輸入文件名 carpet.in
輸入 n + 2 n+2 n+2 行。第一行,一個整數 n n n,表示總共有 n n n 張地毯。
接下來的 n n n 行中,第 i + 1 i+1 i+1 行表示編號 i i i 的地毯的信息,包含四個整數 a a a b b b g g g k k k,每兩個整數之間用一個空格隔開,分別表示鋪設地毯的左下角的坐標( a a a b b b)以及地毯在 x x x 軸和 y y y 軸方向的長度。
n + 2 n+2 n+2 行包含兩個整數 x x x y y y,表示所求的地面的點的坐標( x x x y y y)。

輸出描述

輸出文件名 carpet.out
輸出共 1 1 1 行,一個整數,表示所求的地毯的編號;若此處沒有被地毯覆蓋則輸出 ? 1 -1 ?1

樣例1

輸入

3
1 0 2 3
0 2 3 3
2 1 3 3
2 2

輸出

3

提示

對于 100 % 100\% 100% 的數據, 0 ≤ n ≤ 1 0 4 0\le n\le 10^4 0n104 0 ≤ a , b , g , k ≤ 1 0 5 0\le a,b,g,k \le 10^5 0a,b,g,k105

2. 參考答案

#include <iostream>
#include <cstdio>
using namespace std;int n;
int tx, ty;
int point[10005][5];int main()
{freopen("carpet.in", "r", stdin);freopen("carpet.out", "w", stdout);// 輸入數據cin >> n;for(int i = 1; i <= n; i++){cin >> point[i][0] >> point[i][1]>>point[i][2] >> point[i][3];point[i][2] += point[i][0];point[i][3] += point[i][1];}cin >> tx >> ty;// 模擬bool flag = false;for (int i = n; i >= 1; i--){if (tx >= point[i][0] && tx <= point[i][2] && ty >= point[i][1] && ty <= point[i][3]){flag = true;cout << i << endl;break;}}if (flag == false){cout << -1 << endl;}fclose(stdin);fclose(stdout);return 0;
}

三、P1071 潛伏者

1. 審題

題目描述

R R R 國和 S S S 國正陷入戰火之中,雙方都互派間諜,潛入對方內部,伺機行動。歷盡艱險后,潛伏于 S S S 國的 R R R 國間諜小 C C C 終于摸清了 S S S 國軍用密碼的編碼規則:

  1. S S S 國軍方內部欲發送的原信息經過加密后在網絡上發送,原信息的內容與加密后所得的內容均由大寫字母'A' ? - ?'Z'構成(無空格等其他字符)。
  2. S S S 國對于每個字母規定了對應的"密字"。加密的過程就是將原信息中的所有字母替換為其對應的"密字"。
  3. 每個字母只對應一個唯一的"密碼",不同的字母對應不同的“密字”。“密字”可以和原字母相同。

例如,若規定 'A' 的密字為'A''B' 的密字為'C'(其他字母及密字略),則原信息 "ABA" 被加密為 "ACA"
現在,小 C C C 通過內線掌握了 S S S 國網絡上發送的一條加密信息及其對應的原信息。小 C C C 希望能通過這條信息,破譯 S S S 國的軍用密碼。小 C C C 的破譯過程是這樣的:掃描原信息,對于原信息中的字母 x x x(代表任一大寫字母),找到其在加密信息中的對應大寫字母y,并認為在密碼里 y y y x x x 的密字。如此進行下去直到停止于如下的某個狀態:

  1. 所有信息掃描完畢,'A' ? - ?'Z' 所有 26 26 26 個字母在原信息中均出現過并獲得了相應的“密字”。
  2. 所有信息掃描完畢,但發現存在某個(或某些)字母在原信息中沒有出現。
  3. 掃描中發現掌握的信息里有明顯的自相矛盾或錯誤(違反 S 國密碼的編碼規則)。例如某條信息 "XYZ" 被翻譯為 "ABA" 就違反了“不同字母對應不同密字”的規則。
    在小 C C C 忙得頭昏腦漲之際, R R R 國司令部又發來電報,要求他翻譯另外一條從 S S S 國剛剛截取到的加密信息。現在請你幫助小 C C C:通過內線掌握的信息,嘗試破譯密碼。然后利用破譯的密碼,翻譯電報中的加密信息。

輸入格式

3 3 3 行,每行為一個長度在 1 1 1 100 100 100 之間的字符串。
1 1 1 行為小 C C C 掌握的一條加密信息。
2 2 2 行為第 1 1 1 行的加密信息所對應的原信息。
3 3 3 行為 R R R 國司令部要求小 C C C 翻譯的加密信息。
輸入數據保證所有字符串僅由大寫字母'A' ? - ?'Z'構成,且第 1 1 1 行長度與第 2 2 2 行相等。

輸出格式

1 1 1 行。
若破譯密碼停止時出現 2 , 3 2,3 2,3 兩種情況,請你輸出 Failed(注意首字母大寫,其它小寫)。
否則請輸出利用密碼翻譯電報中加密信息后得到的原信息。

樣例1

輸入

AA
AB
EOWIE

輸出

Failed

提示

樣例 1 1 1 中原信息中的字母 'AA''BB' 對應相同的密字,輸出 Failed

2. 思路

我們可以直接用一個一維數組(桶),來存儲密碼(下標)和對應的原碼(數據)。

3. 參考答案

#include <iostream>
#include <string>
using namespace std;string y, m, ans; // y: 原碼 m: 密碼 ans: 密碼答案
int cnt = 0; // 記錄出現次數
int bm[130]; // bm[]: 編碼存儲
bool yused[130]; // yused[]: 記錄原下標是否被使用過int main()
{cin >> m >> y >> ans;// 特例int len = m.length();if (len < 26) // 密碼長度<26直接輸出{cout << "Failed";return 0;}// 正常情況for (int i = 0; i <= len-1; i++){if (bm[m[i]] == 0 && yused[y[i]] == false) // 新的{bm[m[i]] = y[i];cnt++;yused[y[i]] = true;}else{if (bm[m[i]] == y[i]){continue;}else // 誘惑的原碼{cout << "Failed";return 0;}}}if (cnt < 26){cout << "Failed";return 0;}int len2 = ans.length();for (int i = 0; i <= len2-1; i++){cout << char(bm[ans[i]]);}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718587.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用VisualDL進行模型訓練和數據可視化

文章目錄 使用VisualDL進行模型訓練和數據可視化1. 環境準備1.1 安裝VisualDL1.2 設置VisualDL 2. 寫入數據并可視化2.1 檢查訓練數據2.2 跟蹤模型訓練2.3 評估模型訓練效果 3. 啟動VisualDL服務4. 總結 使用VisualDL進行模型訓練和數據可視化 VisualDL是飛槳提供的一個可視化…

Java中的Object類詳解

Java中的Object類詳解 1. equals(Object obj)2. hashCode()3. toString()4.getClass()5.notify() 和 notifyAll()6. wait() 和 wait(long timeout)7. clone()8.finalize() Java中的 Object 類是所有類的父類&#xff0c;可以被所有Java類繼承并使用。下面先看下源碼&#xff1a…

google最新大語言模型gemma本地化部署

Gemma是google推出的新一代大語言模型&#xff0c;構建目標是本地化、開源、高性能。 與同類大語言模型對比&#xff0c;它不僅對硬件的依賴更小&#xff0c;性能卻更高。關鍵是完全開源&#xff0c;使得對模型在具有行業特性的場景中&#xff0c;有了高度定制的能力。 Gemma模…

革新商務數據體驗:引領市場的API商品數據接口

在當今商業環境中&#xff0c;革新商務數據體驗對于維持競爭優勢至關重要。API商品數據接口在這一轉型過程中扮演了核心角色&#xff0c;它不僅為企業提供了實時且全面的數據訪問能力&#xff0c;而且還極大地增強了數據的可操作性和決策支持功能。以下是API商品數據接口如何細…

面試數據庫篇(mysql)- 12分庫分表

拆分策略 垂直分庫 垂直分庫:以表為依據,根據業務將不同表拆分到不同庫中。 特點: 按業務對數據分級管理、維護、監控、擴展在高并發下,提高磁盤IO和數據量連接數垂直分表:以字段為依據,根據字段屬性將不同字段拆分到不同表中。 特點: 1,冷熱數據分離 2,減少IO過渡爭…

C語言入門到精通之練習42:畫圖,學用圓畫圓形。

題目&#xff1a;畫圖&#xff0c;學用圓畫圓形。 程序分析&#xff1a;無。 實例 #include <graphics.h> //VC6.0中是不能運行的&#xff0c;要在Turbo2.0/3.0中 int main() { int driver,mode,i; float j1,k1; driverVGA; modeVGAHI; initgraph(&d…

【Micropython基礎】TCP客戶端與服務器

文章目錄 前言一、連接Wifi1.1 創建STA接口1.2 激活wifi接口1.3 連接WIFI1.4 判斷WIFI是否連接1.5 連接WIFI總體代碼 二、創建TCP 客戶端2.1 創建套接字2.2 設置TCP服務器的ip地址和端口2.3 連接TCP服務器2.3 發送數據2.4 接收數據2.5 斷開連接2.6 示例代碼 三、TCP服務器的創建…

批量二維碼的教程和優勢:拓寬應用領域,提升效率與創新

隨著二維碼技術的不斷發展&#xff0c;批量二維碼在多個領域展現出了顯著的優勢&#xff0c;為商業和行業帶來了更多便捷和創新。以下是批量二維碼的一些顯著優勢&#xff1a; 1. 高效快速生成&#xff1a; 批量二維碼一次性生成多個二維碼&#xff0c;相較于逐個生成的方式&…

Linux之進程信號

目錄 一、概念引入 1、生活中的信號 2、Linux中的信號 二、信號處理常見方式 三、信號的產生 1、鍵盤產生信號 2、系統調用接口產生信號 3、軟件條件產生信號 4、硬件異常產生信號 四、信號的保存 相關概念 信號保存——三個數據結構 信號集——sigset_t 信號集操…

超簡單的chatgpt-next-web部署教程!

隨著AI的應用變廣&#xff0c;各類AI程序已逐漸普及&#xff0c;尤其是在一些日常辦公、學習等與撰寫/翻譯文稿密切相關的場景&#xff0c;大家都希望找到一個適合自己的穩定可靠的ChatGPT軟件來使用。 ChatGPT-Next-Web就是一個很好的選擇。它是一個Github上超人氣的免費開源…

Docker基礎教程 - 1 Docker簡介

更好的閱讀體驗&#xff1a;點這里 &#xff08; www.doubibiji.com &#xff09; 1 Docker簡介 Docker是一個強大的容器化平臺&#xff0c;讓你能夠更輕松地構建、部署和運行應用程序。 下面我們來學習 Docker。 1.1 Docker是什么 1 現在遇到的問題 每次部署一臺服務器&…

CSS 入門指南(一)CSS 概述

CSS 概述 CSS 介紹 CSS&#xff08;Cascading Style Sheets&#xff09;通常稱為 CSS 樣式或層疊樣式表&#xff0c;是一種用來為結構化文檔&#xff08;如 HTML 文檔或 XML 應用&#xff09;添加樣式&#xff08;字體、間距和顏色等&#xff09;以及版面的布局等外觀顯示樣式…

《MySQL數據庫》day1

文章目錄 1.名詞解釋2.如何啟動mysql數據庫3.mysql常用命令4.數據庫當中最基本的單元是表&#xff1a;table5.關于SQL語句的分類6.簡單查詢7.條件查詢8.排序9.數據處理函數單行處理函數常見的有哪些&#xff1f; 10.分組函數&#xff08;多行處理函數&#xff09; 1.名詞解釋 …

VUE2與VUE3之間的主要區別

當談到 Vue.js 的版本時&#xff0c;Vue 2 和 Vue 3 是最常被提及的兩個版本。下面是 Vue 2 和 Vue 3 之間的一些主要區別&#xff1a; 1. 性能提升&#xff1a; Vue 3 在底層核心重寫了響應式系統&#xff0c;采用了 Proxy 對象&#xff0c;大幅提高了性能。Vue 3 還引入了靜…

徹底解決華為手機安裝谷歌框架后出現未認證的彈窗問題

引言 本人使用華為手機通過B站等平臺學習如何安裝谷歌框架與商店后&#xff0c;發現安裝谷歌框架后出現未認證的彈窗問題少有解決辦法&#xff0c;而且容易復發&#xff0c;在借鑒相關視頻后找到解決辦法&#xff0c;但視頻中的華谷框架需要付費才能使用&#xff0c;本文將提出…

spring注解驅動系列--自動裝配

Spring利用依賴注入&#xff08;DI&#xff09;&#xff0c;完成對IOC容器中中各個組件的依賴關系賦值&#xff1b;依賴注入是spring ioc的具體體現&#xff0c;主要是通過各種注解進行屬性的自動注入。 一、Autowired&#xff1a;自動注入 一、注解介紹 1、默認優先按照類型去…

高中數學:函數奇偶性

一、定義 偶函數&#xff1a;定義域關于原點對稱&#xff0c;圖像關于Y軸對稱 f(x)f(-x) 奇函數&#xff1a;定義域關于原點對稱&#xff0c;圖像關于原點中心對稱 f(x)f(-x)0 等價于 f(-x)-f(x) 二、函數奇偶性的四種情況 注意&#xff1a; 即奇又偶的函數&#xff0c;只有…

Linux入門到入土

Linxu Linux 簡介 Linux 內核最初只是由芬蘭人林納斯托瓦茲&#xff08;Linus Torvalds&#xff09;在赫爾辛基大學上學時出于個人愛好而編寫的。 Linux 是一套免費使用和自由傳播的類 Unix 操作系統&#xff0c;是一個基于 POSIX&#xff08;可移植操作系統接口&#xff09…

【復現】宏景HCM 任意文件讀取漏洞_63

目錄 一.概述 二 .漏洞影響 三.漏洞復現 1. 漏洞一&#xff1a; 四.修復建議&#xff1a; 五. 搜索語法&#xff1a; 六.免責聲明 一.概述 宏景HCM 將人才標簽技術應用于員工招聘、人才選拔等環節&#xff0c;通過多維度的標簽體系&#xff0c;形成不同專業序列的人才畫…

CV | 醫學影像上的圖像分割模型調研【更新于20240304】

mamba相關的圖像分割&#xff1a;VM-Unet,Manba-Unet,BRAU-Net,MDD-Unet,EGE-Unet,U-Mamba 2024.01.01_BRAU-Net Paper:BRAU-Net: U-Shaped Hybrid CNN-Transformer Network for Medical Image Segmentation https://arxiv.org/pdf/2401.00722.pdf 2024.01.09_U-Mamba Paper:U…