自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 java实现swap

java没有引用传递(即别名)只有值传递参数为基本数据类型时 传递一个基本数据类型的copy参数为对象类型时 传递一个引用的副本以下是java实现c++ int &a->借助数组!public class TestSwap { public static void main(String[] args){ int a = 3; int b = 5; System.out.println("交换前:"+"a="+a+" b="+b); //以数组接收后赋值,注意赋

2022-03-21 17:10:14 1665 1

原创 dp/递归 Tri Tiling

Problem Description:In how many ways can you tile a 3xn rectangle with 2x1 dominoes? Here is a sample tiling of a 3x12 rectangle.Input:Input consists of several test cases followed by a line containing -1. Each test case is a line containing an integer

2022-03-15 20:31:11 546

原创 java从控制台读取输入

2021-10-17 10:55:45 179

原创 创建,编译和执行java程序

源文件名必须与公共类名相同

2021-10-17 10:30:46 101

原创 jdk, jre, jvm之间的关系

JDK(Java Development Kit):它是java开发工具包,JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。在程序员的电脑上当然要安装JDK。JRE( Java Runtime Environment):它是Java运行环境,包含了java虚拟机,java基础类库。如果你不需要开发只需要运行Java程序,那么你可以安装JRE。例

2021-10-17 10:13:14 99

原创 质数和约数

质数(prime) 从2开始的整数,且其约数只有1和自己本身。质数的判定 试除法 O(sqrt(n))#include<bits/stdc++.h>using namespace std;int n;int Prime(int x){ if (x < 2) return 0; 特判!! 小于2则不是!! for(int i=2;i<=x/i;i++){ !!! i<=x/i if(x%i==0) return 0; } return 1;

2021-09-27 22:47:29 158

原创 最小生成树 二分图

最小生成树 题目都是无向图 重边自环负权边都无所谓Prim算法 应对无向稠密图Prim很像Dij 区别在于维护距离为的是到已知集合(当前最小生成树)的距离 且Prim可以处理负边#include<bits/stdc++.h>using namespace std;const int N=510;int g[N][N];int d[N],ST[N]; d代表到已知生成树的距离 ST代表是否在已知生成树中int n,m;.

2021-09-25 15:58:15 136

原创 图论-最短路径综合

最短路问题分类 有向图无向图无所谓难点在建图先确定是哪种图:稠密图:m~n^2稀疏图:m~n朴素迪杰斯特拉O(n2) 稠密图用邻接矩阵g[][]存图 初始化0x3f开一个st[ ]记录确定点的集合开一个d[ ]记录最短距离 初始化0x3f#include<bits/stdc++.h>using namespace std;const int N=510;int g[N][N];int d[N];int st[N]; 是否在集合内 int n,m;

2021-09-15 22:51:37 156

原创 DFS和BFS 树和图的存储及其DFS BFS 有向图拓扑序列

DFS 重点在回溯恢复现场全排列 按每个空位DFS#include<bits/stdc++.h>using namespace std;const int N=10;int n;int path[N];int used[N];void DFS(int u){ if(u==n){ for(int i=0;i<n;i++){ cout<<path[i]<<" "; } cout<<endl; return;.

2021-09-15 15:15:14 540

原创 数据结构 set

#include<bits/stdc++.h>using namespace std;int main(){ set<int> st1; set中不能有重复元素 插入重复元素会被忽略 且自动排序 for(int i=0;i<10;i++){ st1.insert(i); } cout<<"size:"<<st1.size()<<endl; 查找set中是否有元素 用find()/count if(st1.f

2021-09-05 22:07:56 71

原创 哈希 板子

哈希表的操作: 插入 查找时间复杂度看成O(1)eg 运用拉链法 写一个哈希表 把(-1e9,1e9)的数据映射到(0,1e5)上#include<bits/stdc++.h>using namespace std;const int N=100003; N取为 根据题意最大数字个数 后的质数 把所有数(包括正负)映射到[0,N)上 拉链法处理冲突int h[N],e[N],ne[N],idx; 链表池h[N]每个元素相当于一个头结点 void insert

2021-09-05 19:04:48 216

原创 堆 板子

堆是一棵完全二叉树小根堆 则每个结点<=左右孩子则某个点值变大了 就要向下沉down() 时间复杂度O(logn)某个点值变小了 就要像上升up() 时间复杂度O(logn)实现堆排序#include<bits/stdc++.h>using namespace std;const int N=100010;int h[N],Size;void down(int i){ int t=i; if(2*i<=Size&&h[2*i]&lt..

2021-09-05 11:48:55 131

原创 并查集 板子

加上路径压缩 并、查的时间复杂度都近似O(1)并查集核心:1. 初始化 a[x]=x所有元素各自是一个集合 2. find(路径压缩优化)的函数 3. 合并集合、查询是否属于同一集合的操作#include<bits/stdc++.h>using namespace std;const int N=100010;int a[N];int find(int x){ if(a[x]!=x) a[x]=find(a[x]); return a[x];}int main(){

2021-09-04 20:49:04 283

原创 Trie树(字典树) 板子

Trie树用于高效存取字符串 题目中一定会有字符的范围(如26个字母等)利用二维数组实现 核心三点son[N][26]: N代表待分配池;26代表根据当前字符选择存放位置;存放的数为下一个结点的N。eg:维护字符串集合 询问某字符串在集合中的出现次数#include<bits/stdc++.h>using namespace std;const int N=100010;int son[N][26], cnt[N], idx;// char str[N];voi.

2021-09-03 19:45:07 138

原创 用数组实现单、双链表。单调栈和单调队列 板子

算法题中 涉及链表 要用数组模拟 不然超时单链表 head(清楚头指针的含义), e[], ne[], idx(只有插入操作会让idx++)五个操作 初始化+ 头插头删+ k下标插 k下标删 head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx; 初始化!!!!!!!!!!!!void init(){ head = -1; idx = 0;} 在链表头插入一个数a 先右

2021-09-03 16:11:58 110

原创 区间和并 板子

#include<iostream>#include<algorithm>#include<vector>using namespace std;typedef pair<int ,int> PII;int n;vector<PII> segs;void merge(vector<PII> &segs){ vector<PII> res; //存放合并好的区间 sort(segs.b..

2021-09-02 00:47:25 114

原创 下标离散化 板子

数的个数少 但是数的范围很大(稀疏) 那么要将这些数映射到连续自然数1234…上映射方式是排序(这样就是保序映射)+去重(注意实现) 。// 离散化=排序+去重 alls为vector容器 sort(alls.begin(),alls.end()); alls.erase(unique(alls.begin(),alls.end()),alls.end());//背去重操作写法而因为有序,所有查找给定值x映射到哪个书上用二分即可。eg 求区间和 把所有要用到的下标离散化 +前缀和#inc

2021-09-01 21:05:50 118

原创 位运算(显示第k位+lowbit) 板子

整数n的二进制表示中第k位数字实际#include<iostream>#include<vector>using namespace std;int main(){ int n;cin>>n; vector<int> list; for(int i=3;i>=0;i--) cout<<(n>>i&1);// 位运算 cout<<endl; // normal十进制转二进制的方法 whi

2021-08-31 13:53:59 111

原创 双指针算法 板子

两个指针的单调性: 根据“期望得到的”,一个指针往一个固定方向动 另一个指针也要往一个固定方向动,且不会遗漏情况。for (int i = 0, j = 0; i < n; i ++ ) { while (j < i && check(i, j)) j ++ ; // 具体问题的逻辑}常见问题分类: (1) 对于一个序列,用两个指针维护一段区间!!! (2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作

2021-08-31 12:01:16 103

原创 差分 板子

一维差分a为b的前缀和 b为a的差分差分的用途:a中[l,r]区间中的所有元素都+c,循环一遍,复杂度O(n)而也可以通过b[l]+c b[r+1]-c 实现 复杂度O(1)a可以先看成全0数组,其差分数组亦全0,然后通过b[i]+x b[i+1]-x进行ai的赋值所以 差分只有一个操作:通过b[l]+c,b[r+1]-c 实现a中[l,r]区间中的所有元素都+c#include<iostream>using namespace std;const int N=10

2021-08-30 20:01:07 342

原创 前缀和(一维+二维) 板子

一维前缀和模板题#include<iostream>using namespace std;const int N=100010;int a[N],s[N];int main(){ int n,m; while(cin>>n>>m){ for(int i=1;i<=n;i++){// 从1 开始 cin>>a[i]; } for(int i=1

2021-08-30 15:13:14 205

原创 二分【查找】

整数二分(r=mid,l=mid+1 or l=mid r=mid-1)bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:int bsearch_1(int l, int r){ while (l < r) { int mid = l + r >> 1; if (check(mid)) r = mid; //

2021-08-29 22:00:56 248

原创 快速排序+归并排序 板子

快排 O(nlogn)#include<iostream>#include<cstdio>#include<queue>#include<map>#include<cstring>using namespace std;void quick_sort(int q[], int l, int r){ if (l >= r) return; //先判区间存在 int i = l - 1, j = r + 1,

2021-08-29 15:23:47 152

原创 数据结构 散列表

散列表是一种根据关键字(key)直接进行访问的数据结构,通过建立关键字和存储位置的直接映射(map)关系,便可利用关键字直接访问元素。map是将关键字(key)和映射值(value)形成映射后绑定存储的容器,底层用红黑树实现,内部仍然有序,查找效率仍然为O(logn)unordered_map底层用散列表实现,查找效率为O(1)map就够用了。#include<cstdio>#include<iostream>#include<cstring>#includ

2021-08-28 11:12:20 115

原创 数据结构 优先队列

每个元素都被赋予了优先级,访问元素时,只能访问队列中优先级最高的元素。头文件#include<queue>定义priority_queue<typename> name;和栈一样,只能通过top()访问最高级元素#include<cstdio>#include<iostream>#include<cstring>#include<vector>#include<algorithm>#include&

2021-08-27 16:46:31 100

原创 数据结构 二叉树

二叉树的递归定义:二叉树要么为空,要么由根节点,左子树(Left Subtree),右子树(Right Subtree)构成。左右两棵子树又分别是一棵二叉树。每个结点的定义struct TreeNode{ ElementType data; TreeNode *leftChild; TreeNode *rightChild;}; 遍历PreOrdervoid PreOrder(TreeNode *root){ if(root==NULL) return; visit(root-&gt

2021-08-27 13:19:10 109

原创 递归和分治

递归策略1.子问题必须与原始问题相同 且规模更小 2.必须有出口 不能无限制递归改版汉诺塔三个塔,一开始最左边有从上到下,从小到大的N个盘。现在:1.一次只能移动一个盘2.大盘不能放在小盘上面3.最左、最右两盘间不能直接移动 必须经过第二盘现在给N 问移动多少次?思路:把盘N看成 上面N-1个盘+最下面1个盘#include<cstdio>#include<iostream>using namespace std;long long Hanoi(int

2021-08-25 09:52:32 71

原创 数学问题 进制转换 关注数值型和string类型表示的数字

进制转换 首先关注是几进制(有没有可能>=10) 再关注数字的大小(十进制用long long是否存的下)思路方面 可以运用的两个工具:十进制转M进制 M进制转十进制十进制(数值类型)转二进制 用一个vector L存二进制的每一位 考虑十进制数为0的情况while(n!=0){ L.push_back(n%2); n=n/2; } for(int i=L.size()-1;i>=0;i--){ cout<<L[i]; } if(L.emp

2021-08-23 22:00:30 189

原创 数据结构 栈

头文件#include<stack>定义satck<int> mystack;.size()cout<<mystack.size()<<endl;栈顶进.push() + 栈顶出.pop()只能访问栈顶.top();判空.empty()#include<bits/stdc++.h>using namespace std;stack<int> mystack;int main(){ for(int i=

2021-08-22 19:51:19 119

原创 数据结构 队列+双端队列

头文件#include<queue>定义queue<int> myqueue;.size()cout<<myqueue.size()<<endl;尾进.push() + 头出.pop()只能访问头.front() 和尾.back();判空.empty()for(int i=0;i<10;i++){ myqueue.push(i); } cout<<myqueue.front()<<endl; co

2021-08-21 19:45:59 66

原创 数据结构 向量

7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777

2021-08-21 14:28:20 85

原创 查找~~~

二分查找#include<cstdio>#include<iostream>#include<vector>#include<algorithm>using namespace std;int arr[100];int BinarySearch(int n,int target){ int left=0; int right=n-1; while(left<=right){ int mid=right+(left-right

2021-08-14 14:23:08 64

原创 排序~~~

结构体+sort()第三参数可为自定义函数名比较函数内部逻辑的实现:按照第一参数在第二参数之前!#include<cstdio>#include<iostream>#include<vector>#include<algorithm>using namespace std;struct student{ int num; int grade;};int compare(student a,student b){//!!! if(a

2021-08-13 21:15:27 69

原创 Chapter7 卷积神经网络CNN

和之前的网络比较之前介绍的网络相邻层之间所有神经元都有连接,这叫全连接(fully-cnonected)CNN相比之前网络多了卷积层(Convolution层)和池化层(pooling层)全连接层(Affine层)存在的问题:数据形状被忽视Affine层读入的数据应是一维的。例如:图像通常是高、长、通道 的 三维数据,而之前MNIST的(1,1,28)被拉成了一维784输入到最开始的Affine层。图像是三维形状,“形状”含有重要的空间信息,比如 空间上邻近的像素为相似值、RGB的各个通道间

2021-08-12 22:33:09 231

原创 Chapter 6 与学习相关的技巧

参数的更新就是optimization的过程 SGD只是其中一种方式SGD的缺点Momentum思想:如果历史梯度和当前梯度方向相同,增强;反之,减若。先说下 指数加权平均(exponentially weighted averges) Momentum数学式 引入变量v以考虑历史值加权和α常取0.9等值AdaGrad(adaptive,适当的) 和 RMSProp学习率衰减(learning rate decay)是全体参数的学习率一致降低;而AdaGrad对每一个参数“定

2021-08-08 21:49:59 92

原创 Chapter5 误差反向传播法

计算图(computational graph)理解反向传播优点:局部计算+可保存中间结果简单层的实现层是神经网络中的功能单位,包括forward()和backward()->参数dout乘法层的实现加法层的实现激活函数层的实现在神经网络层的实现中,一般假定forward() backward()中的参数是Numpy数组。sigmoid层实现Affine层实现...

2021-08-07 22:10:10 358

原创 (思维 模拟)坠落的蚂蚁

描述一根长度为1米的木棒上有若干只蚂蚁在爬动。它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右。如果两只蚂蚁碰头,则它们立即交换速度并继续爬动。三只蚂蚁碰头,则两边的蚂蚁交换速度,中间的蚂蚁仍然静止。如果它们爬到了木棒的边缘(0或100厘米处)则会从木棒上坠落下去。在某一时刻蚂蚁的位置各不相同且均在整数厘米处(即1,2,3,…99厘米),有且只有一只蚂蚁A速度为0,其他蚂蚁均在向左或向右爬动。给出该时刻木棒上的所有蚂蚁位置和初始速度,找出蚂蚁A从此时刻到坠落所需要的时间。输入描述:第一行包

2021-08-07 21:05:00 171

原创 cout输出的格式控制

fixed和setprecision()控制输出位数问题: 输出格式为2.0、4.0这样的数 如何实现?

2021-08-07 16:28:57 76

原创 csp认证

https://blog.youkuaiyun.com/best335/article/details/99550556

2021-08-07 13:10:08 200

原创 Chapter4 神经网络的学习

数据分为训练数据/监督数据(优化)和测试数据(评价泛化能力)。(1)优化(optimization):用模型拟合观测数据的过程;(2)泛化(generalization):数学原理和实践者的智慧,能够指导我们生成出有效性超出用于训练的数据集本身的模型。损失函数(loss function) yk,tk(one-hot:正解1 其余0)均方误差(mean squared error)交叉熵误差(cross entropy error)mini-batch学习 和chapter3 ba

2021-08-02 20:45:14 349

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除