- 博客(32)
- 收藏
- 关注
原创 【编译原理】05-语法制导的语义计算——基于翻译模式的语义计算
语法制导的语义计算——基于翻译模式的语义计算关于基于S-翻译模式的语义计算、基于L-翻译模式的自顶向下计算、基于L-翻译模式的自底向上计算。
2022-06-06 00:37:17
3948
2
原创 【编译原理】04-语法制导的语义计算——基于属性文法的语义计算
属性文法(属性翻译文法)基本概念在基础文法的基础上:为每个文法符号(终结符或非终结符)配备相关属性,如类型、值、代码片段、符号表内容对于文法的每个产生式都配备一组属性的语义规则(动作),对属性进行计算和传递属性文法操作对于给定输入串x,构建x的语法分析树,利用与产生式相关联的语义规则来计算分析树中各节点对应的语义属性值。每个结点的属性值都标注出来的分析树,称为带注释的语法树。综合属性自下而上传递信息语法规则:产生式左边符号的综合数学由右部符号的属性计算得出语法树:父节点的综
2022-06-01 14:41:24
2399
原创 CF——E. Replace With the Previous, Minimize
题目链接题目大意:给定一个字符串,问在执行k次操作后字典序最小的字符串是什么?一次操作的定义:对于任意一个字符串中的字母s,将字符串内所有为s的字母转换为s-1即b可以转换为a,c可以转换为b,……,z可以转换为y。基本思路:因为是要将字符串转换为字典序最小的字符串,因此执行的操作优先考虑下标较小的字符对于操作的理解:对于某个字母m,如果要将其转换为a,则执行m-a次操作,我们可以将整个字符串中的所有[a,m]区间内的字母都转换为a。(可以手动从m开始模拟,理解为逐步翻牌的感觉)转换为代码思
2022-05-11 13:41:09
412
原创 【编译原理】03LR分析法
LR分析法LR(0)分析法算法简述L:left to right parsingR:right-most derivation in reversek:look ahead k to token方法:移进-归约法框架:总控程序、分析栈、分析表分析表中的符号:SiS_iSi:第i个状态rir_iri:第i个产生式a:输入串(符号)accept:接受,结束GOTO:归约后的状态分析表中的列名:ACTION:终结符,单元格内容为S和rGOTO:非终结符,单元格内容为S
2022-04-30 23:51:34
2103
原创 【编译原理】01语法分析综述
自下而上 and 自上而下自下而上:从给定的语句(即终结符串)反推,符合语法就合法,否则就非法。自上而下:从语法开始符号正推,尝试各种可能的推导,有一个推导能推出给定的语句,则该语句合法,否则非法。分析过程驱动程序+分析表+堆栈分析树分析树:语法分析的过程中可以用子树表示出来,每一步归约都可以对应一棵子树,随着归约的完成,这些子树被连成一棵统一的分析树。短语、直接短语、句柄短语:所有可以从开始符号S,可以推出来的非终结符都为短语直接短语:直接的子树如上图中b是A的直接
2022-04-30 11:21:37
282
原创 2022微软实习研发岗C+AI提前批——一二三面面经
TimeLine1.3官网申请提交简历1.6收到面试通知1.17一面1.18二面1.18收到三面通知1.21三面0117一面英文自我介绍(2-3min)提问(10min)介绍自己最近做的项目内容;介绍项目简介;自己讲述一下做项目过程中的难点;口述题目写代码:第一题原题:在排序数组中查找元素的第一个和最后一个位置第二题貌似是一个系统设计题:题目的意思很复杂:针对一个用户平台,求出每个月的新用户使用比例给定用户id,用户tag和用户浏览区间计算出一年内每个月的新用户比例
2022-01-21 15:28:41
2642
1
原创 Leetcode第 69 场双周赛_用邮票贴满网格图
问题描述给定一个n*m大小的棋盘,每个棋盘格都有一个值1或0,现需要你利用给定的长度为stampWidth*stampHeight的长方形去覆盖棋盘格为0的区域。问题链接:用邮票贴满网格图覆盖准则为:长方形不能旋转长方形尺寸固定允许重叠覆盖长方形不能覆盖到棋盘格为1的区域长方形数量不限长方形必须完全在矩阵内基本思路由题可知,长方形的覆盖可以重叠,因此对于每一个值为0的棋盘格,都需要被覆盖。如果使用二维数组pos[i][j],pos[i][j]=0代表棋盘格(i,j)没有覆盖并且本来
2022-01-11 00:58:51
246
原创 自然语言处理学习笔记(一)
NLP:自然语言和处理两部分发展历程香农提出信息熵的概念NLP发源于1950年。图灵于该年提出图灵测试NLP规则时代乔姆斯基文法规则定义的上下文无关法规则NLP统计时代马尔可夫性质的模型(语言模型、隐马尔可夫模型)神经语言模型将神经网络和语言模型相结合,为历史上第一次使用神经网络得到词嵌入矩阵条件随机场CRF,为序列标注问题的利器LDA模型提出的概念图模型提出分布式假设理论,为词嵌入技术提供理论基础NLP深度时代随着算力发展,神经网络越做越深 CNNs RNNs R
2022-01-02 13:37:37
670
原创 CF——Nastia and a Hidden Permutation
惭愧的说cf题刷的太少了这是第一道cf上的交互题打卡全程想了两个晚上,只想到了用1,2和n-1,n去猜也猜到了要两个两个组合 因此是要3/2n次 Q但是万万没有想到是利用max来算但是真的双手称赞这道题(不知道为啥就是觉得很妙的说!题目大意一个数组a,长度为n,数组的值是属于1-n的排列,但是顺序不确定通过提问,来求出这个数组每次提问,可以给出1 i j x 返回给的值=max(min(a[i],x),min(a[j],x+1))2 i j x 返回给的值=min(max(a[i],
2021-05-20 00:07:46
125
原创 p3834——主席树模板题
最近遇到好多题目都是关于主席树的,但是菜菜没有学过,因此学习了一下主席树的模板。这个up大大讲的特别好!参考:网页链接https://www.bilibili.com/video/BV1C4411u7rK?from=search&seid=9313032007306021838#include<bits/stdc++.h>using namespace std;const int maxn=2e5+10;int n,m;int cnt;struct node{
2021-05-10 16:44:26
118
原创 操作系统——斯坦福pintos project1测试分析
观察test_priority_donate_one测试代码观察测试调用的两个函数为获取锁和释放锁。(acquire和release和书本上的含义一样)分析:(33行)原进程拥有了lock锁;(34行)acquire1进程虽然优先级高于原进程,但无法得到lock锁被阻塞,因此,必须将原进程的优先级提升到acquire1的优先级;(35行)输出结果(37行)acquire2进程高于原进程,也无法得到lock锁,因此,原进程的优先级应该提升到acquire2的优先级,使原进程运行完
2021-01-28 20:49:48
1014
原创 latex入门
安装textlive兜兜转转的安装完了textlive,得到一个道理:不能在E盘安装,否则会出现超级膨胀现象?(具体原因我也不太清楚,至少直接在C盘安装是正确的)latex入门学习latex的过程参考了一份其实很短的 LaTeX 入门文档和b站的LaTeX Tutorial for Mathematical Notation对于其中所用到的知识都进行整合在一个文章块,基本上都是平时用的,有些过于复杂的不整理了,基本上可以阅读pdf和参照代码\documentclass[UTF8]{ctexart
2021-01-24 15:18:00
432
原创 使用JavaScript中的date()函数和利用mouseover()事件实现简单的日期时间变换
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>日期</title> <SCRIPT language="JavaScript"> var handle; function func(x) { clearInterval(handle); var.
2020-11-13 18:00:04
295
原创 使用JavaScript中的eval函数实现简单计算器
简单的计算器——只能实现一步表达式<!DOCTYPE html><html><head><meta charset="UTF-8"><title>简单计算器</title><script type="text/javascript"> var s = ""; // 清零函数 function QL() { document.calc.result.value = ""; s = ""; } /.
2020-11-13 17:52:47
1585
原创 使用canvas和JavaScript画一个阴阳图
主要函数:函数名用法说明arc()Canvas.arc(0,0,20,0,2*Math.PI,false);arc参数:坐标点,半径,起始角度,结束角度,逆时针(默认)。画圆stroke()Canvas.stroke();画边框<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title&g.
2020-10-18 14:05:13
171
原创 CF——Increasing by Modulo
题目链接贪心算法原则总体是枚举操作的次数,(使用二分枚举),让前面的数尽量小。从下标1-n开始遍历,在每一次相邻比较的时候,都遵守原则如下:1.如果a[i]在数值上比maxx小,本身未满足判断其是否可以扩大成为maxx,如果可以就将其变成maxx,如果不可以就此次枚举失败;2.如果a[i]在数值上比maxx大,本身满足判断其是否可以操作变成(maxx+m)%m,那么a[i]也变成maxx了如果其不能操作成为maxx,那么其保留原来的,maxx=a[i](目前最大的)#include<
2020-07-27 23:10:44
184
原创 CF——intersting array线段树
很大部分借鉴了此链接感谢!上次全部传参数,这次尝试一下结构体存区间,少传一点参数……阿巴阿巴阿巴特别容易错的是位运算,不要忘记加括号,或者直接+代替|不太对还有数组的大小开4倍比较好#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;const int NN=2e5+5;struct Node{ int
2020-07-27 14:09:09
117
原创 CF——powerful array莫队模版
极大部分借鉴了此链接至今不太理解莫队的奇偶排序和分块思想带来的超大变化……先整理模版再说#include<iostream>#include<cmath>#include<set>#include<map>#include<algorithm>#include<cstdio>using namespace std;const int NN=1e6+5;struct Node{ int L,R; i
2020-07-27 08:48:01
119
原创 图论算法——eoj传送门(最短路变型)
根据 GreyKa的提示菜菜对这题终于有点眉目了这个图顺着以s为出发点跑一遍,逆着以t为出发点跑一边,然后再枚举传送门就可以得出最小啦!非常非常丑陋的代码,感觉肯定可以优化……可能可以都用二维数组波,不用用分开存储d1,d2 还有图 这样叭#include<iostream>#include<cstdio>#include<vector>#include<cstring>#include<algorithm>#include<.
2020-07-27 00:54:31
548
原创 p1127——遍历欧拉通路
题目链接(这个题目第一眼看过去感觉和图好像关系不大,以为是一个dfs,后来通过偷窥题解法(这个方法屡试不爽),菜才明白这边是用了欧拉通路的判定用做dfs的剪枝,最后的点不会 TLE。#include<bits/stdc++.h>using namespace std;const int NN=1005;struct DATA//cin和cout用怕了 还是char字符串叭……虽然这个题目好像用string没关系的 这边储存这个字符串和这个字符串的长度{ char s[25]
2020-06-25 14:40:28
223
原创 p2865——次短路模版(据说数据有点水?
题目链接#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fconst int NN=50005;struct edge{ int from,to; int next; double cost;} edge[1000005];//边的数量比较大(比点的数量大好多惹) 开大一些数组int head[NN];int N,R;int d[NN];int dis2[NN];int
2020-06-19 14:56:37
175
原创 p3372——线段树模版
题目链接对样例的树这样画w从上到下标区间【0-4】这个是tree【0】【0-2】是tree【1】【3-4】是tree【2】【0-1】是tree【3】【2】是tree【4】【3】是tree【5】【4】是tree【6】【0】是tree【7】【1】是tree【8】接下来的都是空结点然后看代码叭#include<bits/stdc++.h>using namespace std;#define MAX_LEN 500040#define MAXN 100010//储
2020-06-17 09:05:36
106
原创 p1993——差分约束系统(dfs的SPFA)
题目链接#include<bits/stdc++.h>using namespace std;const int NN=20005;const int INF=0x3f3f3f3f;struct edge{ int from,to,cost,next; edge() { next=-1; }} edge[NN];int n,m;int d[NN];int head[NN];bool vis[NN];int cnt=0;bo
2020-06-16 09:56:10
110
原创 p3379——LCA模版题
题目链接#include<bits/stdc++.h>using namespace std;//LCA(Least Common Ancestors),即最近公共祖先,是这样一个问题: 在有根树中,找出某两个结点 u和 v最近的公共祖先(或者说,离树根最远的公共祖先)。//倍增解法 倍增解法的核心是分治思想。//当已知两个点在树中的深度时,先让较深的结点向上走,直到两个结点深度一样;再二分找出离他们最近的公共祖先。//我们记一个结点的父结点为它的 2^0=1 倍祖先,它的父结点的父
2020-06-13 00:42:22
164
原创 p5410——KMP扩展模板题
题目链接#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;const int NN=20000005;int m,n;int extend[NN];int nexts[NN];char S[NN],T[NN];//两段相似代码//nexts[i]: T[i]...
2020-06-12 13:50:21
94
原创 hdu4763——KMP算法变型
hdu4763题目#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int NN=1000005;char B[NN];int prefix[NN];int lenB,T;void getprefix()//即nexts数组,next[i]里面存放的是0-i个里面前缀和后缀相等的最大长度{ memset(prefix,0,sizeof(pre
2020-06-10 21:09:39
156
原创 计算机系统lab2——bomb lab
(1)phase_1先得到汇编代码:看到函数是<strings_not_equal>,猜测是一个比较字符串是否相等的函数,在0x400ee9处调用了函数strings_not_equal(%rdi,%rsi),在这之前向%esi输入了一个地址0x402400,我们使用命令x/s 0x402400得到待比较的字符串。所以我们需要输入的字符串和其相等即可。字符串为 Border relations with Canada have never been better....
2020-06-10 16:54:48
1931
1
原创 KMP算法基础模版
#include<bits/stdc++.h>using namespace std;const int NN=100;string A,B;int next[NN];void getnext(){ memset(next,0,sizeof(next)); next[0]=-1; next[1]=0;//长度为1的字符串,设定next为0 int i=1,j; int len=0; while(i<B.length()-1)
2020-06-10 16:39:58
78
原创 hdu1711——KMP算法模版
hdu1711题目链接//hdu1711#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;const int NN=1000005;//KMP套模板//string A,B;int A[NN];int B[NN];int lenA,lenB;int prefix[NN];void init(){ me
2020-06-10 16:31:18
155
原创 最短路三种算法模版
(1)floyd适合多点源最短路#include<bits/stdc++.h>using namespace std;const int INF=10000;const int MAX=1000;int d[MAX][MAX];int n;//下面的循环的首位0/1按题目意思决定void init(){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(j==i)d[i][j]
2020-06-06 11:40:00
130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人