自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stanford cs143 Compilers 9.7 Subtyping

2020-06-30 09:12:50 102

原创 stanford cs143 Compilers 9.6 Type Environments

2020-06-29 08:48:13 92

原创 stanford cs143 Compilers 9.5 Type Checking

2020-06-28 08:21:26 74

原创 洛谷 P3807 【模板】卢卡斯定理

给 n,m,pn,m,pn,m,p ,求 Cn+mn mod pC_{n+m}^n\bmod pCn+mn​modp ,保证 ppp 为质数Lucas 定理,用来求大组合数取模,定理为:Cnm mod p=C⌊n/p⌋⌊m/p⌋Cn mod pm mod p mod pC_n^m\bmod p=C_{\lfloor n/p\rfloor}^{\lfloor m/p\rfloor}C_{n\bmod p}^{m\bmod p}\bmod pCnm​modp=C⌊n/p⌋⌊m/p⌋​Cnmodpmmod

2020-06-27 21:18:58 133

原创 洛谷 P3389 【模板】高斯消元法

求解一个线性方程组思路:高斯消元流程:枚举每一列 iii找该列最大值所在的行,将该行和 iii 行进行交换消元,参考代码#include<iostream>#include<cstdio>#include<cmath>#define MAXN 110using namespace std;int n;double a[MAXN][MAXN];int main(){#ifdef WINE freopen("data.in","r",st

2020-06-27 20:27:57 85

原创 洛谷 P3377 【模板】左偏树(可并堆)

有 nnn 个小根堆,每个堆只有一个数,进行两种操作:1 x y 将第 x,yx,yx,y 个数分别在的小根堆合并2 x 输出第 xxx 个数所在的的堆的最小数,并将其删除,有多个则删除最先输入的,若第 xxx 个数已删除,则输出 −1-1−1思路:左偏树#include<iostream>#include<cstdio>#define ls s[x].son[0]#define rs s[x].son[1] #define MAXN 100010using n

2020-06-27 20:04:01 108

原创 洛谷 P1939 【模板】矩阵加速(数列)

一个数列 aaa ,满足ax={1x∈{1,2,3}ax−1+ax−3x≥4a_x=\begin{cases}1& x\in\{1,2,3\}\\a_{x-1}+a_{x-3}& x\ge 4\end{cases}ax​={1ax−1​+ax−3​​x∈{1,2,3}x≥4​求 an mod (109+7)a_n\bmod (10^9+7)an​mod(109+7)思路:将递推转换为矩阵关系,然后用矩阵快速幂#include<iostream>#includ

2020-06-27 17:07:16 126

原创 洛谷 P3390 【模板】矩阵快速幂

给一个矩阵 AAA,求 AkA^kAk思路:矩阵快速幂,注意 k 要 long long#include<iostream>#include<cstdio>#include<cstring>#define M 1000000007#define MAXN 110using namespace std;typedef long long ll;int n;ll k;struct Matrix{ int n;ll a[MAXN][MAXN];

2020-06-27 16:44:54 91

原创 洛谷 P4549 【模板】裴蜀定理

给 nnn 个整数 A1,…,AnA_1,\dots,A_nA1​,…,An​ ,求另外一个 nnn 整数序列 X1,…,XnX_1,\dots,X_nX1​,…,Xn​ ,使得 S=∑iAi×Xi>0S=\sum_iA_i\times X_i>0S=∑i​Ai​×Xi​>0 且 SSS 尽可能地小。裴蜀定理说的是方程 ax+by=cax+by=cax+by=c 有整数解地充要条件是 gcd(a,b)∣c\mathrm{gcd}(a,b)\mid cgcd(a,b)∣c ,这道题将变量扩

2020-06-27 11:02:16 154

原创 洛谷 P3811 【模板】乘法逆元

给定 n,pn,pn,p ,求 1∼n1\sim n1∼n 中所有整数在  mod p\bmod pmodp 意义下的乘法逆元。首先是乘法逆元的定义:若 ax≡1 mod pax\equiv 1\bmod pax≡1modp,则 xxx 为 a mod pa\bmod pamodp 的逆元,记为 a−1a^{-1}a−1线性求逆元:在  mod p\bmod pmodp 意义下p mod a=(p−a⌊pa⌋) mod pa⌊pa⌋ mod p=(p−p mod a) mod pa⌊pa⌋ mod

2020-06-27 10:45:07 151

原创 洛谷 P5656 【模板】二元一次不定方程(exgcd)

给一个二元一次不定方程ax+by=cax+by=cax+by=c无整数解:输出 -1有整数解:有正整数解:输出解的个数,输出 x,yx,yx,y 的最小值和最大值无正整数解:输出 x,yx,yx,y 的最小正整数值思路:扩展欧几里得void exgcd(int a,int b,int &x,int &y){ if(!b){x=1,y=0;return;} exgcd(b,a%b,x,y); int p=x;...

2020-06-27 10:09:23 454 1

原创 stanford cs143 Compilers 9.4 Types

2020-06-27 08:07:44 92

原创 stanford cs143 Compilers 9.3 Symbol Tables

AST: Abstract Syntax Tree

2020-06-26 14:45:53 85

原创 洛谷 P3388 【模板】割点(割顶)

无向图,给 nnn 个点,mmm 条边,求割点#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define MAXN 20010#define MAXM 200010using namespace std;int n,m,head[MAXN],u,v,dfn[MAXN],low[MAXN],cut[MAXN],idx,cnt,res;struct E

2020-06-25 08:04:17 177

原创 stanford cs143 Compilers 9.2 Scope

2020-06-25 07:10:41 100

原创 NCE4 L7 Bats

Lesson 7 Bats 蝙蝠First listen and then answer the following question.听录音,然后回答以下问题。In what way does echo-location in bats play an utilitarian role?​ Not all sounds made by animals serve as(用作) language, and we have only to(只需要) turn to(求助) that ex

2020-06-25 06:51:28 339

原创 洛谷 P5490 【模板】扫描线

求 nnn 个矩形的面积并思路:扫描线#include<iostream>#include<cstdio>#include<algorithm>#define ls (x<<1)#define rs (x<<1|1)#define MAXN 1000010using namespace std;typedef long long ll;int n,x1,x2,y1,y2,X[MAXN<<1];struct Scan

2020-06-24 08:59:21 217

原创 stanford cs143 Compilers 9.1 Introduction to Semantic Analysis

2020-06-24 07:43:50 81

原创 洛谷 P3812【模板】线性基

给 nnn 个整数,可能存在重复,任意选取几个,使得他们的异或和最大。什么是线性基?给一组数 a1…ana_1\dots a_na1​…an​ ,他们的线性基为 p1…pnp_1\dots p_np1​…pn​ 。求线性基:void insert(ll x){ for(int i=55;i>=0;i--){ if((x>>i)==0)continue; if(!p[i]) { // 第 i 位不为 0 p[i]=x; break; } x^=p[i];

2020-06-23 22:33:50 128

原创 洛谷 P3385 【模板】负环

给一个 nnn 点有向图,从 111 出发,问是否能到负环。思路:SPFA 判负环,假如入队 nnn 次以上,则存在负环。#include<iostream>#include<cstdio>#include<queue>#include<cstring>#define MAXN 2010#define MAXM 6010#define INF 0x3f3f3f3fusing namespace std;int n,m,T,head[MAXN

2020-06-23 21:58:13 89

原创 stanford cs143 Compilers 8.8 SLR Examples

上面这个存在 shift-reduce conflict ,因此不是 SLR

2020-06-23 21:43:14 97

原创 stanford cs143 Compilers 8.7 SLR Improvements

2020-06-22 09:06:19 60

原创 Valentine Day HDU 6693

Oipotato loves his girlfriend very much. Since Valentine’s Day is coming, he decides to buy some presents for her.There are n presents in the shop, and Oipotato can choose to buy some of them. We know that his girlfriend will possibly feel extremely happy

2020-06-22 08:54:06 142

原创 洛谷 P3387 【模板】缩点 Tarjan 缩点/拓扑排序/DAG DP

nnn 点 mmm 边有向图,点有权值,求路径,使得通过的点权和最大。允许重复经过,但是点权只计算一次。思路:Tarjan 缩点 + DAG dp首先点权非负,那么假如我们现在在一个环内,点权和最大的话肯定是要把这个环走完的,所以相当于碰到环就要走完,因此一个环可以看作一个点。首先进行缩点,形成一个有向无环图(DAG),然后再用拓扑排序在图上进行 DP#include<iostream>#include<cstdio>#include<queue>#inclu

2020-06-20 11:12:45 188

原创 stanford cs143 Compilers 8.6 SLR Parsing Examples

LR parsing is one type of bottom up parsing. It is used to parse the large class of grammars. In the LR parsing, “L” stands for left-to-right scanning of the input. “R” stands for constructing a right most derivation in reverse.

2020-06-20 08:04:33 131

原创 洛谷 P1064 金明的预算方案 分组DP/有依赖DP

总共有 nnn 元,买 mmm 个物品,每个物品有重要度,并且其中一些物品是捆绑销售的hhh要使每件物品的价格乘上重要性的总和最大。思路:有依赖的背包问题,分为主件和附件,对于每个主件,可以选择:不选择主件只选择主件选择主件,然后再选择附件的一种组合流程大概如下:首先遍历所有主件,先考虑选择该主件时以及 0 到多个附件时的每个价格的最优解(01 DP)然后再将这些价位与不选择该主件时的情况取最优解详见代码及注释#include<iostream>#include<

2020-06-19 15:48:54 134

原创 洛谷 P1063 能量项链 区间DP

思路:区间DP,这道题的描述感觉还是很复杂的,不妨这样想:给定一个数列,首先扩展成两倍的长度,每三个数可以进行合并,合并之后两端的数保留,因此,f[i][j]f[i][j]f[i][j] 表示 [i,j][i,j][i,j] 区间的最大能量,e[i]e[i]e[i] 表示第 iii 个数的值,则:f[i][j]=max⁡(f[i][j],f[i][k]+f[k][j]+e[i]∗e[k]∗e[j])f[i][j]=\max(f[i][j],f[i][k]+f[k][j]+e[i]*e[k]*e[j]).

2020-06-19 13:47:08 150 1

原创 洛谷 P1352 没有上司的舞会 树形DP

有 nnn 个人,根据职位关系形成一棵树,每个人都有一定的快乐指数,并且舞会种不能出现这个人的直接上司(父节点),问邀请哪些人可以使总的快乐数最大?思路:树形 DP ,令 f[x][0]f[x][0]f[x][0] 表示以 xxx 为根的子树,且 xxx 不参加舞会的最大快乐值,f[x][1]f[x][1]f[x][1] 表示参加的最大快乐值,则:f[x][0]=∑y∈son(x)max⁡(f[y][0],f[y][1])f[x][0]=\sum_{y\in son(x)}\max(f[y][0],f

2020-06-19 12:49:58 74

原创 洛谷 P3146 [USACO16OPEN]248 G 区间DP

给 1×n1\times n1×n 的地图,玩 2048,每次可以合并相邻两个,问合成的最大值。但是规则和 2048 不同:两个相同的数合并之后得到的值是 +1 后的值,而不是二倍关系。思路:区间 DP,用 f[i][j]f[i][j]f[i][j] 表示 i,ji,ji,j 之间完全合并后可以得到的最大值,两个区间可以合并当且仅当这两个区间得到的值是相同的,并且不为零。#include<iostream>#include<cstdio>#include<algori

2020-06-19 12:26:53 141

原创 洛谷 P1880 [NOI1995]石子合并 区间 DP

NNN 堆石子围成一个圆,两两合并,每次合并得分为新的一堆的石子数,求最后合并成一堆能得到的总得分的最大值和最小值。区间 DP首先将石子拓展两倍,这样我们就可以在一条链上进行操作啦用 f[i][j]f[i][j]f[i][j] 表示 iii 到 jjj 合并得到的最大得分,可以得到:f[i][j]=max⁡(f[i][k]+f[k+1][j]+s[j]−s[i−1])f[i][j]=\max(f[i][k]+f[k+1][j]+s[j]-s[i-1])f[i][j]=max(f[i][k]+f[

2020-06-19 12:13:41 99

原创 洛谷 P3842 [TJOI2007]线段 DP

给一个 n×nn\times nn×n 的平面,每一行有一个线段,左右端点 (i,L(i)),(i,R(i))(i,L(i)),(i,R(i))(i,L(i)),(i,R(i)) ,满足 1≤L(i)≤R(i)≤n1\le L(i)\le R(i)\le n1≤L(i)≤R(i)≤n从 (1,1)(1,1)(1,1) 出发,要求走过所有线段,到达 (n,n)(n,n)(n,n) ,要求总路程尽可能短。每次只能向下/左/右,每行的线段要走走完。思路:用 f[i][0]f[i][0]f[i][0] 表示走

2020-06-19 11:49:05 161

原创 洛谷 P1833 樱花 二进制优化的多重背包

nnn 棵樱花树,不同的树有不同的最多欣赏次数(0 时为无数),看每棵树每次都会花一定的时间,不同的树有不同的美学值,问在给定的时间内,可以得到的最大美学值为多少?思路:混合背包 / 二进制优化在过程中判断是 01背包 / 多重背包 / 完全背包01 背包:每种物品只有一件完全背包:每种物品无数多重背包:每种物品有各自的数量限制01 背包f[i][v]f[i][v]f[i][v] 表示前 iii 件物品满足背包容量可以达到的最大价值,则f[i][v]=max⁡{f[i−1][v],f[i

2020-06-19 10:56:04 212

原创 stanford cs143 Compilers 8.5 SLR Parsing

2020-06-19 09:40:13 125

原创 洛谷 P1077 摆花 背包

摆 mmm 盆花,有 nnn 种,按照顺序排,第 iii 个种类最多摆 a[i]a[i]a[i] 盆。求总共有多少种不同的摆花方案。思路:可以看作 01 背包问题,有 nnn 种物品,背包的大小是 mmm ,每种物品个数最多为 a[i]a[i]a[i]#include<iostream>#include<cstdio>#include<algorithm>#define M 1000007#define MAXN 110using namespace std

2020-06-18 23:46:21 118

原创 洛谷 P1095 守望者的逃离

M,S,TM,S,TM,S,T 分别表示初始魔法值,起点到终点的距离,限制时间。每个时刻有三种选择:走 171717 米用 101010 点魔法,走 606060 米原地休息,恢复 444 点魔法能到终点则输出最短时间,不能的话则输出能走的最远距离。思路:按照时间去推,由于闪现肯定比跑步快,所以能闪则闪。#include<iostream>#include<cstdio>using namespace std;int m,s,T,s1,s2,t;int ma

2020-06-18 23:14:37 145

原创 洛谷 P5960 【模板】差分约束算法 SPFA/Bellman-Ford

给 mmm 个不等式,有 nnn 个未知数,求任意一组解。每个不等式形如:xc−xc′≤yx_c-x_{c'}\le yxc​−xc′​≤y思路:每个差分约束可以转变为 xc≤xc′+yx_c\le x_{c'}+yxc​≤xc′​+y 这个形式类似于单源最短路径中的三角不等式 d[y]≤d[x]+zd[y]\le d[x]+zd[y]≤d[x]+z ,因此令 c,c′c,c'c,c′ 为结点的编号, c′c'c′ 到 ccc 连一条距离为 yyy 的有向边,然后令 d[0]=0d[0]=0d[0]=

2020-06-18 22:35:56 214

原创 洛谷 P5903 【模板】树上 k 级祖先 长链剖分

给定一棵 nnn 点有根树。qqq 次查询,第 iii 次查询给 xi,kix_i,k_ixi​,ki​,求 xix_ixi​ 的 kik_iki​ 级祖先,其答案为 ansians_iansi​,ans0=0ans_0=0ans0​=0题目询问在程序中生成,给定一个随机种子 sss 和一个随机函数 get(x)\textrm{get}(x)get(x):#define ui unsigned intui s;inline ui get(ui x) { x ^= x << 13;

2020-06-18 00:51:17 164

原创 leetcode 22. Generate Parentheses 卡特兰数

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]

2020-06-15 23:09:24 76

原创 stanford cs143 Compilers 8.4 Valid Items

转化成确定有限自动机:

2020-06-15 17:59:07 85

原创 stanford cs143 Compilers 8.3 Recognizing Viable Prefixes

2020-06-08 09:07:00 96

空空如也

空空如也

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

TA关注的人

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