当前位置: 首页 > news >正文

刷题感悟w

题目很长的一定要慢慢把题目的意思搞清楚

有重复操作不知道怎么办 可以用数组去标记

你好!在C++中,replace 函数通常是用于替换容器(例如 std::vectorstd::string)中的特定元素的函数。以下是 std::replace 函数的一般用法:

 

cpp复制代码

#include <algorithm> // 包含 algorithm 头文件 int main() { std::vector<int> numbers = {1, 2, 3, 4, 2, 5}; // 使用 std::replace 替换所有等于 2 的元素为 6 std::replace(numbers.begin(), numbers.end(), 2, 6); // 打印替换后的容器内容 for (int num : numbers) { std::cout << num << " "; } return 0; }

在上面的示例中,我们包含了 <algorithm> 头文件,然后使用 std::replace 函数来将容器 numbers 中的所有值为 2 的元素替换为 6。这个函数会遍历容器,找到匹配的元素并替换它们。

注意,std::replace 不是用来替换某个特定位置的元素,而是替换容器中所有匹配的元素。如果你只想替换单个元素,可以通过索引或迭代器来访问并修改特定位置的元素。

如果你需要在字符串中替换子字符串,你可以使用 std::stringreplace 成员函数,如下所示:

 

cpp复制代码

#include <iostream> #include <string> int main() { std::string text = "Hello, world! Hello, universe!"; // 使用 std::string::replace 替换所有 "Hello" 为 "Hi" size_t found = text.find("Hello"); while (found != std::string::npos) { text.replace(found, 5, "Hi"); found = text.find("Hello", found + 2); // 从下一个位置开始查找 } // 打印替换后的字符串 std::cout << text << std::endl; return 0; }

在上述示例中,我们使用 std::string::replace 函数来查找并替换字符串中的所有匹配项。

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
    string essay = "This is a sample essay with spaces";
    replace(essay.begin(), essay.end(), ' ', '\0');
    cout << essay;
    return 0;
}

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
    string essay = "This is a sample essay with spaces";
    essay.erase(remove(essay.begin(), essay.end(), ' '), essay.end());
    return 0;
}

一般的,求解的个数用深搜,求最优解用广搜。

for (int k = 0; k <= 3; k++) {
    if (i >= 1 && i <= n && j >= 1 && j <= m && board[i][j])
        dfs(i + dir[k][0], j + dir[k][1], t - 1);
}

只要这个点没超过边界就去遍历 要快一点

struct cmp1 {
    bool operator()(node x, node y) {
        return x.num > y.num;
    }
};
priority_queue<node, vector<node>, cmp1>q;

ios::sync_with_stdio(false); 是 C++ 中的一行代码,用于设置 C++ 的输入输出流与 C 标准 I/O 流的同步性。
在 C++ 中,默认情况下,cin 和 cout 这样的 C++ 输入输出流与 C 标准 I/O 流(例如 stdin 和 stdout)是同步的,这意味着它们共享一些状态。这种同步可能会导致性能损失,因为每当切换输入输出方式时(比如,从 cin 到 stdin 或从 cout 到 stdout),程序必须花费额外的开销来同步这些流。
通过使用 ios::sync_with_stdio(false); 可以禁用这种同步。当将其设置为 false 时,C++ 输入输出流与 C 标准 I/O 流之间的同步将被禁用,这可能会提高程序的性能,特别是在大量输入输出操作时。
然而,这样做也会带来一些风险。例如,一旦禁用同步,最好不要混合使用 C++ 输入输出流和 C 标准 I/O 流,因为它们可能会出现未定义的行为或错误。此外,禁用同步可能会导致一些特定的平台依赖问题。
总之,ios::sync_with_stdio(false); 是一个用于禁用 C++ 输入输出流与 C 标准 I/O 流同步的语句。虽然它可以提高程序性能,但同时也带来了一些潜在的风险和限制。

#define re register int 
inline int read() {
    int x, ff = 1;
    char c = getchar();
    while (c < '0' || c>'9') {
        if (c == '-')ff = -1;
        c = getchar();
    }
    while (c >= '0' && c <= '9') {
        x = x << 1 + x << 3 + x ^ 48;
        c = getchar();
    }
    return x * ff;
}

0x7f7f7f7f

  • 0x 表示后面的数字是十六进制。
  • 7f 在十六进制中表示二进制的 01111111

因此,0x7f7f7f7f 转换为二进制是 01111111011111110111111101111111

0x7fffffff;0111111111111111111111.....

:在环形问题中,可以选择(i+1)%n的方式,但也可以将n个元素复制一遍,变成2*n个元素,简化代码。

inline int read() {
    register int ans = 0, register char c = getchar();
    bool flag = true;
    while (c < '0' || c>'9') {
        if (c == '-')
            flag = false;
        c = getchar();
    }
    while (c >= '0' && c <= '9') {
        ans = (ans << 3) + (ans << 1) + c - '0';
        c = getchar();
    }
    return flag * ans;
}

两个数的积等于它们最大公约数和它们最小公倍数的积

end()成员函数返回指向末尾位置的迭代器。这个“末尾位置”指的是最后一个元素再往后一位,也就是说end()所指的位置不包含有效元素,它相当于一个虚设的节点

Iter it = myList.end();
--it;
//C++11中可以直接写成it = prev(myList.end());
//这里prev是头文件<iterator>提供的函数,用于返回将某个迭代器前移一位的结果
Iter it2 = myList.insert(it, 3);
//myList的内容:1,3,2

在C++中,std::unique() 是一个用于处理容器的算法函数,主要用于移除容器中相邻的重复元素。它通常与 std::sort() 结合使用,以确保相同的元素相邻。

tf=scanf("%c",&xg)==1?true:false;//如果下一个没有运算符了,则tf=false,既保证了此次循环的正常运行,又能在下一遍循环跳出

 int getin() {
    int x = 0; char ch = getchar();
    while (ch < '0' || ch>'9')ch = getchar();
    while (ch >= '0' && ch <= '9')x = x * 10 + ch - 48, ch = getchar();
    return x;
}快速读入整数函数

bool operator < (const node&x) const { return rnd<x.rnd; } 这里的两个const的作用是什么

你好!在这个代码片段中,const 关键字有两个不同的作用:

  1. 第一个 const 位于函数参数列表的最后,用于修饰成员函数,表示这个成员函数不会修改对象的成员变量。这是 C++ 中的常见做法,被称为常量成员函数。在这个特定的 operator< 函数中,这意味着它不会修改调用它的对象或对象的成员变量。

  2. 第二个 const 位于函数体之前,修饰整个成员函数,表示这个函数不会修改调用对象的任何成员变量。这是一种对函数的额外承诺,可以帮助编译器进行一些优化,并防止在不应该修改对象状态的情况下发生错误的修改。

//三个函数,感觉这样写可能会比 C++ 自带的快一些 
inline double Max(double a,double b){return a > b ? a : b ;
}
inline double Min(double a,double b){return a < b ? a : b ;
}
inline int Abs(int a,int b){if(a>b)return a-b;return b-a;
}

最短最小 广度  下一点等于上一点+1 

改变枚举顺序也是提高效率的好方法

fill(begin,end,value)

void *memset(void *ptr, int value, size_t num);

其中:

  • ptr是指向要设置数值的内存起始地址的指针。
  • value是要设置的值,通常是一个无符号字符型(unsigned char)的整数。
  • num是要设置的字节数。
  • getchar_unlocked()函数比getchar()函数更快。
  • template< class ForwardIt, class T >
    void replace( ForwardIt first, ForwardIt last, const T& old_value, const T& new_value );
    

    参数说明:

  • first 和 last 是迭代器,表示容器中要替换的元素的范围,闭区间为 [first, last)
  • old_value 是要被替换的元素。
  • new_value 是替换后的新元素。
  • void replaceSubstring(string& str, string olds, string news) {
        int pos = 0;
        while ((pos = str.find(olds, pos) != string::npos)) {
            str.replace(pos, olds.length(), news);
            pos += news.length();
        }
    }
  • 搜索的剪枝,做标记,遍历过的跳过
  • 
    std::fill(arr, arr + size, 1);
    

    std::fill 函数可以将一个范围内的元素都设置为指定的值。在这里,我们将数组 arr 的所有元素(从 arr 开始的 size 个元素)都设置为1。

    使用 std::

深度优先搜索的时候 某个点的值要由周围推过来时,先dfs()周围的点,然后根据周围点来求该点


            dfs(nextr, nextc);
            s[r][c] = max(s[r][c], s[nextr][nextc] + 1);

但是dp要考虑无后效性。这就是为什么要用priority_queue,先算较低的点,对后面算高的点没有影响。最后遍历一遍整个地图,求出最高的一个点。 有影响。

         两个数组。

class MyFunc { public: int operator()(int x, int y) { return x + y; } }; int main() { MyFunc func; int result = func(3, 4); // 等价于调用 func.operator()(3, 4); // result = 7 }

静静静静静静静静静静心心心............................................................................................。

深度优先搜索需要什么参数先搞清楚

状态哪里来

int* arr = (int*)malloc(10 * sizeof(int))

arr = (int*)realloc(arr, 20 * sizeof(int))

void *calloc(size_t n, size_t size);

其中,n表示要分配的元素个数,size表示每个元素的大小,函数返回一个指向已分配内存起始地址的指针。与malloc不同的是,calloc会在分配内存后将其初始化为0。size以字节为单位。

相关文章:

刷题感悟w

题目很长的一定要慢慢把题目的意思搞清楚 有重复操作不知道怎么办 可以用数组去标记 你好&#xff01;在C中&#xff0c;replace 函数通常是用于替换容器&#xff08;例如 std::vector 或 std::string&#xff09;中的特定元素的函数。以下是 std::replace 函数的一般用法&…...

记一次linux操作系统实验

前言 最近完成了一个需要修改和编译linux内核源码的操作系统实验&#xff0c;个人感觉这个实验还是比较有意思的。这次实验总共耗时4天&#xff0c;从对linux实现零基础&#xff0c;通过查阅资料和不断尝试&#xff0c;直到完成实验目标&#xff0c;在这过程中确实也收获颇丰&…...

java操作富文本插入到word模板

最近项目有个需求&#xff0c;大致流程是前端保存富文本&#xff08;html的代码&#xff09;到数据库&#xff0c;后台需要将富文本代码转成带格式的文字&#xff0c;插入到word模板里&#xff0c;然后将word转成pdf&#xff0c;再由前端调用接口下载pdf文件&#xff01; 1、思…...

JMeter---BeanShell实现接口前置和后置操作

在JMeter中&#xff0c;可以使用BeanShell脚本来实现接口的前置和后置操作。 下面是使用BeanShell脚本实现接口前置和后置操作的步骤&#xff1a; 1、在测试计划中添加一个BeanShell前置处理器或后置处理器。 右键点击需要添加前置或后置操作的接口请求&#xff0c;选择&quo…...

【Linux】共享内存

文章目录 一、共享内存的原理详谈共享内存的实现过程二、共享内存的接口函数1.shmget2. shmatshmdtshmctl 进程间使用共享内存通信三、共享内存的特性 关于代码 一、共享内存的原理 共享内存是由操作系统维护和管理的一块内存。 共享内存的本质是内核级的缓冲区。 一个进程向…...

五、双向NAT

学习防火墙之前&#xff0c;对路由交换应要有一定的认识 双向NAT1.1.基本原理1.2.NAT Inbound NAT Server1.3.域内NATNAT Server —————————————————————————————————————————————————— 双向NAT 经过前面介绍&#xff0c;…...

P1028 [NOIP2001 普及组] 数的计算

时刻记住一句话&#xff1a;写递归&#xff0c;1画图&#xff0c;2大脑放空&#xff01;&#xff01;&#xff01; 意思是&#xff0c;自己写递归题目&#xff0c;先用样例给的数据画图&#xff0c;然后想一个超级简单的思路&#xff0c;直接套上去就可以了。 上题干&#xff…...

浅析三相异步电动机控制的电气保护

安科瑞 华楠 摘 要&#xff1a;要求三相异步电动机的控制系统不仅要保证电机正常启动和运行&#xff0c;完成制动操作&#xff0c;还要通过相关保护措施维护电动机的安全使用。基于此&#xff0c;本文以电动机电气保护作为研究对象&#xff0c;结合三相异步电动机的机械特点&…...

Java设计模式系列:单例设计模式

Java设计模式系列&#xff1a;单例设计模式 介绍 所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个取得其对象实例的方法&#xff08;静态方法&#xff09; 比如 Hiberna…...

开拓新天地:探讨数位行销对医药产业医病连结的影响

数字营销模式多元&#xff0c;主要围绕医生和患者。赛道各企业凭借各自优势&#xff08;技术、学术、流量等&#xff09;入局&#xff0c;提供各自差异化营销工具或服务。目前&#xff0c;围绕医生的数字营销旨在为医生提供全面学术解决方案从而提升对医药产品的认可&#xff0…...

[tsai.shen@mailfence.com].faust勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; [support2022cock.li].faust、[tsai.shenmailfence.com].faust、[Encrypteddmailfence.com].faust勒索病毒是一种具有恶意目的的勒索软件&#xff0c;其主要特点包括对受害者文件进行强力加密&#xff0c;然后勒索受害者支付赎金以获取解密密钥。攻击者通常通…...

Peter算法小课堂—前缀和数组的应用

桶 相当于计数排序&#xff0c;看一个视频 桶排序 太戈编程1620题 算法解析 #include <bits/stdc.h> using namespace std; const int R11; int cnt[R];//cnt[t]代表第t天新增几人 int s[R];//s[]数组是cnt[]数组的前缀和数组 int n,t; int main(){cin>>n;for(…...

线性表之链式表

文章目录 主要内容一.单链表1.头插法建立单链表代码如下&#xff08;示例&#xff09;: 2.尾插法建立单链表代码如下&#xff08;示例&#xff09;: 3.按序号查找结点值代码如下&#xff08;示例&#xff09;: 4.按值查找表结点代码如下&#xff08;示例&#xff09;: 5.插入节…...

[Docker]十.Docker Swarm讲解

一.Dokcer Swarm集群介绍 1.Dokcer Swarm 简介 Docker Swarm 是 Docker 公司推出的用来管理 docker 集群的工具&#xff0c; 使用 Docker Swarm 可以快速方便的实现 高可用集群 ,Docker Compose 只能编排单节点上的容器, Docker Swarm 可以让我们在单一主机上操作来完成对 整…...

相机机模组需求示例

产品需求名称摄像头采集图片数据补充说明产品需求描述 As&#xff1a;用户 I want to&#xff1a;通过相机模组获取到自定义格式图片数据&#xff0c;要求包括&#xff1a; 1、支持多种场景&#xff0c;如&#xff1a;手持相机拍摄舌苔 2、支持图片分辨率至少达到1920X1080 3、…...

Uniapp 微信登录流程解析

本文将介绍在 Uniapp 应用中实现微信登录的流程&#xff0c;包括准备工作、授权登录、获取用户信息等步骤。 内容大纲&#xff1a; 介绍Uniapp和微信登录&#xff1a; 简要介绍 Uniapp 框架以及微信登录的重要性和流行程度。 准备工作&#xff1a; 注册微信开发者账号创建应用…...

红旗Asianux Server Linux V8 安装万里数据库(GreatSQL)

红旗Asianux Server Linux V8 安装万里数据库&#xff08;GreatSQL&#xff09; 红旗Asianux介绍&#xff1a; 红旗Asianux Server Linux 8.0是为云时代重新设计的操作系统&#xff0c;为云时代的到来引入了大量新功能&#xff0c;包括用于配置管理、快速迁移框架、编程语言和…...

一文2000字使用JMeter进行接口测试教程!(建议收藏)

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Cho…...

Spark---介绍及安装

一、Spark介绍 1、什么是Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架&#xff0c;Spark拥有Hadoop MapReduce所具有的优点&#xff1b;但…...

uni-app:实现request请求的递归(设置request请求的访问次数),并且调用自定义方法给出返回值

一、效果展示 失败效果 成功效果 二、写入后端请求部分 分析 ①自定义一个模块common.js主要用于封装所有的请求函数 ②核心代码 function requestWithRetry(cmd, username, password, retryCount) {return new Promise((resolve, reject) > {uni.request({url: ip sys…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...