- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 1.1快速排序(分治法)
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数
2020-07-27 15:28:08 1254
原创 详解堆
堆的定义①堆是一颗完全二叉树②堆中的任意一个节点大于(或小于)它所有子树的节点的值。堆的分类①大顶堆:如果堆中任意节点的值大于等于子树的任意节点②小顶堆:如果堆中任意节点的值小于等于子树的任意节点大顶堆:小顶堆堆的存储堆是一颗存在数组里的二叉树,若从下标1开始存储数据元素,则它的左儿子为 A[2i],右儿子为 A[2i+1],若从下标0开始存储数据元素,则它的左儿子为A[2i+1],右儿子为A[2i+2]。堆的相关操作(以大顶堆为例,且从1开始存储元素)插入假设堆中现在有n个元素,
2020-07-24 19:30:12 644
原创 基于oneAPI的C++/SYCL实现矩阵乘法和并行排序算法
项目名称:矩阵乘法问题陈述:编写⼀个基于oneAPI的C++/SYCL程序来执行矩阵乘法操作。需要考虑大尺寸矩阵的乘法操作以及不同线程之间的数据依赖关系。通常在实现矩阵乘法时,可以使用块矩阵乘法以及共享内存来提高计算效率。分析分配内存:在主机端分配内存空间用于存储输⼊矩阵和输出矩阵,同时在GPU端分配内存空间用于存储相应的输入和输出数据。数据传输:将输入矩阵数据从主机端内存传输到GPU端内存中。核函数调用:在SYCL中,矩阵乘法的计算通常会在GPU上使用核函数来实现并行计算。
2023-12-02 18:44:45 192
原创 Linux 文件权限
一.文件权限Linux系统中的每个文件和目录都有访问许可权限,用他来确定谁能通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读,只写和可执行三种。Linux文件权限一共10位长度,分成四段:第一段1位:表示文件类型,d表示目录文件,-表示普通文件第二段3位:表示所有者权限,分别表示:读、写、执行第三段3位:表示所在组权限,分别表示:读、写、执行第四段3位:表示其他用户权限,分别表示:读、写、执行二.修改权限chmod(change mode)命令是非常重要的,
2021-09-02 17:14:43 3108
转载 python的map函数
map()函数map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]如果希望把list的每个元素都作平方,就可以用map()函数:因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:def f(x): return x*xprint map(f, [1, 2, 3
2021-08-10 13:22:32 190
原创 插入排序
#include <iostream>#include <cstdio>using namespace std;const int N = 1e5+10;int n,num[N];void insert_sort(){ int t,j; for(int i=2;i<=n;i++){ t=num[i]; j=i-1; while(j>=1 && num[j]>t){
2021-05-01 12:20:40 90
原创 回文日期
原题地址#include <iostream>#include <unordered_map>using namespace std;int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};bool check(int date){ int year=date/10000; int month=date%10000/100; int day=date%100; if(month==0||mo
2021-04-14 14:00:25 75
原创 计算二项分布的概率
#include <iostream>#include <cmath>using namespace std;int n,a[50];double p,res=0;double f(int k){ return a[n]*pow(p,k)*pow(1-p,n-k)/(a[k]*a[n-k]);}int main(){ cin>>n>>p; a[0]=1; for(int i=1;i<=n;i++){
2021-04-05 14:26:00 769
转载 树的遍历
L2-006 树的遍历 (25 分)给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2#include <
2021-04-03 10:34:53 131
原创 红色警报
题目链接#include <iostream>#include <cstring>using namespace std;int n,m,k;int A[510];bool st[510];//标记所有被攻占过的城市struct n{ int x,y;}edge[5010];void init(){ for(int i=0;i<n;i++) A[i]=i;}int find(int x){ if(A[x]!=x)
2021-03-31 22:56:08 84
原创 java完成目录拷贝
java源代码完成目录拷贝package Copy;import java.io.*;public class COPY { public static void main(String[] args) { File srcFile = new File("D:\\Java\\JavaSE");//拷贝的源文件 File destFile = new File("D:\\test");//拷贝目的地 copyDir(srcFile,destF
2020-11-26 11:43:50 113
原创 堆优化的dijkstra算法
1.链式前向星存图int head[10000],cnt=0;struct node{int y,w,next;}edge[10000];void add(int x,int y,int w){ edge[++cnt].y=y; edge[cnt].w=w; edge[cnt].next=head[x]; head[x]=cnt;}2.遍历for(int i=head[x];i;i=edge[i].next){ y=edge[i].y;
2020-11-12 12:15:56 1908
原创 高精度乘法
题目链接:A*B problem#include <iostream>#include <algorithm>#define N 5000using namespace std;int a[N],b[N],c[N];int main(){ string s1,s2; cin>>s1>>s2; int len1=s1.length(),len2=s2.length(); for(int i=1;i<=len1;
2020-09-23 13:28:13 465
原创 数据科学导论第一章
文章目录数据的单位数据和信息的关系数据的分类数据科学数据科学的跨学科特点信息科技为大数据提供技术支撑大数据的4c+v大数据的影响数据:是对客观事物的逻辑归纳,是进行统计、计算、科学研究等所依据的数值,是表达知识的字符的集合。从计算机的角度看:数据是能被输入到计算机且能被计算机程序处理的符号的集合。数据的单位bit Byte KB MB GB TB PB EB ZB YB NB DB按照进率1024来计算大数据起码PB量级数据和信息的关系数据是一种原始资料,经过分析得到信息。数据是信息的表达
2020-09-19 15:04:17 411
原创 八皇后问题
#include <iostream>#include <algorithm>using namespace std;int n,num[15],ans=0;bool lie[20],zhu[40],fu[40];void print(){ for(int i=1;i<=n;i++) cout<<num[i]<<' '; cout<<endl;}void dfs(int i)//第i个棋
2020-09-12 12:41:15 191
原创 1.2归并排序(分治法)
#include <iostream>#include <cstdio>#include <algorithm>#define INF 2147483647using namespace std;int n,num[500005],L[250005],R[250005];long long ans=0;void myMerge(int l,int r,int m)//l-m m+1-r{ int n1=m-l+1,n2=r-m; for(
2020-09-10 18:55:48 110
原创 洛谷单源最短路径-----堆优化的dijkstra算法
题目链接:单源最短路径(标准版)#include <iostream>#include <algorithm>#include <cstring>#include <queue>using namespace std;int d[100005];bool f[100005];int head[100005],n,m,s,tot=0;struct node{ int v,w,next;}edge[200005];struct tn
2020-09-06 10:29:01 161
原创 Vector的用法
#include <vector> //头文件vector<int> a; //相当于长度动态变化的int数组vector<int> b[10] //相当于一个二维数组,第一维长10,第二维长度动态变化 struct node { int a; }vector<node>c; //自定义的结构体也可以保存在vector中size/empty 所有的STL容器都支持这两个方法,含义也相同。 v.size()//
2020-09-03 09:50:38 267
原创 day 03 课堂笔记
文章目录Java语言的特性简单性完全面向对象健壮性Java完美支持多线程并发可移植性/跨平台JDK JRE JVM三者之间的关系是什么?Java的加载与执行Java程序从开发到最终运行经历了什么?编写java的第一个程序!Java语言的特性简单性,完全面向对象,健壮性,多线程,可移植性。简单性在Java语言中,真正操作内存的是:JVM(Java虚拟机),Java语言的底层是c++,所以JVM是用c++语言写好的一个虚拟的电脑,JDK安装完成后,JVM就安装好了。所有的Java程序都是在Java虚拟
2020-08-30 13:32:53 189
原创 day02 课堂笔记
文章目录day02 课堂笔记常用的DOS命令怎么查看本机的IP地址快捷键计算机编程语言发展史Java语言的发展史day02 课堂笔记常用的DOS命令del xxx.txt 删除当前目录下名字为xxx的txt文件 D:\test>del 1.txtdel *.txt 删除当前目录下所有txt文件 D:\test>del *.txt 支持模糊匹配del 文件名 删除该文件的所有内容 D:\test&g
2020-08-30 13:29:49 129
原创 day01:常用的DOS命令
常用的DOS命令win+r 打开命令窗口mkdir xxx 建立一个名为“xxx”的子目录(文件)左键选中,右键点击一下就复制到了剪切板中切换盘符c: 回车 d: 回车 e:回车切换目录cd 路径,路径在Windows系统中包括:相对路径和绝对路径相对路径: 不以盘符开始,一定是相对于当前路径而言的绝对路径: 在Windows操作系统中,凡是路径起点是盘符的都是绝对路径绝对路径,例如:C:\Users\HPD:\Java\04-JavaSE零基础课堂画图E:\c
2020-08-25 22:44:06 144
翻译 L1-009 N个数求和 (20分)
L1-009 N个数求和 (20分)本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。输出格式:输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,
2020-07-30 10:01:32 269
原创 L1-008 求整数段和 (10分)
L1-008 求整数段和 (10分)给定两个整数A和B,输出从A到B的所有整数以及这些数的和。输入格式:输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。输出格式:首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。输入样例:-3 8输出样例:-3 -2 -1 0 12 3 4 5 67 8Sum = 30#includ
2020-07-30 08:58:59 493
原创 L1-007 念数字 (10分)
L1-007 念数字 (10分)输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:0: ling1: yi2: er3: san4: si5: wu6: liu7: qi8: ba9: jiu输入格式:输入在一行中给出一个整数,如:1234。提示:整数包括负数、零和正数。输出格式:在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。输入样例:-600输出样例:fu l
2020-07-30 08:54:03 678
转载 L1-006 连续因子 (20分)
L1-006 连续因子 (20分)一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数 N(1<N<2^31)。输出格式:首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1因子2……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不...
2020-07-29 20:48:46 437
原创 二进制状态压缩解决哈密顿最短路径问题
右边为第0位 1. 取出整数n在二进制表示下的第k位 (n>>k)&1 1001 0100 取出第4位 0000 1001&0000 0001-> 0000 0001 2. 取出整数n在二进制表示下的第0~k-1位(后k位) n&((1<<k)-1) 1001 0100 取出后5位 0010 0000-1=0001 1111 3.把整数n在二进制表示下的第k位取反 n xor (1<<k) 异或运算 4.把整数
2020-07-29 16:23:08 301 1
翻译 算法评定结果
全局变量和局部变量的四点区别①生命周期:全局变量的生命周期是整个代码运行的过程,而局部变量的声明周期跟随函数的生命周期②作用域:全局变量可以在任意函数中使用,而局部变量只能在其所在空间及其子空间中使用③局部容量很小,大的数组不能在函数中定义,可以在全局中定义④初始化:全局变量会被初始化为二进制意义下的0,而局部变量不会被初始化。RE可能的原因有如下三点:①数组越界:正负越界②堆栈调用太多③野指针TLE可能的原因如下两点:①死循环②算法时间复杂度太高Run Time Error可能的原
2020-07-29 11:56:09 228
原创 2.4 const
const限定符const的初始化const对象和引用一样,在定义时必须进行初始化,const常量不允许语句改变变量的值。即使下面的语句也不可以:const int num=5; num=5;编译器不会检查重新赋给const变量的值是否跟原来相等,编译器只会检查有没有执行赋值语句。const对象默认在文件内有效,如果在多个文件中出现了同名的const变量时,其实等同于在不同文件中分别定义了独立的变量。如果想在多个文件中共享,即只在一个文件中定义,在其他文件中引用,则const变量的定义
2020-07-28 21:47:01 110
原创 洛谷-求第k小的数题解
(1)使用c++sort排序+O2优化(不建议蒙混过关)不开O2优化,后两个点会TLE代码如下:#include <iostream>#include <algorithm>#include <cstdio>using namespace std;int num[5000000];int main(){ int n,k; cin>>n>>k; for(int i=0;i<n;i++)
2020-07-28 11:50:49 930
原创 高精度减法
#include <iostream>#include <algorithm>using namespace std;bool cmp(string a,string b){ return a<b;}int main(){ string str1,str2,str; cin>>str1>>str2; if(str1==str2) { cout<<0; ret
2020-07-27 11:54:19 99
原创 c++字符串实现高精度加法
#include <iostream>using namespace std;int main(){ string str1,str2,str; cin>>str1>>str2; int l1=str1.length(),l2=str2.length(); if(l1<l2) { for(int i=1;i<=l2-l1;i++) str1="0"+str1; } else{
2020-07-27 11:26:35 535 1
原创 c++ find函数的用法
查找第一次出现的目标字符串字符是从0开始的#include <iostream>#include <cstring>using namespace std;int main(){ string str="to be or not to be is a question"; string word="or"; int a=str.find(word); cout<<a;}如果查找不成功,返回-1,若查找成功,返回子串的第
2020-07-27 11:13:48 502
原创 快速幂
快速幂当我们求6^1024时,有如下缺点:①时间 空间消耗太太太太太大!②计算过程中的中间数据,计算机无法存储!朴素算法:int ans=1;for(int i=1;i<=b;i++) ans*=a;快速幂的引入b站讲的非常好的视频前置知识(a*b)%c=[(a%c)*(b%c)]%c(a+b)%c=[(a)%c+(b)%c]%c重要的事情说三遍!!!最后一定要再%c最后一定要再%c最后一定要再%c如果一个整数为b,那么它的有效二进制位数为 log2 (b)
2020-07-26 20:43:15 118
原创 素数筛
素数又称质数,是指除了1和它本身,再也没有其他的因子。合数是除了1和它本身以外,还有其他的因子。1既不是素数也不是合数。此题为洛谷上的一道题,以此题为例题,讲解素数筛。埃氏筛法时间复杂度O(nlogn)得分 80#include <iostream>#include <cstdio>using namespace std;bool isprime[100000000]={true,true};//isprime[i]为false代表i为素数int main()
2020-07-25 19:56:49 178
原创 斐波那契数列的递推与递归解法
①递归式解法int f(int x){ if(x==1||x==2)return 1; else return f(x-1)+f(x-2);}②递推式解法#include <iostream>#include <cstdio>using namespace std;int main(){ int f[50]; int f1=1,f2=1,f3,n; cin>>n;//求f[n] if(n==1||n==2)
2020-07-25 19:01:19 485
原创 十进制转化为任意进制的代码
#include <iostream>using namespace std;int main(){ char str[10000],table[20]={"0123456789AB"}; int n,len=0; cin>>n; if(n==0)//注意0的特判 { cout<<0; return 0; } while(n) { str[len++]
2020-07-25 15:35:49 809
原创 引用与指针,你真的了解吗?
引用与指针的区别:①引用并不是一个对象,但指针是一个对象。②引用在创建时必须进行初始化,但指针不必。③引用只能在初始化时引用只能绑定一个对象,而指针可以先后指向不同的对象。引用的本质是已经存在的变量的别名。...
2020-07-23 20:57:33 107
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人