php网站开发考试/高端网站设计

php网站开发考试,高端网站设计,企业网站建设存在的典型问题有哪些?,王烨简历算法基础篇 前言 算法内容还有搜索,数据结构(进阶),动态规划和图论 数学那个的话大家也知道比较难,放在最后讲 这期包含的内容可以看目录 模拟那个算法的话就是题说什么写什么,就不再分入目录中了 注意事…

算法基础篇

前言

算法内容还有搜索,数据结构(进阶),动态规划和图论
数学那个的话大家也知道比较难,放在最后讲
这期包含的内容可以看目录
模拟那个算法的话就是题说什么写什么,就不再分入目录中了

注意事项:

1.多组测试时,一定要考虑需不需要清空数据

一般是能覆盖的话(没覆盖的部分不用就行了)不清空或者还能用就不清空

(权衡时间复杂度,清空是用时间换空间)

2.int类型的无穷大可以搞为 int inf = 0x3f3f3f3f

1.高精度

当数据的值特别大,各种类型都存不下的时候,要用高精度算法来加减乘除

步骤:

1.先用字符串读入这个数,然后用数组逆序存储该数的每一位

2.利用数组,模拟加减乘除运算的过程

高精度加法:(c= a+b,其字符串存在c[],a[],b[]中)例题:洛谷的 [P1601 A+B Problem(⾼精)]
la,lb是a,b的字符串长度
lc = max(la,lb)
for(int i = 0;i<lc;i++)
{c[i]=a[i]+b[i];//对应位相加c[i+1]=c[i]/10;//处理进位c[i]%=10;//处理余数
}
if(c[lc])lc++;//易忘,来让lc为c字符串的长度
这里字符串的长度不用数组求
读的时候先读成string,再用size()求字符串长度,最后for循环读到数组里(逆序存储)
高精度减法:(z = x - y)存储在z[],x[],y[](逆序存储)
例题: 洛谷P2142 ⾼精度减法
要让大的数减小的数才行(判断方法如下:)
1.位数不等,按照字符串的长度比较
2.位数相等,用字典序比较
bool cmp(string&x,string&y)
{
if(x.size()!=y.size()) return x.size()<y.size();//比长度return x<y//比字典序}if(cmp(x,y))
{swap(x,y);cout<<'-'; }高精度减法过程:(x大于y才行)
lz=max(lx,ly);for(int i = 0;i<lz;i++)z[i]+=x[i]-y[i];if(z[i]<0)
{z[i+1]-=1;//借位z[i]+=10;}
while(lz>1&&z[lz-1]==0)lz--;//处理前导0
高精度乘法:(c = a*b)(也要逆序存储)
例题:洛谷  P1303 A*B Problem
lc = la+lb
//无进位相乘
for(int i =0;i<la,i++)
{for(int j = 0,j<lb,j++){c[i+j] = a[i]*b[j];} }
//处理进位
for(int i = 0;i<lc,i++)
{c[i+1]+=c[i]/10;c[i]%=10;}
//处理前导0
while(lc>1&&c[lc-1]==0)lc--;
(高精度除低精度)
(数组也是逆着存的,即个位在a[0])
高精度除法(这个模板是正数的,并且数组不用逆序存储)(c=a/b)(0<b<10的9次方)
(如果要解决负数的,就先判断是不是就一个负数,是就打印个-,之后转换为此做)long long t = 0;//标记每次除完之后的余数
for(int i = la-1;i>=0;i--)
{
//计算当前的被除数t = t*10+a[i];c[i]=t/b;t%=b; }
//处理前导0
while(lc>1&&c[lc-1]==0)lc--;

2.枚举和二进制枚举

枚举其实就是暴力求解

使用时一般都会超时,此时要先根据题目的数据范围来判断暴力枚举能不能通过

不能的话就要使用后面的各种算法去优化(比如二分这些),还有就是寻找题目的各种性质去简化题目(eg:洛谷 P10449 费解的开关)

二进制枚举:
用一个数的二进制表示中的0/1表示两种状态,从而达到枚举各种情况
例题:力扣 子集
而且,把一个数的二进制存在数组中时,一般用反着存储会让过程变得简单常用于的题型:
抽象图都是矩阵,改变矩阵的值,产生效果达到要求,问有几种途径
eg: 洛谷 Even Parity

3.前缀和(一维和二维)

在使用前缀和数组时,下标最好从1开始

核心思想就是预处理(用空间代替时间),避免多次重复运算

一维前缀和:
例题:牛客网 【模板】前缀和
其实就是把前面的和加在一起二维前缀和:
例题:牛客网 【模板】⼆维前缀和
用二维数组解决
前缀和矩阵一般为
f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+a[i][j];

4.差分(一维和二维)

核心思想也是预处理,也是用空间替换时间

其实,前缀和与差分是一对互逆的运算

一维差分:
例题:牛客网 【模板】差分洛谷    P1496 ⽕烧⾚壁步骤:
1.预处理出来差分数组
f[i]表示当前元素和前一个元素的差值f[i]+=a[i];f[i+1]-=a[i];2.利用差分数组解决m次修改操作
修改操作是:原数组[L,R]区间全部加k这个操作
相当于在差分数组中,f[L]+=k;f[R+1]-=k;3.还原原始的数组
直接对差分数组做前缀和运算即可
f[i]=f[i-1]+f[i];注意事项:
差分数组使用的时候,所有的操作必须全部进行完毕后,才能还原出操作之后的数组如果操作和查询穿插在一起的话,不用差分数组,不然时间复杂度很高
eg:每操作若干次,就查询一个操作之后的结果,然回还会继续操作,继续查询
这种问题要用线段树
二维差分:
例题:牛客网 【模板】⼆维差分利用差分矩阵解决问题
作用:快速处理"将二维数组中,某一个子矩阵加上一个元素的"的操作
这个子矩阵的左上是[x1][y1],右上是[x2][y2]
与一维差分很不同的地方:
在于利用差分数组来解决m次修改
f[x1][y1]+=k;
f[x1][y2+1]-=k;
f[x2+1][y1]-=k;
f[x2+1][y2+1]+=k;
这里的前缀和的用法也是要注意的!(用的前面的二维前缀和)

5.双指针(也叫尺取法或滑动窗口)

两个指针不回退(回退没啥用)时,才能用滑动窗口法

滑动窗口的时间复杂度是O(n平方)

是先分析暴力解法(发现第一行那个),然后可以用滑动窗口法

滑动窗口步骤:
例题:洛谷  唯⼀的雪花 Unique Snowflakes
1.初始化:left right 哈希表(不一定每题都用的哈希表)
2.进窗口:right位置元素记录到统计次数的哈希表中
3.判断:当哈希表中right位置的值超过1次之后,窗口内子串不合法
4.出窗口:让left所指位置的元素在哈希表中的次数减1
5.更新结果:判断结束之后,窗口合法,此时更新窗口的大小
(在其他题时,这个更新结果不一定为这5步中的最后一步)

6.二分算法

如果逐个遍历会超时时,常用此

使用条件:要研究的问题具有二段性才行

二段性:按某种要求可以分为两部分(比如大于18岁和不大于18岁)

二分算法的时间复杂度是O(logN)

这里的模板就只用记两点:
1.while(l<r)
2.if/else成立所要执行的语句中出现-1的话(这个好判断),前面的mid就要用有+1那个
3.如果想要最后的>a,则if里面就填(f[mid]>a)
如果是有序数组中查找的话,直接用STL的lower_bound和upper_bound
这个的时间复杂度O(logN)
反之则要自己模拟实现模拟实现的细节问题:
a.while循环里面的判断如何写
b.求中点的方式选哪一种
c.二分结束之后,相遇点的情况
需要判断一下,循环结束之后,是否是我们想要的结果
二分答案:
其实跟二分查找很类似,只不过把对象改成了答案
应用场景:求最大值最小和最小值最大问题
例题:洛谷  P1873 [COCI 2011/2012 #5] EKO / 砍树

7.贪心

鼠目寸光,也就是想用局部最优找出全局最优

步骤:
1.把解决问题的过程分成若干步
2.解决每一步时,都选择"当前看起来最优的"解法
3."希望"得到全局的最优解
在竞赛时,如果根据贪心策略想出来的若干个边界情况都能过的话,就大概率没问题,不去证明了

8.倍增思想

它能够使线性的处理转化为对数级的处理,优化时间复杂度

例题:(一般只用于这俩个)
1.洛谷  P1226 【模板】快速幂LL qpow(LL a,LL b,LL p)//a的b次方对p取模{LL ret = 1;while(b)
{if(b&1)ret = ret*a%p;a = a*a%p;b>>=1; 
}return ret;//这个;易忘}
2.洛谷  P10446 64位整数乘法
//a乘b对p取模
LL qmul(LL a,LL b,LL p)
{LL sum = 0;
while(b){if(b&1) sum=(sum+a)%p;a = (a+a)%p;//倍增b>>=1;}return sum;}

9.离散化

应用场景:当题目中数据的范围很大,但是数据的总量不是很大,就可以用离散化的思想先预处理一下所有的数据

离散化模板:
排序+使用哈希表去重并且记录离散化之后的值
(有时还需要再加一个统计每个位置出现几次的数组去记录每个位置出现了几次)
离散化常要对模板进行修改
例题:洛谷  P1496 ⽕烧⾚壁
用到离散化时容易出现问题的地方(区分同种和异种)
同种被覆盖的范围的例题:洛谷  P1496 ⽕烧⾚壁异种被覆盖的范围的例题:洛谷  P3740 [HAOI2014] 贴海报
要在离散化区间[x,y]时,不仅考虑x,y这俩个值,还要把[x+1,y+1]也考虑进去。
可以让单个区间内部和区间与区间之间都出现空隙

10.递归

应用场景:搞类似二叉树和东西和有重复子问题并要dfs时常用
如果会多次重复已知计算的话,建议用递推,而不是递归
注意事项:
1.递归的出口一般写在开头的
2.尾和头处理的对就一般没问题
3.用的全局变量和局部变量的值是多久的要注意(这俩个不同)
4.递归里面的输出是从底到头搞的
5.一定要设法转化为重复子问题(利用传参的增多来实现通用化)

11.分治

就是把一个问题分为多个子问题解决

一般分为左-右-中间

应用场景:
1.解决逆序对
例题:洛谷  P1908 逆序对

‍12.其他

按照方向走的时候:
可以int d[x]={1,0,-1,0}int d[y]={0,1,0,-1}这样来表示二维上的东西可以上下左右走一格这样走
eg:洛谷的蛇形方阵
如果想要数从0开始变成从1开始的话:
可以在cin>>x之后就立马x++
eg:如果a和b的和固定,那就只用记录a的值 b的值到时候推就行了
这样可以节省存储空间
求中点用
mid = left+(right - left)/2
和 mid = left+(right - left+1)/2,避免溢出
做题时,常需要观察的性质有:
1.是不是改变顺序不影响结果
例题:洛谷  A-B 数对
取模运算技巧:
1.当计算过程中,只有"加法"和"乘法"时,想对结果取模的话,取模可以放在任意的位置
但是最后一定要有个取模
eg:(a*b*c*d)%p
和 (a%p*b*c%p*d)%p的结果一样
这个在防止超出范围时很好用
2.当计算过程中,存在"减法"时,取模结果可能是负数的,此时如果需要补正,就需要"模加模"
的技巧来补正--负的模给搞成正的那一个模
eg:写为((a-b)%p+p)%p
3.如果当计算过程中,存在"除法"时,取模是会造成结果错误的
需要用求逆元的方法
解决顶出元素且"不插入"新元素的问题:
int cnt[N];
//用于标记第i行还有多少个老元素没被顶出
让a[i][cnt[i]]每次都是第i行的最后一个元素
//顶出元素之后要i--,下标为0的不存东西

13.例题链接传送

洛谷的 [P1601 A+B Problem(⾼精)]
洛谷P2142 ⾼精度减法
洛谷 P1303 A*B Problem
洛谷 P1480 A/B Problem
力扣 子集
[牛客网 【模板】前缀和]
牛客网 【模板】⼆维前缀和
牛客网 【模板】差分
[洛谷 P1496 ⽕烧⾚壁]
牛客网 【模板】⼆维差分
洛谷 唯⼀的雪花 Unique Snowflakes
洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树
洛谷 P1226 【模板】快速幂
洛谷 P10446 64位整数乘法
洛谷 P3740 [HAOI2014] 贴海报
洛谷 P1908 逆序对

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

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

相关文章

HTML5扫雷游戏开发实战

HTML5扫雷游戏开发实战 这里写目录标题 HTML5扫雷游戏开发实战项目介绍技术栈项目架构1. 游戏界面设计2. 核心类设计 核心功能实现1. 游戏初始化2. 地雷布置算法3. 数字计算逻辑4. 扫雷功能实现 性能优化1. DOM操作优化2. 算法优化 项目亮点技术难点突破1. 首次点击保护2. 连锁…

Qt之自定义界面组件 一

通过qt中的painter绘图事件绘制一个电池电量图的变化。效果如下图 创建一个基于界面widget工程&#xff0c;在wdiget界面添加一个widget界面,将添加的widget界面的类提升为Tbattery.在Tbattery类中重写painEvent电池电量代码 文件目录结构 主要部分代码 //Tbattery.cpp #inc…

LeRobot源码剖析——对机器人各个动作策略的统一封装:包含ALOHA ACT、Diffusion Policy、VLA模型π0

前言 过去2年多的深入超过此前7年&#xff0c;全靠夜以继日的勤奋&#xff0c;一天当两天用&#xff0c;抠论文 抠代码 和大模型及具身同事讨论&#xff0c;是目前日常 而具身库里&#xff0c;idp3、π0、lerobot值得反复研究&#xff0c;故&#xff0c;近期我一直在抠π0及l…

数据结构篇——线索二叉树

一、引入 遍历二叉树是按一定规则将二叉树结点排成线性序列&#xff0c;得到先序、中序或后序序列&#xff0c;本质是对非线性结构线性化&#xff0c;使结点&#xff08;除首尾&#xff09;在线性序列中有唯一前驱和后继&#xff1b;但以二叉链表作存储结构时&#xff0c;只能获…

汽车保养记录用什么软件记录,汽车维修记录查询系统,佳易王汽车保养维护服务记录查询管理系统操作教程

一、概述 本实例以佳易王汽车保养维护服务记录查询管理系统为例说明&#xff0c;其他版本可参考本实例。试用版软件资源可到文章最后了解&#xff0c;下载的文件为压缩包文件&#xff0c;请使用免费版的解压工具解压即可试用。 软件特点&#xff1a;1、功能实用&#xff0c;操…

Python IP解析器 ip2region使用

说明&#xff1a;最近需要在python项目内使用IP定位所在城市的需求&#xff0c;没有采用向外部ISP服务商API请求获取信息的方案&#xff0c;则翻了翻&#xff0c;在搞Java时很多的方案&#xff0c;在Python端反而可选择范围很小。 # 示例查询 ips ["106.38.188.214"…

python开发订单查询功能(flask+orm bee)

1. 搭建python环境。 可以参考其它文档。 此处python使用 3.12 IDE随意&#xff0c;PyCharm 或 Eclipse PyDev也可以。 2. Flask 2.1 安装Flask pip install Flask 2.2 一个最简单的flask实例 创建一个工程&#xff0c; 新建一个 main.py文件&#xff0c; 输入以下内容…

哈尔滨服务器租用托管流程

哈尔滨服务器租用托管流程可分为三个阶段实施&#xff0c;具体操作如下&#xff1a; 一、前期准备阶段 业务需求评估 明确计算资源需求&#xff1a;CPU核心数/线程数、内存容量、存储类型(HDD/SSD/NVMe)及容量、带宽标准(独享/共享) 确定网络架构要求&#xff1a;多线接入、国际…

音频大语言模型可作为描述性语音质量评价器

论文《AUDIO LARGE LANGUAGE MODELS CAN BE DESCRIPTIVE SPEECH QUALITY EVALUATORS》学习 推动多模态代理从"能听"到"懂好坏"的进化 摘要&#xff1a; . 研究背景与问题 核心内容&#xff1a;现有音频大语言模型缺乏对输入语音质量的感知能力&#xff…

我在哪,要去哪

在直播间听到一首好听的歌《我在哪&#xff0c;要去哪》-汤倩。 遇见的事&#xff1a;21~24号抽调去招生。 感受到的情绪&#xff1a;公假吗&#xff1f;给工作量吗&#xff1f;月工作量不够扣钱吗&#xff1f;报销方便吗&#xff1f;有事情&#xff0c;从来不解决后顾&#x…

某快餐店用户市场数据挖掘与可视化

1、必要库的载入 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns2、加载并清洗数据 # 2.1 加载数据 df pd.read_csv(/home/mw/input/survey6263/mcdonalds.csv)# 2.2 数据清洗 # 2.2.1 检查缺失值 print(缺失值情况&#xff1a;) print(df.isn…

Easysearch 索引生命周期管理实战

如果你的使用场景是对时序型数据进行分析&#xff0c;可能你会更重视最新的数据&#xff0c;并且可能会定期对老旧的数据进行一些处理&#xff0c;比如减少副本数、forcemerge、 删除等。Easysearch 的索引生命周期管理功能&#xff0c;可以自动完成此类索引的管理任务。 创建…

Modbus通信协议基础知识总结

1. 数据类型与存储区分类 Modbus协议将数据分为四类存储区&#xff0c;通过存储区代号区分&#xff1a; 输出线圈&#xff08;0x&#xff09;&#xff1a;可读写&#xff0c;对应二进制开关量&#xff08;如继电器状态&#xff09;&#xff0c;地址范围000001-065536&#xff…

LeetCode 2614.对角线上的质数:遍历(质数判断)

【LetMeFly】2614.对角线上的质数&#xff1a;遍历(质数判断) 力扣题目链接&#xff1a;https://leetcode.cn/problems/prime-in-diagonal/ 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数&…

linux 安全 xshell 使用

目录和文件 ls -l 查看目录和文件的权限的设置情况 加固方法 对于重要目录&#xff0c;建议执行如下类似操作 Chmod -R 750 /etc/rc.d/init.d/* 这样只有root可以读写和执行这个目录下的脚本 新建了一个用户Q 写入了一些信息 发现在root用户下可以进行文件打开 接下来用普通用…

自动驾驶背后的数学:特征提取中的线性变换与非线性激活

在上一篇博客「自动驾驶背后的数学&#xff1a;从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、ReLU 与复合函数中&#xff0c;我们初步探讨了自动驾驶技术中从传感器数据到控制指令的函数嵌套流程&#xff0c;其中提到了特征提取模块对传感器数据进行线性…

杨校老师课堂之编程入门与软件安装【图文笔记】

亲爱的同学们&#xff0c;热烈欢迎踏入青少年编程的奇妙世界&#xff01; 我是你们的授课老师杨校 &#xff0c;期待与大家一同开启编程之旅。 1. 轻松叩开编程之门 1.1 程序的定义及生活中的应用 程序是人与计算机沟通的工具。在日常生活中&#xff0c;像手机里的各类 APP、电…

DeepSeek 3FS 与 JuiceFS:架构与特性比较

近期&#xff0c;DeepSeek 开源了其文件系统 Fire-Flyer File System (3FS)&#xff0c;使得文件系统这一有着 70 多年历时的“古老”的技术&#xff0c;又获得了各方的关注。在 AI 业务中&#xff0c;企业需要处理大量的文本、图像、视频等非结构化数据&#xff0c;还需要应对…

Coco AI 智能检索 Hugo Blog 集成指南

在此前的文章中&#xff0c;我们介绍了如何使用 Coco Server 连接 Notion&#xff0c;实现智能内容检索。本次&#xff0c;我们将进一步探索如何在 Coco Server 最新版本 中集成 Hugo Site&#xff0c;以便对 Hugo 站点 进行高效检索。 Coco Server 部署方式 要在本地或服务器…

Mobile-Agent-V:通过视频引导的多智体协作学习移动设备操作

25年2月来自北京交大和阿里巴巴公司的论文“Mobile-Agent-V: Learning Mobile Device Operation Through Video-Guided Multi-Agent Collaboration”。 移动设备使用量的快速增长&#xff0c;迫切需要改进自动化以实现无缝任务管理。然而&#xff0c;因缺乏操作知识&#xff0…