自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 谱归一化(Spectral Normalization)在以LSTM为判别器的GAN中的运用(tensorflow2)

谱归一化(Spectral Normalization)在以LSTM为判别器的GAN中的运用(tensorflow2)

2022-07-13 17:18:07 928 1

原创 PAT 临考

最大公因数ll gcd(ll a, ll b){ return b == 0 ? a : gcd(b, a % b);}查找字符串a是否包含子串b,不是用strA.find(strB) > 0 而是 strA.find(strB) != string:npos其中string:npos是个特殊值,说明查找没有匹配

2022-03-05 12:03:47 155

原创 PAT A1018(附注释)

需要注意的点:①输入时直接将输入的每个地点的车辆数减去完美状况下的车辆数,结果可视为与完美状况的偏差值,方便理解与计算②注意两个测试点考察的一个情况:挪用一个地点的车辆前提是该地点位于待补充车辆之前,不能从待补充车辆地点之后挪用车辆③注意本题不能纯dijkstra考虑点权做法,因为不满足贪心条件,只能先找到所有最短路径,然后dfs查找到最优解#include<bits/stdc++.h>#define INF 0x3fffffffstruct node{ int

2022-03-02 22:52:05 235

原创 PAT A1110(血泪总结)

第一个,stoi可以实现string到int的转变第二个,读入数字时,一定不能用char而必须用string,因为如果是两位数及以上,char只能读到一位!!#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl;using std::string;int n,now;bool ischild[33];struct node{ int lchild=-1,rchild=-1;}tre

2022-02-27 19:17:31 141

原创 PAT A1064

由完全二叉树性质可知,根结点下标为1,任意一个下标为root的结点其左右孩子分别是2*root,2*root+1,(当然下标要小于总结点数)再由二叉查找树性质可知,中序遍历顺序即结点值的一个有序序列,因此本题由于已知为BST,且已知结点的值,将其排序即可作为中序遍历顺序#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl;using std::string;int tree[1005];i

2022-02-27 17:15:15 417

原创 完全二叉树判断(C实现)

注意,空树也是完全二叉树思想就是层序遍历所有的结点,如果遍历到一个空结点,再继续遍历,如果遇到了一个非空结点即代表非完全二叉树。(完全二叉树的性质决定了空结点只能连续存在而不能存在两个非空结点之间)。具体过程就是设置一个bool变量flag,默认为false,当遇到第一个空结点时,设置为true。每当遇到一个非空结点,则先判断flag是否为true,如果是true直接输出非完全二叉树,结束程序。struct node{ node *lchild,*rchild;};bool judge

2022-02-27 10:15:31 1421

原创 PAT A1112(附测试点1,2,4分析)

测试点1.2.4均考察了关于输出坏键的顺序问题,例如已知坏键为e、i,但输出的时候应该按照e和i在字符串中出现的先后顺序(这里假定字符串为iiieee)来输出,那么就应该是ie而非ei.因此如果读者是和笔者一样先找出有可能的坏键插入set中,最后再来判断是否真的为坏键的话,那么由于set的自动有序性,就会导致输出的结果是按照字典序输出,如上例输出为ei。为了避免这个问题,笔者首先在输入的过程中,保留了所有字符的输入先后次序,然后在结构体中重载了运算符,使其按照先后次序排序(而非字典序排序),再定义了

2022-02-26 10:44:50 418

原创 PAT A1098(堆排序和插入排序)

#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl;using std::string;bool visit[205];int a[205];//原始的int b[205];//插入排序排好的int n;int heap[205];int sum=1;void insertion_sort(int x){ int j; int temp=a[x]; if(a[x]<a[x.

2022-02-23 15:10:27 92

原创 PAT A1030

#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl;using std::string;using std::fill;int cost[1002],dis[1002];bool visit[1002];int n,m,sta,fin;struct node{ int point,distance,price; node() {} node(int _point,int _dist.

2022-02-20 17:22:02 131

原创 PAT1003 三种方法附注释

1.朴素的点权做法(邻接表)#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl;using std::vector;using std::fill;struct node{ int pointer; int distance; node(){} node(int _pointer,int _distance):pointer(_pointer),distance(_distance

2022-02-20 11:12:46 285

原创 PAT A1076

一开始使用高中oi时使用的链式前向星存储邻接表,但超时了,我也不知道为什么会超时。。。改用vector来存储邻接表就可以了...#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl;using std::queue;bool visit[1005];int n,k,cnt,ans;struct node{ int id; int layer;};std::vector<nod

2022-02-19 15:38:09 239

原创 PAT A1034(附测试点2、3、5分析)

1.思路两个map分别对应着string->int和int->string的功能图的dfs遍历2.测试点注意测试点2:答案错误(应该是没有考虑题目中要求的最后输出的每行要求按照帮派头领名称的字典序从小到大,需要加入按名称字典序排序的操作)测试点3:段错误(应该是数组开小了,注意在无向图中,数组尽量都开到2*N,N为题目给出的最多结点数)测试点5:答案错误(题目中似乎没有给出明确的要求,应当是当一个帮派内部有两个结点的权值相同时,也需要按照字典序大小来选择小的那一个)c

2022-02-19 00:02:52 548

原创 PAT A1043

镜像树的创建即在插入insert函数中将原本向左右子树递归的条件交换一下即可void insert1(node* &root,int v){ if(root==NULL)//没找到,说明要插入 { root=new_node(v); return; } if(v>=root->data) insert1(root->rchild,v); else insert1(root->lchild,v);}void insert2(node* &r

2022-02-18 00:42:53 146

原创 二叉查找树

1.新建结点操作node* new_node(int v)//新建一个权值为v的结点{ node *new_node=new node; new_node->data=v; new_node->lchild=new_node->rchild=0; return new_node;}2.查找操作void search(node *root,int x){ if(root=NULL) return; if(root->data==x) { pri

2022-02-18 00:40:25 211

原创 PAT A1053

csdn上题解都是以算法笔记上的在读入时就已经对每个结点的所有子结点按权值排序,但由于笔者做题时没有考虑到这一点,所以题解还是按照我自己的做法写的(即先记录下所有的可能路径,再对路径排序)测试点2:注意特判根结点无孩子时的情况#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl;using std::string;struct node{ int weight; std::vector

2022-02-17 13:41:09 222

原创 树的结构与遍历

1.树的存储结构struct node{ int data; vector<int> child; int layer;}tree[1000];//树的静态写法创建新结点int index=1;int new_node(int value){ tree[index].data=value;//赋值 tree[index].child.clear();//没儿子 return index++;//返回这个结点的编号并且让index++}不过在考试中一般都.

2022-02-16 22:35:46 355

原创 已知两种序列,建立二叉树

1.已知前序和中序node* pre_create(int prel,int prer,int inl,int inr){ if(prel>prer) return NULL; node *root=new node; root->data=pre[prel]; int temp; for(int i=inl;i<=inr;i++) { if(in[i]==pre[0]) { temp=i; break; } } root->lchil

2022-02-16 22:17:19 357

原创 二叉树遍历

1.先序、中序、后序遍历void preorder(node *root)//先序遍历,中左右{ if(root==NULL) return; printf("%d\n",root->data);//访问根结点root,如这里的输出数据域 preorder(root->lchild); preorder(root->rchild);}void inorder(node *root)//中序遍历,左中右{ if(root==NULL) return; inorder

2022-02-16 20:50:48 233

原创 伟哉二叉树存储结构与基础操作兮

1.一般二叉树的存储结构有两个指针,分别指向左右子树的根结点地址,如果子树不存在,指向NULL,称之为二叉链表struct node{ typename data; node *lchild,*rchild;};由于二叉树建树前根节点不存在,因此其地址一般设为NULLnode *root=NULL;新建一个值为v的结点node *newnode(int v){ node *new_node=new node; new_node->da

2022-02-16 16:18:48 235

原创 伟哉链表兮

链表的定义链表由若干个结点组成(每个节点代表一个元素),且结点在内存中的存储位置通常是不连续的结点一般由指针域和数据域组成struct node{ typename data; node* next;};头结点的定义:链表分为有头结点的和没有头结点的,头结点一般称为head,其数据域不存放任何内容,指针域指向第一个数据域有内容的结点(算法笔记中默认为有头结点),最后一个结点的指针域指向NULL,表示一条链表的结尾newnew为c++用来申请动态空间的运算符,返回

2022-02-16 15:33:53 134

原创 部分常用函数与注意事项

next_permutation()#include<bits/stdc++.h>using namespace std;signed main(void){ int a[10]={1,2,3}; do { printf("%d%d%d\n",a[0],a[1],a[2]); }while(next_permutation(a,a+3));//a[0]到a[2]全排列 return 0;}fill()#include

2022-02-14 13:44:42 262

原创 priority_queue

#include<queue>using std::priority_queue;1.定义略2.元素访问只能使用top(),返回队首元素(也可以说堆顶元素),也就是优先级最高的元素3.常见函数解析(1)push()时间复杂度O(logn),n为当前队列中元素个数(2)top()O(1)(3)pop()队首元素出队,O(logn)(4)empty()true->空,false->非空(5)size()4.优先级设置①基本

2022-02-14 11:13:10 192

原创 queue

#include<queue>using std::queue1.定义略2.访问queue元素因为是先进先出的限制性数据结构,只能通过front()、back()分别访问队首队尾元素3.常用函数解析(1)push()(2)front()、back()(3)pop()队首元素出队(4)empty()返回true为空,返回false为非空(5)size()4.queue常见用途在bfs中代替自己写的队列注意:在使用front()、back()

2022-02-14 10:42:03 166

原创 map容器

#include<map>using std::map;1.map的定义map<typename1,typename2> name;typename1为键(key),keyname2为值(value)2.map容器内元素的访问(1)下标访问注意一个键只能对应一个值map<char,int> mp;mp['a']=100;mp['a']=120;cout<<mp['a'];//输出120(2)迭代器访问迭代器定义

2022-02-14 10:36:36 895

原创 string

#include<string>using std::string;简单总结一下访问元素的方法1.通过下标访问略2.通过迭代器访问for(string::iterator it=s.begin();it!=s.end();it++)printf("%c",*it);常见函数解析1.insert()时间复杂度均为O(n)①s1.insert(pos,s2)在s1的pos号位置插入s2,注意是s1[pos]位置插入,而非s1[pos-1]str

2022-02-13 13:57:07 252

原创 set容器

#include<set>using std::set;set可以实现内部自动有序且不含重复元素的容器1.set的定义set<typename> name;注意事项等同vector2.set容器内元素的访问不同于vector,set内元素只能通过迭代器访问,并且不支持迭代器加整数的行为,如(it+i)i为整数这种写法是不允许的遍历方式只能是for(set<int>::iterator it=si.begin();it!=si.end()

2022-02-13 13:23:01 1011

原创 vector

#include<vector>using std::vector1.vector的定义vector<typename> name;typename name[100];两者等价,只不过vector的长度可变(可以节省空间)typename可以是任何基本类型,也可以是STL标准容器(需要注意的是如果是STL标准容器,定义的时候要在>>之间加上空格,否则会识别成移位操作)vector<int> name;vector<node

2022-02-13 12:53:51 225

原创 浮点数比较、cmp、打表思想

浮点数比较核心部分代码cosnt double eps=1e-8;const double pi=acos(-1.0);#define Equ(a,b) ((fabs((a)-(b)))<(eps))#define More(a,b) (((a)-(b))>(eps))#define Less(a,b) (((a)-(b))<(-eps))#define MoreEqu(a,b) (((a)-(b))>(-eps))#define LessEqu(a,b) ((

2022-02-13 11:57:19 325

原创 快速排序(随机主元)、随机数生成和随机选择算法

快速排序(朴素)#include<bits/stdc++.h>using std::cin;using std::cout;using std::endl; /*实际过程见算法笔记p142、p143*/ int partition(int a[],int left,int right){ int temp=a[left]; while(left<right) { while(left<right&&a[right]>temp) rig

2022-02-12 13:38:37 1013

原创 PAT B1045/A1101 格式错误解决附代码

格式错误

2022-02-11 17:58:27 328

原创 函数传参、指针、结构体和cin、cout复习

函数传参以数组作为函数参数时,参数中数组第一维不需要填写长度,如void a(int a[]){ a[1]=1; a[2]=2;}但如果超过一维,如二维数组,则第二维开始就要写长度,如void b(int c[][5]){ c[0][0]=1;}注意:数组作为参数时,在函数中对数组元素的修改就等同于是对原数组元素的修改数组不能作为返回类型出现指针注意指针变量定义时的细节int *a; int* a;//无区别int* p1,p2;/

2022-02-08 13:18:00 710

原创 PAT2022.2.7复习笔记

#define 标识符 任意语句或片段A?B:C A成立返回B否则为A位运算符优先级低于算数运算符 因此2^30-1应该写成(1<<30)-1int类型上限2^31-1(0x7fffffff,2^30-1为0x3fffffff),因此程序中无穷大数INF#define INF (1<<31)-1 也可以是2^30-1char数组不需要加&①在使用%s读取char数组时,空格和换行为结束判断标志#include<bits/stdc++.h&

2022-02-07 21:25:10 419

原创 无连接传输 UDP(User Datagram Protocol)

一、UDP与IP服务的区别①UDP服务在IP服务上增加了多路复用解复用功能②UDP提供进程到进程的服务,IP提供主机到主机的服务二、UDP的特点①“no frills,” “bare bones” Internet传输协议即不提供非必要服务,只提供基础服务②“尽力而为”的服务1.报文段可能丢失2.送到应用进程的报文段可能乱序③无连接:1.UDP发送端和接收端之间没有握手2.每个UDP报文段都被独立地处理④UDP 被用于:1.流媒体(丢失不敏感,速率敏感、应用可

2022-02-07 12:42:41 1421

原创 8088微处理器内部结构

本文作于2022.1.28,供本人加深理解由于8088处理器主要工作在最小模式下,下文以8088工作在最小模式下为例介绍内部结构微处理器在功能上都由三个部分组成:运算器、寄存器、控制器8088内部结构(逻辑上的划分):执行单元(execution unit,EU)、总线接口单元(bus interface unit,BIU)执行单元:执行程序总线接口:用于访问内存和访问接口执行单元通用寄存器组:暂存中间运算结果ALU:算术逻辑单元(运算器核心部件)FLAGS:标志寄存

2022-01-28 13:58:51 2047

原创 8088微处理器主要引线

本文作于2022.1.27,供本人加深理解由于8088处理器主要工作在最小模式下,下文以8088工作在最小模式下为例介绍主要引线及内部结构8088CPU最小工作模式下的主要引脚信号可以分为四组:①完成一次访问内存或接口所需要的主要信号微处理器读取一条指令的控制过程1.发出读取数据所在的目标地址(地址信号)①内存储器单元地址(访问内存)②I/O接口地址(访问接口)2.发出读控制信号(控制信号)3.送出传输的数据(数据信号)tips:数据在计算机中是广义的,所有计算机能够处

2022-01-27 23:19:48 4848

原创 8088/8086微处理器

本文作于2022.1.25,供本人加深理解使用一、8088/8086 CPU的特点(较上一代cpu的特点)①采用并行流水线工作方式通过在CPU内部结构中设置了指令预取队列来实现②对内存空间实行分段管理将内存分为4个逻辑段并设置地址段寄存器,以实现对1MB空间的寻址(8088/8086在内部都只能同时处理16位二进制数,而16位二进制码最多有2^16种组合即64K,即地址码最长16位最多管理64K个内存单元)③支持协处理器早期,协处理器作为一个独立芯片,主要用作浮点运算(早期的定点

2022-01-27 21:55:49 2731

原创 计算机网络 套接字编程:生成网络应用

UDP、TCP套接字编程

2022-01-25 15:38:48 2471 1

原创 第6讲 计算机中数的表示与运算

原码、反码、补码和计算机能力的局限性

2022-01-22 23:22:14 1232

原创 第5讲 计算机中的编码

计算机中的编码

2022-01-22 22:42:59 1366

原创 DNS域名解析自制笔记

DNS域名解析自制笔记(2022.1.22)

2022-01-22 16:34:58 4771

空空如也

空空如也

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

TA关注的人

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