做网站用微软雅黑字体被告侵权/容易被百度收录的网站

做网站用微软雅黑字体被告侵权,容易被百度收录的网站,一个公司网站的价格,仿糗事百科网站一、P8598 [蓝桥杯 2013 省 AB] 错误票据 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;int main() {int N;cin >> N; // 读取数据行数unordered_map<int, int> idCount; // 用于统计每个ID出现的次数vector<int> ids; …

一、P8598 [蓝桥杯 2013 省 AB] 错误票据 - 洛谷

算法代码:

#include<bits/stdc++.h>
using namespace std;int main() {int N;cin >> N;  // 读取数据行数unordered_map<int, int> idCount;  // 用于统计每个ID出现的次数vector<int> ids;                  // 用于存储所有ID(方便排序)int num;// 读取所有IDfor (int i = 0; i < N; i++) {while (cin >> num) {ids.push_back(num);  // 将ID存入vectoridCount[num]++;      // 统计ID出现的次数if (cin.get() == '\n') break;  // 换行时结束当前行的读取}}// 对ID进行排序sort(ids.begin(), ids.end());int missing = -1, duplicate = -1;  // 断号ID和重号ID// 查找重号for (auto& pair : idCount) {if (pair.second == 2) {duplicate = pair.first;  // 找到重号break;}}// 查找断号for (int i = ids[0]; i <= ids.back(); i++) {if (idCount.find(i) == idCount.end()) {missing = i;  // 找到断号break;}}// 输出结果cout << missing << " " << duplicate << endl;return 0;
}

代码思路

1. 输入处理

  • 读取数据行数 N
  • 使用 unordered_map<int, int> 统计每个ID出现的次数。
  • 使用 vector<int> 存储所有ID,方便后续排序。

2. 读取所有ID

  • 使用 while (cin >> num) 逐行读取ID,直到遇到换行符 \n 结束当前行的读取。
  • 将每个ID存入 vector<int> ids 中,并在 unordered_map<int, int> idCount 中统计其出现次数。

3. 排序

  • 对 vector<int> ids 进行排序,方便后续查找断号和重号。

4. 查找重号

  • 遍历 unordered_map<int, int> idCount,找到出现次数为2的ID,即为重号。

5. 查找断号

  • 从最小ID(ids[0])到最大ID(ids.back())遍历,检查每个ID是否在 unordered_map<int, int> idCount 中。
  • 如果某个ID不在 unordered_map 中,则说明它是断号。

6. 输出结果

  • 输出断号ID missing 和重号ID duplicate

代码实现细节

1. 头文件

#include<bits/stdc++.h>
using namespace std;
  • 使用万能头文件 bits/stdc++.h,包含所有标准库。
  • 使用 using namespace std,避免每次调用标准库时需要写 std::

2. 主函数

int main() {int N;cin >> N;
  • 读取数据行数 N

3. 数据存储

unordered_map<int, int> idCount;
vector<int> ids;
int num;
  • unordered_map<int, int> idCount:用于统计每个ID出现的次数。
  • vector<int> ids:用于存储所有ID,方便后续排序。

4. 读取所有ID

for (int i = 0; i < N; i++) {while (cin >> num) {ids.push_back(num);idCount[num]++;if (cin.get() == '\n') break;}
}
  • 逐行读取ID,存入 vector<int> ids 中。
  • 使用 unordered_map<int, int> idCount 统计每个ID出现的次数。
  • 当遇到换行符 \n 时,结束当前行的读取。

5. 排序

sort(ids.begin(), ids.end());
  • 对 vector<int> ids 进行排序,方便后续查找断号和重号。

6. 查找重号

int missing = -1, duplicate = -1;
for (auto& pair : idCount) {if (pair.second == 2) {duplicate = pair.first;break;}
}
  • 遍历 unordered_map<int, int> idCount,找到出现次数为2的ID,即为重号。

7. 查找断号

for (int i = ids[0]; i <= ids.back(); i++) {if (idCount.find(i) == idCount.end()) {missing = i;break;}
}
  • 从最小ID(ids[0])到最大ID(ids.back())遍历,检查每个ID是否在 unordered_map<int, int> idCount 中。
  • 如果某个ID不在 unordered_map 中,则说明它是断号。

8. 输出结果

cout << missing << " " << duplicate << endl;
  • 输出断号ID missing 和重号ID duplicate

9. 返回

return 0;
  • 程序正常结束。

示例运行

输入

2
7 9
5 6 8 11 9

输出

10 9

总结

  • 代码通过 unordered_map 统计ID出现次数,结合排序和遍历,高效地找到断号和重号。
  • 时间复杂度为 O(n),其中 n 是ID的总数。
  • 代码逻辑清晰,适合处理题目描述中的场景。

还有另一种形式(不排序,直接使用哈希表):

#include <iostream>
#include <unordered_set>
using namespace std;int main() {int N;cin >> N;  // 读取数据行数unordered_set<int> idSet;  // 用于存储所有IDint minID = INT_MAX, maxID = INT_MIN;  // 记录最小ID和最大IDint num;// 读取所有IDfor (int i = 0; i < N; i++) {while (cin >> num) {idSet.insert(num);  // 将ID存入哈希表minID = min(minID, num);  // 更新最小IDmaxID = max(maxID, num);  // 更新最大IDif (cin.get() == '\n') break;  // 换行时结束当前行的读取}}int missing = -1, duplicate = -1;  // 断号ID和重号ID// 查找重号unordered_set<int> seen;for (int id : idSet) {if (seen.count(id)) {duplicate = id;  // 找到重号break;}seen.insert(id);}// 查找断号for (int i = minID; i <= maxID; i++) {if (idSet.find(i) == idSet.end()) {missing = i;  // 找到断号break;}}// 输出结果cout << missing << " " << duplicate << endl;return 0;
}

二、P8775 [蓝桥杯 2022 省 A] 青蛙过河 - 洛谷 

算法代码: 

#include <bits/stdc++.h>
#define N 100005
using namespace std;int n, T, h[N], ans;int main() {// 读取河的宽度 n 和需要去学校的天数 Tscanf("%d%d", &n, &T);// 将 T 乘以 2 得到实际过河的次数T <<= 1;// 读取每块石头的高度for (int i = 1; i < n; ++i) scanf("%d", &h[i]);// 使用滑动窗口的方法来找到满足条件的最小跳跃能力for (int i = 1, j = 0, sum = 0; i < n; i++) {// 扩展窗口的右边界,直到累加的高度大于等于 Twhile (j < n && sum < T) sum += h[++j];// 记录当前窗口的长度,即跳跃能力ans = max(ans, j - i + 1);// 缩小窗口的左边界,减去左边石头的高度sum -= h[i];}// 输出满足条件的最小跳跃能力printf("%d\n", ans);return 0;
}

规律:

        对于一个跳跃能力 y,青蛙能跳过河 2x 次,当且仅当对于每个长度为 y 的区间,这个区间内 h 的和都大于等于 2x

        这个问题涉及到对青蛙跳跃能力和石头高度分布的分析。我们需要理解为什么对于一个跳跃能力 y,青蛙能够跳过河 2x次,当且仅当对于每个长度为 y 的区间,这个区间内石头高度 h 的和都大于等于 2x。


1. 问题背景

  • 青蛙需要往返 2x 次,每次跳跃必须落在石头或岸上。

  • 每块石头的高度 h[i]表示这块石头可以被踩的次数。

  • 跳跃能力 y 表示青蛙一次跳跃的最大距离。


2. 跳跃能力 y 的含义

  • 如果青蛙的跳跃能力是 y,那么它每次跳跃的距离不能超过 y。

  • 这意味着青蛙在跳跃时,只能选择距离当前位置不超过 y 的石头。


3. 为什么需要每个长度为 y 的区间和 ≥2x

  • 必要性

    • 如果存在一个长度为 y的区间,其石头高度和 <2x,那么青蛙在这个区间内无法完成 2x 次跳跃。

    • 因为青蛙每次跳跃必须落在石头上,而石头的高度限制了可以被踩的次数。

    • 如果某个区间的石头高度和不足 2x,青蛙在这个区间内无法完成足够的跳跃次数。

  • 充分性

    • 如果每个长度为 y 的区间的石头高度和 ≥2x,那么青蛙可以在每个区间内完成足够的跳跃次数。

    • 因为青蛙的跳跃能力是 y,它可以在每个区间内自由选择石头进行跳跃,而不会受到石头高度不足的限制。


4. 具体分析

  • 青蛙的跳跃路径

    • 青蛙需要从起点跳到终点,再跳回起点,重复 x 次。

    • 每次跳跃的距离不能超过 y。

  • 区间的划分

    • 将河分成若干个长度为 y 的区间。

    • 每个区间内的石头高度和必须≥2x,因为青蛙需要在这些区间内完成 2x2x 次跳跃。

  • 石头高度的作用

    • 每块石头的高度 h[i] 表示这块石头可以被踩的次数。

    • 如果某个区间的石头高度和<2x,那么青蛙在这个区间内无法完成 2x 次跳跃。


5. 举例说明

假设:

  • 河的宽度 n=5。

  • 需要去学校的天数 x=1,实际过河次数 2x=2。

  • 石头高度 h=[3,1,2,1]。

跳跃能力 y=2

  • 区间划分:

    • 区间 1: 位置 1 和 2,高度和 3+1=4≥2。

    • 区间 2: 位置 2 和 3,高度和 1+2=3≥2。

    • 区间 3: 位置 3 和 4,高度和 2+1=3≥2。

  • 每个区间的石头高度和都 ≥2,因此青蛙可以完成 2 次跳跃。

跳跃能力 y=1

  • 区间划分:

    • 区间 1: 位置 1,高度和 3≥2。

    • 区间 2: 位置 2,高度和 1<2。

    • 区间 3: 位置 3,高度和 2≥2。

    • 区间 4: 位置 4,高度和 1<2。

  • 存在区间的石头高度和 <2,因此青蛙无法完成 2 次跳跃。


6. 总结

  • 对于一个跳跃能力 y,青蛙能够跳过河 2x 次,当且仅当对于每个长度为 y 的区间,这个区间内石头高度 h 的和都大于等于 2x。

  • 这是因为青蛙的跳跃能力限制了它每次跳跃的距离,而石头的高度限制了它可以在每块石头上踩的次数。

  • 如果某个区间的石头高度和不足2x,青蛙在这个区间内无法完成足够的跳跃次数。

  • 如果每个区间的石头高度和都 ≥2x,青蛙可以在每个区间内自由选择石头进行跳跃,完成 2x次跳跃。


代码思路:

这段代码的目的是通过滑动窗口的方法,找到小青蛙的最小跳跃能力 y,使得它能够完成 2x 次往返跳跃。以下是代码的详细思路:


1. 输入处理

  • 读取河的宽度 n 和需要去学校的天数 T

    • 使用 scanf("%d%d", &n, &T); 读取输入。

    • 河的宽度 n 表示从起点到终点共有 n 个位置(包括起点和终点)。

    • T 是小青蛙需要去学校的天数,实际过河次数是 2T(往返各一次)。

  • 将 T乘以 2

    • 使用 T <<= 1; 将 T左移一位,相当于 T=2T,表示实际过河次数。


2. 读取石头高度

  • 读取每块石头的高度

    • 使用 for (int i = 1; i < n; i++) scanf("%d", &h[i]); 读取每块石头的高度。

    • 数组 h 的下标从 1 开始,表示从起点到终点之间的 n−1块石头的高度。

    • h[i]表示距离起点 i的位置的石头高度。


3. 滑动窗口寻找最小跳跃能力

  • 初始化滑动窗口

    • 使用 for (int i = 1, j = 0, sum = 0; i < n; ++i) 初始化滑动窗口。

    • i是窗口的左边界,表示当前跳跃的起点。

    • j是窗口的右边界,表示当前跳跃的终点。

    • sum 是窗口内石头高度的累加和。

  • 扩展窗口的右边界

    • 使用 while (j < n && sum < T) sum += h[++j]; 扩展窗口的右边界。

    • 不断将右边界 j向右移动,累加石头的高度,直到累加的高度 sum大于等于 T。

    • 这一步的目的是找到一个窗口,使得窗口内的石头高度总和足够支持 2T 次跳跃。

  • 记录窗口的长度

    • 使用 ans = max(ans, j - i + 1); 记录当前窗口的长度。

    • 窗口的长度 j−i+1表示当前跳跃能力 y。

    • 通过取最大值,确保找到最小的跳跃能力。

  • 缩小窗口的左边界

    • 使用 sum -= h[i]; 缩小窗口的左边界。

    • 将左边界 i 向右移动,减去左边石头的高度,继续寻找更小的跳跃能力。


4. 输出结果

  • 输出满足条件的最小跳跃能力

    • 使用 printf("%d\n", ans); 输出结果。

    • ans 是满足条件的最小跳跃能力 yy。


代码的核心思想:

  • 滑动窗口

    • 通过滑动窗口的方法,动态调整窗口的左右边界,找到一个最小的窗口长度 y,使得窗口内的石头高度总和至少为 T。

    • 窗口的长度 y 表示小青蛙的跳跃能力。

  • 跳跃能力的定义

    • 跳跃能力 y 表示小青蛙一次跳跃的最大距离。

    • 通过滑动窗口找到的 y是最小的跳跃能力,使得小青蛙能够完成 2T 次跳跃。


代码的优化点:

  1. 滑动窗口的边界处理

    • 窗口的右边界 j 不能超过 n,否则会越界。

    • 窗口的左边界 i 逐步向右移动,确保窗口长度最小。

  2. 时间复杂度

    • 滑动窗口的时间复杂度是 O(n),因为每个石头最多被访问两次(一次扩展右边界,一次缩小左边界)。

    • 这种方法在 n≤10**5 的规模下非常高效。


总结:

这段代码通过滑动窗口的方法,高效地找到了小青蛙的最小跳跃能力 y,使得它能够完成 2T 次往返跳跃。滑动窗口的核心思想是动态调整窗口的左右边界,确保窗口内的石头高度总和满足条件,同时找到最小的窗口长度 y。

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

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

相关文章

<建模软件安装教程1>Blender4.2系列

Blender4.2安装教程 0注意&#xff1a;Windows环境下安装 第一步&#xff0c;百度网盘提取安装包。百度网盘链接&#xff1a;通过网盘分享的文件&#xff1a;blender.zip 链接: https://pan.baidu.com/s/1OG0jMMtN0qWDSQ6z_rE-9w 提取码: 0309 --来自百度网盘超级会员v3的分…

C语言八股---预处理,编译,汇编与链接篇

前言 从多个.c文件到达一个可执行文件的四步:   预处理–>编译–>汇编–>链接 预处理 预处理过程就是预处理器处理这些预处理指令(要不然编译器完全不认识),最终会生成 main.i的文件 主要做的事情有如下几点: 展开头文件展开宏条件编译删除注释添加行号等信息保留…

用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏

大家好&#xff01;今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括&#xff1a;控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂&#xff0c;适合初学者学习和实践。 游戏功能概述 玩家控制&#xff1a;使用键…

面向高质量视频生成的扩散模型方法-算法、架构与实现【附核心代码】

目录 算法原理 架构 代码示例 算法原理 正向扩散过程&#xff1a;从真实的视频数据开始&#xff0c;逐步向其中添加噪声&#xff0c;随着时间步 t 的增加&#xff0c;噪声添加得越来越多&#xff0c;最终将原始视频数据变成纯噪声。数学上&#xff0c;t 时刻的视频数据与 t…

游戏引擎学习第149天

今日回顾与计划 在今天的直播中&#xff0c;我们将继续进行游戏的开发工作&#xff0c;目标是完成资产文件&#xff08;pack file&#xff09;的测试版本。目前&#xff0c;游戏的资源&#xff08;如位图和声音文件&#xff09;是直接从磁盘加载的&#xff0c;而我们正在将其转…

ForceMimic:以力为中心的模仿学习,采用力运动捕捉系统进行接触丰富的操作

25年3月来自上海交大卢策吾教授团队的论文“ForceMimic: Force-Centric Imitation Learning with Force-Motion Capture System for Contact-Rich Manipulation”。 在大多数接触丰富的操作任务中&#xff0c;人类会将随时间变化的力施加到目标物体上&#xff0c;以补偿视觉引…

【愚公系列】《Python网络爬虫从入门到精通》045-Charles的SSL证书的安装

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

vulnhub靶场【digitalworld.local系列】的electrical靶机

前言 靶机&#xff1a;digitalworld.local-electrical&#xff0c;IP地址为192.168.10.12&#xff0c;后期因为卡顿&#xff0c;重新安装&#xff0c;ip地址后面为192.168.10.11 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.6 kali采用VMware虚拟机&#xff0c;靶机…

macos 程序 运行

sudo xattr -r -d com.apple.quarantine [/Applications/Name]使用stow 管理配置文件

共享内存的原理和创建

目录 共享内存的原理 共享内存的创建 代码实现创建 共享内存的管理指令 我们今天来学习共享内存&#xff01;&#xff01;&#xff01; 共享内存的原理 两个进程同时使用内存中开辟的共享空间进行通信就是建立并使用共享内存进行进程间的通信。System V 共享内存&#xf…

3.10[A]cv

核心模块&#xff1a; rasterizer&#xff1a;光栅化器&#xff0c;负责三角形遍历和像素绘制Shader&#xff1a;包含顶点着色器和多种片元着色器Texture&#xff1a;纹理处理模块 顶点着色器的计算量一般远小于片元着色器。因为组成三角形的顶点相对有限&#xff0c;而片元需…

mac使用Homebrew安装miniconda(mac搭建python环境),并在IDEA中集成miniconda环境

一、安装Homebrew mac安装brew 二、使用Homebrew安装miniconda brew search condabrew install miniconda安装完成后的截图&#xff1a; # 查看是否安装成功 brew list环境变量&#xff08;无需手动配置&#xff09; 先执行命令看能不能正常返回&#xff0c;如果不能正常…

WWDG窗口看门狗原理

WWDG&#xff08;窗口看门狗&#xff09;在窗口期喂狗 作用&#xff1a; 原理&#xff1a; 框图 WWDG寄存器&#xff1a; WWDG_CR控制寄存器 WWDG_CFR配置寄存器 状态寄存器WWDG_SR 超时时间计算公式 最小最大超时值 HAL配置函数&#xff1a; 1. IWDG 和 WWDG 的区别 IWDG&…

无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战

文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 如今远程办公已经从一种选择变成了许多企业和个人的必修课&#xff0c;而如何在Linux系统上高效地访…

Pygame实现射击鸭子游戏3-2

2 鸭子类Target的创建 2.1 __init__()函数 Target类的__init__()函数代码如图5所示。 图5 __init__()函数代码 其中&#xff0c;第18行将Target类声明为pygame.sprite.Sprite类的子类&#xff1b;第19行代码中&#xff0c;__init__()函数的img_path参数表示鸭子图片的文件名…

五、OpenGL中Shader与C++数据传输

文章目录 一、概述二、Shader 代码文件的基本格式三、Shader的向量语法介绍四、Shader之间的数据传输五、Shader与C的数据传输uniform六、完整示例 一、概述 在 OpenGL 中&#xff0c;Shader&#xff08;着色器&#xff09;使用 GLSL&#xff08;OpenGL Shading Language&…

【3DMAX插件】3DMAX建筑大师插件MasterBuilder使用方法

3DMAX建筑大师插件是一款专为3DMAX设计的程序化&#xff08;参数化&#xff09;建筑建模工具&#xff0c;其最大特点是能够一键生成建筑模型&#xff0c;极大地提升了工作效率。该插件配备了多种结构控制选项&#xff0c;涵盖阳台、门窗、栏杆、楼顶水塔等附属建筑元素&#xf…

隐私保护在 Facebook 用户身份验证中的应用

在这个数字化的时代&#xff0c;个人隐私保护成为了公众关注的焦点。社交媒体巨头 Facebook 作为全球最大的社交平台之一&#xff0c;拥有数十亿用户&#xff0c;其在用户身份验证过程中对隐私保护的重视程度直接影响着用户的安全感和信任度。本文将探讨 Facebook 在用户身份验…

Swift Package Manager (SPM) 创建并集成本地库

在macOS 项目中&#xff0c;使用 Swift Package Manager (SPM) 创建并集成本地库的完整步骤。 创建一个macos应用程序&#xff0c;选择 swift、oc、swiftui都可以。 创建好应用之后&#xff0c;开始创建SPM本地库。 打开终端app&#xff0c;进入项目根目录&#xff0c;逐次输…

渗透测试之利用sql拿shell(附完整流程+防御方案)【下】

导读: 时刻保持谦逊,始终保持学习,探寻事物的本质,不要把事情复杂化 话不多说,书接上回 三、利用日志getshell 利用条件: 拥有网站的写入权限知道网站的绝对路径数据库日志开启 实际操作: (1)查看数据库日志是否开启以及路径 show variables like %general%; (2…