begin

awk的BEGIN和END

不羁岁月 提交于 2020-01-21 17:32:30
你可能对Unix比较熟悉,但你可能对Unix awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。 流程控制语句是任何程序设计语言都不能缺少的部分。任何好的语言都有一些执行流程控制的语句。Unix awk提供的完备的流程控制语句类似于C语言,这给我们编程带来了极大的方便。 BEGIN和END: 在Unix awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。 任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。 例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段): $``` awk 'BEGIN { FS=":";print "统计销售金额";total=0} {print $3;total=total+$3;} END {printf "销售金额总计:%.2f",total}' sx 例2:容量字段累加 grep '19/03/12 22:' nohup.out| grep Successfully|awk '{print $9}' |

以区间为单位的二分查找

。_饼干妹妹 提交于 2020-01-21 01:24:51
【2019回家过年前的一记】 问题场景: 区间的格式如下,整体为一个Json字符串,每个区间的startTime和endTime都是按照从小到大的顺序排列的。 "[{\"endTime\":1578633955,\"startTime\":1578626876},{\"endTime\":1578640268,\"startTime\":1578634050},{\"endTime\":1578642086,\"startTime\":1578640291},{\"endTime\":1578643084,\"startTime\":1578642639}]" 现在给定一个用户需要查找的时间段: "startTime":1578585600, "endTime":1578644000 要求:返回该时间段内的所有区间,若查找的时间点位于某个区间中间,需要对该区间进行分割只返回所需要的那一段。 代码思路: ●首先将每个小区间的startTime和endTime依次存入一个数组中; ●使用二分查找该数组快速确定用户请求的时间段与原始区间的交集起始点位置index; ●从该位置开始将符合要求的区间依次放入新的json串中,期间需要对首尾两个区间进行特殊处理 【0,1】【2,3】【4,5】【6,7】 begin=0,end=7,mid=3 因为小区间都是两个元素,故mid在最后一步

ANIMATION经典小车动画

故事扮演 提交于 2020-01-20 19:57:18
适用于多个活动场景 1.HTML <body> <div class="old-driver"> <div class="box-false"> <div class="box"> <img class="car" src="car.png"> <img class="gas" src="gas.png"> </div> </div> </div> </body> 2.CSS <style type="text/css" media="screen"> .old-driver { width: 100%; height: 350px; position: relative; overflow: hidden; } @keyframes an-shake { 0%, 100% { transform: translate(1px, 0px) rotate(0deg) } 20% { transform: translate(-2px, -2px) rotate(0.2deg) } 40% { transform: translate(-2px, 1px) rotate(-0.1deg) } 60% { transform: translate(-1px, 2px) rotate(-0.2deg) } 80% { transform: translate(0px, 2px)

vector::insert和std::copy

荒凉一梦 提交于 2020-01-20 10:56:45
insert可以用于vector的拼接,将一个元素或vector插入到当前vector中。 insert官方函数解释 比如: //denoisedImage.size() == 2 //cmpCount = 1; //std::vector<cv::Mat> tmpDnImg; //tmpDnImg.clear(); tmpDnImg.insert(tmpDnImg.begin(), denoisedImage.begin() + 1, denoisedImage.end()); 上述示例将denoisedImage的一部分插入到tmpDnImg的最前端。也可以使用 std::copy 来实现相同效果: std::copy(denoisedImage.begin() + 1, denoisedImage.end(), std::back_inserter(tmpDnImg)); 。 其中,有一个点要注意,insert对于基础类型,自然就是深拷贝,直接将待插入数据一个一个地插入到相应位置;但是对于 类class等, 其可能(因为还没有看通STL的源码,故还不是很确定)只是拷贝了对象的头指针。因此在之后的操作中,denoisedImage发生了变化时(具体地,覆盖了denoisedImage下标为0,1,2的位置),对应的tmpDnImg也会发生变化。 关于vector:

虚线 转 不得闲

霸气de小男生 提交于 2020-01-19 16:38:16
procedure DrawVirtualLine(Cvs: TCanvas;FromP,ToP: TPoint); var i: integer; Xl: Single; x,y: Integer; begin Cvs.MoveTo(FromP.x,FromP.y); if FromP.x = ToP.X then begin i := FromP.Y; while i <= ToP.Y do begin Cvs.LineTo(FromP.x,i + 1); Cvs.MoveTo(FromP.X,i+4); Inc(i,4); end; end else if FromP.Y = ToP.Y then begin i := FromP.X; while i <= Top.X do begin Cvs.LineTo(i + 1,FromP.y); Cvs.MoveTo(i + 4,FromP.y); Inc(i,4); end; end else begin Xl := (ToP.Y - FromP.Y)/(ToP.X - FromP.x); if Abs(xl) >= 1 then begin i := FromP.x; y := FromP.Y; if FromP.X < ToP.X then while i <= ToP.X do begin Cvs.LineTo(i + 1

实验四主存空间的分配和回收

吃可爱长大的小学妹 提交于 2020-01-19 10:45:17
1.1. 实验目的 用高级语言完成一个主存空间的分配和回收程序,以加深对动态分区分配方式及其算法的理解。 1.2. 实验要求 采用连续分配方式之动态分区分配存储管理,使用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法4种算法完成设计。 (1)**设计一个作业申请队列以及作业完成后的释放顺序,实现主存的分配和回收。采用分区说明表进行。 (2)或在程序运行过程,由用户指定申请与释放。 (3)设计一个空闲区说明表,以保存某时刻主存空间占用情况。把空闲区说明表的变化情况以及各作业的申请、释放情况显示。 2. 实验内容 根据指定的实验课题,完成设计、编码和调试工作,完成实验报告。 3. 实验环境 可以选用Visual C++作为开发环境。也可以选用Windows下的VB,CB或其他可视化环境,利用各种控件较为方便。自主选择实验环境。 4. 参考数据结构: #include<stdio.h> #include<conio.h> #include<string.h> #define MAX 24 struct partition{ char pn[10]; int begin; int size; int end; //////// char status; ////////// }; typedef struct partition PART; 1 #include <stdio

2016 Multi-University Training Contest 1 solutions BY HIT

大憨熊 提交于 2020-01-19 10:38:35
首先向大家表示抱歉,因为这套题是去年出的,中间间隔时间太长,今年又临时准备仓促, 所以部分题目出现了一些问题,非常抱歉。 Abandoned country 首先注意到任意两条边的边权是不一样的,由此得知最小生成树是唯一的,最小生成树既然 是唯一的,那么期望其实也就是唯一的,不存在什么最小期望。求完最小生成树之后,接下 来的问题就可以转换成在最小生成树上求任意两点之间距离的平均值,对于每条边,统计所 有的路径用到此边的次数,也就是边的两端的点数之积。那么这条边的总贡献就是次数*边 权。最后得到所有边的贡献之和再除以总路径数 \(n*(n-1)/2\) 就是答案。可以 \(On\) 求出。任取一点为根dfs,对每个点 \(i\) 记录其子树包含的点数(包括其自身),设点数为 \(sum[i]\) ,则 \(i\) 的父亲一侧的点数即为 \(n-sum[i]\) 。一边遍历一边统计就行。 Chess 简单的博弈,要预处理出所有状态的Sg值,因为列为固定的20,所以状态压缩后可以存下 所有状态。 Game 题目要求出所有合法点对间的最短路径的平均值,因此我们应当求出所有合法最短点对的最 短路径之和,再除以合法点对个数。 题目中Guard之间有着很不自然的制约关系,每个Guard的周围和同行、列都不能有其余的 Guard,但不可路过的格子却只有本身一格。由此发现

递归题目

本秂侑毒 提交于 2020-01-18 00:42:39
一、递归和循环  1.理论上,任何循环都可以重写为递归形式  2.java不支持尾递归。 二、解决递归  1.问题相似性  2.递归出口。这里有时候可以通过添加参数来解决。 三、递归的原理 四、没写出口的时候,疯狂压栈,栈就会溢出。 循环、递归打印0-n package cn . itcast . suanfa ; public class Test { public static void fun1 ( int n ) { if ( n > 0 ) fun1 ( n - 1 ) ; /* * 如果n=0,会调用n=-1,错误 * 如果n=1,会调用n= 0,正确 * 所以应该是n>0 * */ System . out . println ( n ) ; } public static void fun2 ( int begin , int end ) { if ( begin > end ) return ; //这个return可以运用为,结束条件后停止该函数 System . out . println ( begin ) ; fun2 ( begin + 1 , end ) ; } public static void main ( String [ ] args ) { //方法一:递归打印0-n // fun1(10); //方法二:循环打印0-n /*for

[题解] [CF932E] TeamWork

本秂侑毒 提交于 2020-01-17 10:47:12
题面 题解 我们知道有 \[ n^k = \sum_{i = 0}^{n}i!\binom{n}{i}\begin{Bmatrix}k\\i\end{Bmatrix} \] 所以有 \[ \displaystyle\begin{aligned}\sum_{i = 1}^{n}\binom{n}{i}i^k&=\sum_{i=0}^{n}\binom{n}{i}i^k-\begin{bmatrix}k=0\end{bmatrix}\\&= \sum_{i = 0}^{n}\binom{n}{i}\sum_{j=0}^{i}j!\binom{i}{j}\begin{Bmatrix}k\\j\end{Bmatrix}-\begin{bmatrix}k=0\end{bmatrix}\\&=\sum_{i = 0}^{n}\sum_{j=0}^{i}j!\begin{Bmatrix}k\\j\end{Bmatrix}\binom{n}{i}\binom{i}{j}-\begin{bmatrix}k=0\end{bmatrix}\end{aligned} \] 交换求和号 \[ \displaystyle=\sum_{j=0}^{min(n, k)}j!\begin{Bmatrix}k\\j\end{Bmatrix}\sum_{i=j}^{n}\binom{n}{i}\binom{i}{j}

Qt 中QPainter 使用中出现的问题

牧云@^-^@ 提交于 2020-01-16 16:29:49
这两天在使用QPainter的过程中出现了一些问题,记录一下。 测试程序很简单,写一个继承自QWidget的类,重载其paintEvent函数进行绘图。 case1: 在paintEvent函数中使用一个临时的painter对象进行绘制。 结果:能够正常绘制。 case2: 在paintEvent函数中动态分配一个painter对象进行绘制。 结果:能够正常绘制。 case3:将Painter声明为一个类的成员变量进行绘制。 结果:不能正常绘制 分析:由于我在初始化m_painter时,用到的是QPainter m_painter(this); 这句代码等于QPainter m_painter,m_painter.begin(this); 但是m_painter.begin()函数只有在paintEvent()函数中调用才是有意义的(Qt中的绘制动作只能在paintEvent()函数中完成) 由于此时begin()函数隐式在构造函数中被调用了,最终倒是绘图动作失效。 试探的解决办法:在用不带参数的构造函数初始化painter,然后再paintEvent函数中利用begin函数为painter绑定对象。 试探的解决方法的结果;窗体先是正常绘制,接着就崩溃了,并报出如下错误: 我原本的思路是:当MyWidget对象析构是,就会自动调用其内部成员变量painter的析构函数