top

啊哈算法之巧用栈解密回文字符串

匿名 (未验证) 提交于 2019-12-02 21:40:30
简述 本算法摘选自啊哈磊所著的《啊哈!算法》第二章第二节的题目――使用栈来解密回文。文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,意在深刻理解栈这一数据结构的特性和操作方法,并希望能够在这种数据结构的帮助之下,解决其他的类似的能够用栈来解决的问题。(哈哈,偷懒了,引用了上一篇博文的简述) 算法题目 回文字符串就是正读反读均相同的字符串序列,比如“xyzyx”、“aha”、"ahaha"和“121”等等,现在要求你使用算法来判断给定一个字符串是否是回文字符串。 解题思路 如果一个字符串是回文的话,那么它肯定是中间对称的,只需要将中间点以前的字符串反过来与中间点后面的字符串一一比较,如果都相等,那么就是回文字符串了,那么如何能够将中间点前面的字符串依次读入然后再反过来读出呢,这个时候栈就上场了。 栈是一种后进先出的数据结构,只能在一端进行插入和删除操作,就如同手枪弹夹一样,装子弹的时候总是在弹夹的异端塞入,而且最后装入的那发子弹会最先打出,最先装入的字段成了最后一发,弹夹的结构就类似于栈的原理结构。把回文字符串顺着放进栈中,能够倒着顺序取出来,这刚好就满足了我们的需求,栈的实现也很简单,只需要一个一维数组和一个指向栈顶的指针(变量)top,我们在插入或者删除栈中数据时移动top指针就行了,这样我们就能很容易的接用栈这种数据结构来判断字符串是否是回文了

JavaScript―瀑布流

匿名 (未验证) 提交于 2019-12-02 21:35:18
现在网页中需要翻页的列表,好多都已经改为瀑布流了。所以这个思路还是特别重要的 HTML Css 页面 因为每个图片的高度不一样所以她的 top 和left 我们待会通过JS计算 动态生成 <script> // 1.获取父容器的宽度 获取子容器的宽度 算出一列放多少个,边距 // 2.通过计算盒子的高度,布局方法 // 3.瀑布流启动 //获取父容器 let itemBox=document.getElementById('itembox') //父容器宽度 let iBoxW=itemBox.offsetWidth; // 子容器和宽度 let item=document.getElementsByClassName('item') let itemW=item[0].offsetWidth //列数 const rowNum=Math.floor(iBoxW/itemW) //间距 const distents=Math.floor((iBoxW-itemW*rowNum)/rowNum) // console.log(distents,rowNum) // 每个图片的left=列数*(图片大小+间距) //每个图片的top值为当前高度最低的top //保存每列的高度、索引就是我们放的列数,值就是top let arr=[] // 实现布局 for (let i=0;i

网页栏目左侧固定,当滚动到底部时自动调整位置

匿名 (未验证) 提交于 2019-12-02 20:32:16
网页栏目左侧固定,当滚动到底部时自动调整位置 预览地址: https://ovsexia.gitee.io/leftfixed/ html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <script src="js/jquery-1.10.1.min.js" type="text/javascript"></script> 6 <link href="css/layout.css" type="text/css" rel="stylesheet" /> 7 <link href="css/style.css" type="text/css" rel="stylesheet" /> 8 </head> 9 10 <div class="top"></div> 11 12 <div class="page"> 13 <div

Linux CPU性能分析与监控——vmstat、top

混江龙づ霸主 提交于 2019-12-02 17:10:09
Linux性能监控工具汇总: - iostat 磁盘性能监控 - vmstat 虚拟内存性能监控、CPU监控(进程上下文切换、CPU利用率) - top 系统负载、CPU使用率、各个进程的详细报告(CPU使用率、内存使用情况)等 - free 内存使用情况。 - ps ps命令不算是性能监控工具,但是可以使用ps配合上述命令,找到占有系统资源较高的进程 本文重点讲下vmstat的用法,其他如top不做讲解,基本上vmstat的报告能看到,top的也差不多。top报告如有不懂得地方,可以man top 一、vmstat用法   vmstat命令主要用于查看虚拟内存的,但是也可以查看系统其他资源的使用情况,如CPU vmstat [interval] [count] vmstat选项 -a 显示活跃内存(active)和非活跃内存(inact) -f 显示从系统启动至今的fork数量 -m 显示slabinfo -s 静态显示内存相关信息 首先运行一个默认命令, 根据输出结果,解释下各个字段的含义,有助于下面的分析。 [root@master ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so

图解linux下top命令的使用

不想你离开。 提交于 2019-12-02 16:26:31
top命令经常用来监控linux的 系统 状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。 本文通过一个运行中的WEB服务器的top监控截图,讲述top视图中的各种数据的含义,还包括视图中各进程(任务)的字段的排序。 top进入视图 top视图 01 【top视图 01】是刚进入top的基本视图,我们来结合这个视图讲解各个数据的含义。 第一行: 10:01:23 当前系统时间 126 days, 14:29 系统已经运行了126天14小时29分钟(在这期间没有重启过) 2 users 当前有2个用户登录系统 load average: 1.15, 1.42, 1.44 load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。 第二行: Tasks 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。 第三行:cpu状态 6.7% us 用户空间占用CPU的百分比。 0.4% sy 内核空间占用CPU的百分比

长链剖分

我与影子孤独终老i 提交于 2019-12-02 10:45:45
一种用来合并子树中关于深度的信息的trick 重儿子定义为沿着重儿子走到的叶子深度最深。 1. 求 $k$ 级祖先 一个节点的 $k$ 级祖先所在的重链长度不小于 $k$。 证明显然。 1. 记录重链长度 $len[u]$ 以及链头 $top[u]$。 2. 记录倍增数组 $fa[u][sz]$。 3. 记录每条重链的链头往上跳重链长度的祖先 $up[u][len]$ 以及往下走重链长度的儿子 $down[u][len]$。 4. 记录每一个数字最高位的 $1$ $highbit[n]$。 预处理部分 $O(nlogn)$ 先要求 $u$ 的 $k$ 级祖先。$u$ 所在的重链长度不一定大于 $k$,所以无法通过 3 得到的数组 $O(1)$ 得到答案。 可以先用倍增数组往上跳 $2^{highbit[k]}$ 步,得到节点 $v$。 $v$ 为 $u$ 的 $2^{highbit[k]}$级祖先,那么这条重链长度不小于 $2^{highbit[k]}$。 就可以用 3 得到的数组 $O(1)$ 得到答案了。 #include <bits/stdc++.h> const int N = 3e5 + 7; int fa[N][20], n, son[N], len[N], sz[N], dep[N], highbit[N]; int top[N]; std::vector<int>

2019E0_C连续子序列的权值

∥☆過路亽.° 提交于 2019-12-02 10:31:08
连续子序列的权值 题目 知识点:单调栈 我们定义连续序列a[p],a[p+1]…a[q]的权值为max(a[p],a[p+1]…a[q])- min(a[p],a[p+1]…a[q]),给定一个由N个整数组成的序列,请求出所有连续子序列的权值和。 输入 第1行:1个数N,表示数组的长度。(1<=N<=50000) 第2−N+1行:每行1个数,表示数组中的元素(1<=A[p]<=50000) 输出 输出所有连续子序列的权值和。 输入样例 5 1 2 3 4 5 输出样例 20 思路 我们定义连续序列a[p],a[p+1]…a[q]的权值为max(a[p],a[p+1]…a[q)- min(a[p],a[p+1]…a[q]),给定一个由N个整数组成的序列,请求出所有连续子序列的权值和。 首先题目的意思可以转化为求所有的子数组最大值之 和减去所有的子数组最小值之和。 那么我们可以通过两次单调栈求得以每个 a[i]作为最大以最小的左右两端能到达的端点。 然后以每个 a[i]作为贡献的区间的值是多少呢?因为当 a[i]作为贡献时子数组区间必过 a[i],那么我们只需要在 a[i] 作为贡献的左区间和右区间任选 2 个组成区间即为 a[i]的贡 献,所以是 a[i] (i-l[i]+1) (r[i]-i+1)。 代码 # include <cstdlib> # include

初学虚树

我怕爱的太早我们不能终老 提交于 2019-12-02 09:13:25
今天考了个模拟赛,虚树的题我拿 \(LCT\) 粗暴卡过,然后被各路神仙疯狂嘲讽,然后就奋发图强,来学了个虚树。 虚树的概念 先放一个例题吧: [SDOI 2011]消耗战 例题单个询问的树形DP可以说是非常简单了,但是多个询问就会 \(GG\) ,于是我们痛定思痛,发现其实我们并不需要整棵树来转移,我们只需要得到每一个目标节点和他们的 \(LCA\) 所构成的树即可,而树的边权即为树上两点在原树上的路径中的最小值。 那么像这种由目标节点和他们的 \(LCA\) 所构成的树即为虚树。 虚树的构造 既然知道了啥是虚树,那么就让我们再来看看虚树应该怎么构造吧。 其实虚树的构造过程类似 \(dfs\) 。 我们先整个类似 \(dfs\) 的栈,这个栈里存的只有虚树上需要的节点。 那么对于一个新加入的目标节点 \(x\) (显然目标节点要按 \(dfs\) 序排序再加入),我们分两种情况讨论: \(x\) 在以 \(stk[top]\) 为根的子树中 \(x\) 不在以 \(stk[top]\) 为根的子树中 第一种情况很简单,直接把 \(x\) 加入栈即可。 让我们来具体研究一下第二种情况: 我们找到次栈顶结点 \((stak[top-1])\) 与 \(x\) 的 \(LCA\) ,我们只需要一直把次栈顶与 \(LCA\) 比较,若 \(dep[stk[top-1]]>dep[LCA]

css html应用实例1:滑动门技术的简单实现

允我心安 提交于 2019-12-02 09:11:24
关于滑动门,现在的页面中好多地方都会用到滑动门,一般用作于导航背景,它的官方解释如下: 滑动门 :根据文本自适应大小,根据背景的层叠性制作,并允许他们在彼此之上进行滑动,以创造出一些特殊的效果。 为什么很多人喜欢用滑动门呢,因为有些时候导航的字体长度不一致,长长短短实在不好弄背景图片之类啥的,如果单独根据不同的长度调用不同的背景图片太麻烦不说服务器压力 也太大,所以滑动门技术应运而生,它可以根据元素本身的长度而调节背景图片的长度,至始至终只用到两张图片,网页加载速度提高不说,程序员工作量也减少了。 效果图如下: 1.准备图片如下:(left.jpg和right.jpg是由1.jpg分割而来的)) 2.代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style> .top{height: 35px;width: 600px;margin: 0 200px;background: url("imags/2.jpg"); } .top ul{margin: 0;padding: 0;list-style: none;} .top ul li{float: left;line-height: 30px;} .top ul li:nth-child

top命令详解

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-02 08:20:53
ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。 为此, Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。 top 命令的基本格式如下: [root@localhost ~]#top [选项] 选项: -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒; -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中; -n 次数:指定 top 命令执行的次数。一般和"-"选项合用; -p 进程PID:仅查看指定 ID 的进程; -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误; -u 用户名:只监听某个用户的进程; 在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作: ? 或 h:显示交互模式的帮助; P:按照 CPU 的使用率排序,默认就是此选项; M:按照内存的使用率排序; N:按照 PID 排序; T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序; k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9