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.mzph.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…