GT

51Nod ~ 1267 ~ 4个数和为0(二分or尺取)

北城余情 提交于 2020-04-06 05:22:49
思路: N的范围为1000,所以四重for循环枚举显然不行。所以我们可以先将两个不同数字相加的结果算出来,然后问题就变为在这个数组中找到两个数字相加等于0的问题。 如果在枚举一个数字,在这个集合中寻找它的负数,可是我们这样复杂度依旧为n^2*n^2=n^4会超时。我们有两种做法(先对数组排序 ): <1> 二分查找,枚举一个数二分查找他的负数,复杂度为 ,这样就能过了。可是你在仔细想想这四个数字不能重叠,可能会出现A+B+B+C=0的情况,所以这样写是有BUG的,所以我们要对每两个数字的和做标记表示他是由哪两个数字相加得出来得(用个结构体就可以了)。再想一下二分可能得情况,对于当前枚举的数字sum[i],查找数组为sum查找值key=-sum[i],①key<sum[m],使L=m+1向右缩区间 ②key>sum[m],使R=m-1向右缩区间 ③key==sum[m],这种时候我们要判断是不是sum[i]=A+B,sum[m]=B+X,sum[i]+sum[m]=A+B+B+X=0的情况,如果不是就找到了答案直接跳出到最外层输出答案就行了,否则的话跳出二分,去枚举下一个数字就可以(为什么?解释在下面关键点中)。 <2> 我们也可以采取尺取法,复杂度为 。然后定义两个指针i从前往后扫,j从后往前扫,①sum[i]+sum[j]<0,这时候让i++②sum[i]+sum[j]>0,让j

addprefix --Makefile加前缀函数

一笑奈何 提交于 2020-04-06 04:03:06
加前缀函数——addprefix $(addprefix ,<names…> ) 名称:加前缀函数——addprefix。 功能:把前缀加到中的每个单词后面。 返回:返回加过前缀的文件名序列。 $( addprefix src/,a.c b.c ) 返回值为“src/a.c src/b.c” 点赞 收藏 分享 文章举报 Achou.Wang 博客专家 发布了370 篇原创文章 · 获赞 153 · 访问量 34万+ 他的留言板 关注 来源: oschina 链接: https://my.oschina.net/u/4295062/blog/3216295

Oracle高级操作:启停服务,开启PDB,创建表空间、用户、导入导出用户数据等

隐身守侯 提交于 2020-04-06 03:41:28
sqlplus system/orcl_123456@orcl //sqlplus连接 select name from v$database; //查询当前数据库名 select instance_name from v$instance; // 查询当前数据库实例名 //创建临时表空间 CREATE TEMPORARY TABLESPACE OX_TEMP TEMPFILE '/opt/oracle/oradata/orcl/OX_TEMP.DBF' SIZE 64M AUTOEXTEND ON NEXT 64M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; //创建数据表空间 CREATE TABLESPACE OX_DATA LOGGING DATAFILE '/opt/oracle/oradata/orcl/OX_DATA.DBF' SIZE 64M AUTOEXTEND ON NEXT 64M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; //创建用户(方案) 并指定表空间 CREATE USER OX IDENTIFIED BY ox_123456 ACCOUNT UNLOCK DEFAULT TABLESPACE OX_DATA TEMPORARY TABLESPACE OX_TEMP;

第12周 【项目二】 Dijkstra算法的验证

删除回忆录丶 提交于 2020-04-06 03:35:12
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年11月23日 *版本号:v1.0 *问题描述: Dijkstra算法的验证 以下图为例: 一、以图数据库为基础编辑头文件: #ifndef GRAPH_H_INCLUDED #define GRAPH_H_INCLUDED #define MAXV 100 //最大顶点个数 #define INF 32767 //INF表示∞ #define MaxSize 100 typedef int InfoType; //以下定义邻接矩阵类型 typedef struct { int no; //顶点编号 InfoType info; //顶点其他信息,在此存放带权图权值 } VertexType; //顶点类型 typedef struct //图的定义 { int edges[MAXV][MAXV]; //邻接矩阵 int n,e; //顶点数,弧数 VertexType vexs[MAXV]; //存放顶点信息 } MGraph; //图的邻接矩阵类型 //以下定义邻接表类型 typedef struct ANode //弧的结点结构类型 { int adjvex; //该弧的终点位置 struct ANode *nextarc;

C/C++ 语言中简单体验复杂度(1)

寵の児 提交于 2020-04-06 03:32:18
/* *Copyright (c) 2017, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作 者:黄士胜 *完成日期:2017年9月13日 *版 本 号:v1.0 * *问题描述:使用两种不同的算法对十万条数据进行排序 *输入描述:含有十万条数据的文档 *程序输出:见程序运行截屏 */ 接下来介绍两种方法,我们知道高一我们重点学习了选择法排序和冒泡法排序现在我来演示不同的排序法效率。 #include <stdio.h> #include <time.h> #include <stdlib.h> #define MAXNUM 100000 void selectsort(int a[], int n) { int i, j, k, tmp; for(i = 0; i < n-1; i++) { k = i; for(j = i+1; j < n; j++) { if(a[j] < a[k]) k = j; } if(k != j) { tmp = a[i]; a[i] = a[k]; a[k] = tmp; } } } int main() { int x[MAXNUM]; int n = 0; double t1,t2; FILE *fp; fp = fopen("numbers.txt", "r"); if(fp==NULL

第4周 【项目三】 单链表应用

∥☆過路亽.° 提交于 2020-04-06 02:59:58
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月7日 *版本号:v1.0 *问题描述:1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。 2、已知L1和L2分别指向两个单链表的头结点,且已知其长度分别为m、n,请设计算法将L2连接到L1的后面。实现这个算法,完成测试,并分析这个算法的复杂度。 3、设计一个算法,判断单链表L是否是递增的。实现这个算法,并完成测试。 一、建立单链表算法库: ① 建立头文件linklist.h #ifndef LINKLIST_H_INCLUDED #define LINKLIST_H_INCLUDED typedef int ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; //指向后继结点 }LinkList; void CreateListF(LinkList *&L,ElemType a[],int n);//头插法建立单链表 void CreateListR(LinkList *&L

C/C++ 第四周线性表(二)-- 项目三 单链表的应用(1)

回眸只為那壹抹淺笑 提交于 2020-04-06 02:56:55
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp list.h list.cpp *作者:黄士胜 *完成日期:2017年9月27日 *版本号:v1.0 * *问题描述:逆置单链表 *输入描述:单链表 *程序输出:初始单链表,逆置单链表 */ 先关代码 mian.cpp: #include <stdio.h> #include <malloc.h> #include "../linklist.h" void Reverse(LinkList *&L) { LinkList *p=L->next,*q; L->next=NULL; while (p!=NULL) //扫描所有的结点 { q=p->next; //让q指向*p结点的下一个结点 p->next=L->next; //总是将*p结点作为第一个数据结点 L->next=p; p=q; //让p指向下一个结点 } } int main() { LinkList *L; ElemType a[]= {1,2,3,4,5,6,7,8,9,10}; CreateListR(L,a,8); printf("L:"); DispList(L); Reverse(L); printf("逆置后L: "); DispList(L); DestroyList(L)

第八周 【项目2

╄→гoц情女王★ 提交于 2020-04-06 02:34:58
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月14日 *版本号:v1.0 *问题描述: 定义链串的存储结构,实现串的基本运算,并完成测试。 一、头文件 liString.h #ifndef LISTRING_H_INCLUDED #define LISTRING_H_INCLUDED typedef struct snode { char data; struct snode *next; } LiString; void StrAssign(LiString *&s,char cstr[]); //字符串常量cstr赋给串s void StrCopy(LiString *&s,LiString *t); //串t复制给串s bool StrEqual(LiString *s,LiString *t); //判串相等 int StrLength(LiString *s); //求串长 LiString *Concat(LiString *s,LiString *t); //串连接 LiString *SubStr(LiString *s,int i,int j); //求子串 LiString *InsStr(LiString *s,int i,LiString *t

C/C++ 第五周线性表 项目(三)括号的匹配

谁说我不能喝 提交于 2020-04-06 02:18:47
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp sqstack.h sqstack.cpp *作者:黄士胜 *完成日期:2017年9月28日 *版本号:v1.0 * *问题描述:括号匹配 *输入描述:表达式 *程序输出:见运行结果 */ 假设表达式中允许三种括号:圆括号,方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*【2+{【3】}]-8,输出匹配正确;输入2+(3+4*【2)+{【3】}-8,输出匹配错误。 主函数: #include <stdio.h> #include "../sqstack.h" int main() { char c; char st[50]; int d=1, i; SqStack *s; InitStack(s); printf("请输入表达式:"); scanf("%s", st); for(i=0; st[i]!='\0'&&d; i++) { switch(st[i]) { case'(': case'[': case'{': Push(s, st[i]); break; case')': Pop(s, c); if(c!='(') d=0; break; case']': Pop(s, c); if(c!='

Ubuntu的vim快捷键

喜你入骨 提交于 2020-04-06 01:55:54
命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 文件命令 打开单个文件 vim file 同时打开多个文件 vim file1 file2 file3 ... 在vim窗口中打开一个新文件 :open file 在新窗口中打开文件 :split file 切换到下一个文件 :bn 切换到上一个文件 :bp 查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。 :args 打开远程文件,比如ftp或者share folder :e ftp://192.168.10.76/abc.txt :e \\qadrive\test\1.txt vim的模式 正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空 插入模式(按i键进入) 左下角显示--INSERT-- 可视模式(不知道如何进入) 左下角显示--VISUAL-- 导航命令 % 括号匹配 插入命令 i 在当前位置生前插入 I 在当前行首插入 a 在当前位置后插入 A 在当前行尾插入 o 在当前行之后插入一行 O 在当前行之前插入一行 查找命令 /text  查找text,按n健查找下一个,按N健查找前一个。 ?text  查找text