- 博客(321)
- 资源 (2)
- 收藏
- 关注

原创 【退役文】Always Challenge Miracle ---- 记我的ACM生涯
【题记】ACM-ICPC不是一项比赛,而是一种精神,一种一直挑战自我,战胜自我的精神。 ----写给正在努力奋斗和准备学习算法的各位【正文】自己的ACM生涯就在2019年4月1日愚人节这天起,正式结束了……从寒假归来,2月28号到4月1日凌晨0:05打完div3,重新变色,...
2019-04-04 13:31:15
894
6

原创 使用Sublime Text 3 或 EditPlus 配置 编写 8086汇编语言
前言:大二下学期上了贺老师进行翻转课堂的《汇编语言》,目前进行到第4–5章。 按贺老师的建议,在日常编写汇编语言的过程中,采用编辑器编写。——以下是两种编辑器,配置编写8086汇编的教程:一、Sublime Text 3 —– 被众多编程爱好者称赞的编辑器(1.)下载地址:https://www.sublimetext.com/3 根据自己的OS下载选择合适的版本 (...
2018-03-25 21:35:08
4960
4
原创 [团体程序设计天梯赛](L2-001)紧急救援 ---- SPFA +DFS
题目传送门zz操作:一开始把最短路径条数理解成了最短的路径有几条路,wa到底,特此记录一下仔细一看才是最短路径一共有几条,样例成功骗了我 23333解题思路: SPFA跑出最短路,prev数组记录路径,llen数组记录到达每个结点的累加人数。最后dfs跑一下,找出所有的最短路即可AC代码:#include <bits/stdc++.h>using namespace ...
2019-03-26 10:10:58
451
原创 [51Nod] (1247) 可能的路径 ---- 思维+欧几里得
题目传送门思路:求解的时候,往扩展gcd的方向去了QAQ,WA 3 放弃看到一个巨巨的神之推导。(a+b,b) ,(a-b,b),(a,a-b),(a,a+b) 这四个方向都可以推到(a,b)。(证明可逆)例如: (a,a-b) -> (a-(a-b),a-b) -> (b,a-b) -> (b,a-b+b) -> (b,a) -> (b+a,a) -&g...
2018-11-28 18:00:50
287
原创 [51Nod] (1163) 最高的奖励 ---- 贪心+优先级队列
题目传送门思路:一步步剖析。先看题目给的数据:74 202 604 703 401 304 506 10做任务的顺序应该是(4,70) —> (2,60) —> (3,40) —> (4,50) —> (6,10)得到的奖励即为:70+60+40+50+10 = 230我们发现,如果我们按照最晚结束时间尽可能紧凑,奖励越高这样去贪心,并不是最优...
2018-11-26 21:02:54
249
原创 [51Nod] (1102) 面积最大的矩形 ---- 单调栈(思维)
题目传送门思路:自己的想法跟题解一样,也是从左右两边找到最远能扩展的位置。但这样复杂度一定是O(n^2)显然会超时,于是自己发现除了这个思路没有好办法了,于是去学习一波新技能√ ---- 单调栈!单调栈其实精湛的不是用栈去实现,而是一种思维,用这种单调的思维去降低复杂度。以这个题为例,我们可以给每个位置pos,记录它向右最远的扩展距离R[pos],向左最远的扩展距离L[pos]。举个...
2018-11-18 17:12:43
168
原创 [51Nod] (1097) 拼成最小的数 ---- 排序+思维
题目传送门思路:把数看成字符串,数a和数b,ab与ba比较大小即可。这里巧妙的地方就是借助了STL,cmp函数 return a+b&lt;b+a;即可 QAQAC代码:#include&lt;bits/stdc++.h&gt;using namespace std;#define IO ios_base::sync_with_stdio(0),cin.tie...
2018-11-16 16:51:18
173
原创 [51Nod] (1417) 天堂里的游戏 ---- 博弈+概率
题目传送门思路:1.我们知道noder必败,因为题意中说道noder知道自己必输。2.无论noder怎样出牌,女士采取的出牌策略使得他在任何情况下的期望一致。3.由题意中给出的样例解释。我们可以这样推:设女士出正面n次,反面m次。即游戏进行n+m轮若noder一直出正面,那么noder的收益为 t1 = A*n - (A+B)/2 * m若noder一直出反面,那么noder的收...
2018-11-15 17:33:04
455
原创 [51Nod] (1279) 扔盘子 ---- 贪心+思维(逆向)
题目传送门思路:试图藐视平台数据,正向思维模拟,暴力无果_(:з」∠)_ 。 需要复杂度更低的做法~如果盘子能落到井的位置pos,那么pos之前的井口的宽度一定>=pos位置的井口的宽度。所以贪心的思想,我们可以把井口自底向上维护成一个不下降的序列。然后我们逆向思维,从底部向上填充盘子,这样所得的答案最优。AC代码:#include<bits/stdc++.h>...
2018-11-14 21:12:55
252
原创 [51Nod] (1521) 一维战舰 ---- 思维+二分
题目传送门思路:看了一大会儿没有思路,这类区间问题确实很需要想象力!QAQ 我发现这类算法题,我不由自主地给它做加法,从而导致思维混乱(痛苦阴影其实这类题目,要给它做减法。 我们每查询一个编号所对应的方格,一定控制着某段区间,这段区间必被视为不可用。如果它不合法,一定是因为它在所有情况下都必被战舰覆盖。除了它占用的空间外,那么剩余的区间如果不能放的下k个战舰,那么证明此次查询一定不合法。...
2018-11-14 18:11:23
193
原创 【ACM-ICPC 2018 沈阳赛区网络预赛】B. Call of Accepted ----中缀表达式计算
题目传送门题意:给你一个表达式由+,-,*,d,( ),组成。运算符左边的元素>=0,右边的元素>=1其中d的运算规则是,比如3d6,指3次掷6面体骰子,出现的数值为[1,6]。现在让你求表达式的最大和最小做法:经典的中缀表达式转后缀表达式(逆波兰式)算法:复习复习~中缀表达式 —> 后缀表达式1. 数字:直接输出2. 运算符:如果栈顶运算符的优先级&g...
2018-10-29 21:05:35
165
原创 【ACM-ICPC 2018 沈阳赛区网络预赛】I.Lattice's basics in digital electronics ---- 字典树
题目传送门做法: 用字典树存好译码词,然后模拟即可AC代码:#include <bits/stdc++.h>using namespace std;#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define pb(x) push_back(x)#define s...
2018-10-28 11:56:18
309
原创 【ACM-ICPC 2018 焦作赛区网络预赛】L. Poor God Water ---- 矩阵快速幂 or 杜教BM算法
题目传送门做法:我们设(肉,鱼,巧) —&amp;gt; (0,1,2)f(i,j,k) i表示第i小时,j表示当前状态,k表示上一状态 j,k ∈\in∈ (0,1,2)从n = 3 开始,我们利用后两项推前一项可得f(i,0,0)=f(i−1,0,1)+f(i−1,0,2)f(i,0,0)= f(i-1,0,1) + f(i-1,0,2)f(i,0,0)=f(i−1,0,1)+f(i...
2018-10-26 22:19:26
250
原创 【ACM-ICPC 2018 沈阳赛区网络预赛】D. Made In Heaven ---- 第K短路(A*算法)
题目传送门做法:A*算法(最佳搜索算法,基于启发式)(人工智能课上也学习了)讲解:求图的第K短路(A*算法与最短路的应用)A* &amp;&amp; 第k短路详解 (详尽)存个板子~AC代码: 基于邻接表#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cstdlib&gt;#incl
2018-10-26 17:00:56
243
原创 [牛客]牛客国庆集训派对Day2 F.平衡二叉树 ---- 递推 or 记忆化搜索
题目传送门做法:其实一开始推东西,推的太细了反而里通解越来越远~ _(:з」∠)_首先要满足最优解,我们可以把最大的左子树看成满二叉树,然后去想右子树是怎么构造的即可。这棵右子树,它的左右子树必定满足结点之差<=d,且左右之差为d的时候最优,那么递归定义其左子树dp[h-1],右子树dp[h-1-d]。我们发现d>=h时,f[h] = h 为最优解。于是有了以下递推式...
2018-10-26 11:44:56
141
原创 [HDU] (3874) Necklace ---- 离线操作+树状数组
题目传送门几乎完全一样的题目(区间内不同数的个数): 传送门题意: 给你n个数,q次查询,问这个区间内,区间内数的和为多少,每个不同的数只能取一次。做法:莫队也可做,但是了解到树状数组也可以进行离线操作。思路就是,记录相同数字中上一个数字出现的位置。按照查询区间的右端点排序,从小到大访问右端点,更新当前位置时,如果之前有出现过相同的数字,相同数字所在的位置处更新为-a[i],否则更新...
2018-10-25 16:04:27
330
原创 [SPOJ] (1812) Longest Common Substring II ---- SAM(多个串的最长公共子串)
题目传送门做法:类似求两个串的最长公共子串。我们对第一个串建立自动机,然后把剩余的n-1个串放进自动机上匹配。每个串都保存它们在每个状态上的匹配的最大长度ml, 然后对于每个状态,维护一个数组mn[p],表示当前串在此状态的LCS。对于每个状态我们要取mn[p]中的最小值。然后答案就是所有状态中最小值的最大值。注意,如果当前状态存在祖先,那么它的祖先的ml要更新其length,为什么呢...
2018-10-24 15:44:28
448
原创 [SPOJ] (1812) Longest Common Substring ---- SAM(最长公共子串)
题目传送门做法:后缀家族的基本应用,之前学习了后缀数组的解法,后缀自动机的思想如下:给第一个串建立自动机,第二个串在自动机上匹配,通过tran数组,如果匹配就len+1,否则通过slink数组(fa)向前跳,直到能继续匹配。AC代码:#include<bits/stdc++.h>using namespace std;#define IO ios...
2018-10-23 15:38:13
245
原创 【ACM-ICPC 2018 南京现场赛 】 J.Prime Game ---- 思维+素数筛
题目:做法: 计算出来每个数的质因子在各个区间的贡献。以第二组样例为例:第一个元素的素因子2:它能贡献的区间有[1,1],[1,2],……,[1,10] 10个区间第一个元素的素因子3:它能贡献的区间有[1,1],[1,2],……,[1,10] 10个区间当前sum = 10+10第二个元素的素因子7:它能贡献的区间有[1,2],[1,3],……,[1,10] 9个区...
2018-10-22 17:47:45
1643
2
原创 [UVALive](7908)World Cup ---- 枚举子集(暴力)
题目传送门做法: 模拟赛时6重循环暴力过了,但是听了听超霸的三进制枚举子集,感觉有些意思,就写了写,其中中间代码比较糙,没有优化,无脑写的。AC代码:#include&lt;bits/stdc++.h&gt;using namespace std;#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0...
2018-10-22 17:14:36
162
原创 Codeforces Round #517 (Div. 2) B.Curiosity Has No Limits ---- DFS
题目传送门做法: DFS搜索即可,想构造写炸了……AC代码:#include<bits/stdc++.h>using namespace std;#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define pb(x) push_back(x)#define sz...
2018-10-22 10:38:47
135
原创 【ACM-ICPC 2018 青岛赛区网络预赛】H. Traveling on the Axis ---- 前缀和+规律
题目传送门做法:我们很容易推出,对于每一个位置到终点,先判断起始位置是1or0,是1初始化为1,是0初始化为0从当前位置往后相邻两项如果不一样,那么+1,如果一样+2举个例子:1 0 11位置: 1 1+1 1+1+12位置: 2 2+13位置: 1ans = 1+2+3+2+3+1 = 12然后多写几组数据,我们发现后一项是前一...
2018-10-19 21:22:13
214
原创 【ACM-ICPC 2018 焦作赛区网络预赛】H. String and Times ---- 后缀自动机
题目传送门做法:计算出每个状态下的endpos,通过endpos在区间内统计maxlen[st] - minlen[st]+1即 maxlen[st] - minlen[st]+1 = l[st] - l[slink[st]];模板题AC代码:#include<bits/stdc++.h>#define IO ios_base::sync_with_...
2018-10-19 12:24:40
186
原创 [Hihocoder](1449)后缀自动机三·重复旋律6 ---- 不同长度下出现次数最多的子串(SAM)
题目传送门做法:原题中小Hi 的讲解循序渐进,比我好,好好吸收他的讲解即可。不过这里要说一个自己异议的地方,就是自己认为这一步没有必要。但是网上包括题目本身都加了这句话,我没加我也AC了。所以对此持疑惑态度。因为我们知道ans[i] 一定&gt;= ans[i+1],也可能是自己自动机写法的原因吧,如果有各位巨巨有想法,可以和我讨论~AC代码:#include&lt;...
2018-10-19 11:39:26
315
原创 [HDU](4622)Reincarnation ---- 后缀自动机or后缀数组(区间内不同子串的个数)
题目链接做法:SA做法: 复杂度O(t * q * (n*log(n))) 暴力解法,注:(q>n) 7e8 险过……对于每次查询,把这段区间内的字符串,建立后缀数组,然后用(n-1)-sa[i]-height[i]计算。SAM做法: 复杂度O(n^2+q) 4e6在线建立串S每个后缀的SAM,用一个变量维护区间内子串的个数,保存到二维数组里面。离线查询即可后缀数组:AC...
2018-10-18 16:42:42
506
原创 [洛谷] (P3804)【模板】后缀自动机 ---- SAM(模板题)
题目传送门做法:考察SAM的基本概念,即各个状态的endpos集合的大小怎么求?我们从parent树上自底向上跑,类似树的遍历(即回溯过程),去统计集合的大小即可。AC代码:#include<bits/stdc++.h>#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#def...
2018-10-18 12:44:25
288
原创 [Hihocoder](1175)拓扑排序·二 ---- 简单拓扑排序
题目传送门做法: 开一个数组num用来记录和传递病毒数量AC代码:#include<bits/stdc++.h>#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define pb(x) push_back(x)#define sz(x) (int)(x)....
2018-10-17 22:11:16
121
原创 [Hihocoder](1445)后缀自动机二·重复旋律5 ---- SAM构造
题目传送门做法:我们知道SAM中 l[st] 数组的意义是状态st的最长子串的长度从前一状态到当前状态的转移所增加的子串数量:l[st] - l[slink[st]]AC代码:#include&lt;bits/stdc++.h&gt;#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#d...
2018-10-17 21:06:02
166
原创 【后缀自动机学习笔记】
前言历经两天,看了大大小小的后缀自动机的知识讲解,看来看去,还是觉得HihoCoder上的SAM系列讲解的最白话最让人容易理解。HihoCoder 讲解是按照 问题提出—&amp;gt;引入SAM概念----&amp;gt;模拟SAM----&amp;gt;构造SAM 这个顺序进行的,适合入门看。放一下链接:进入网页后,点里面的解题方法提示即可后缀自动机·基本概念后缀自动机·构造PS:推荐各位认真阅读上述...
2018-10-17 20:55:12
231
原创 [Hihocoder](1441)后缀自动机一·基本概念 ---- 模拟
题目传送门做法:原文中对SAM概念的讲解很详细了,值得入门的时候先学习这个~模拟即可AC代码:#include&lt;bits/stdc++.h&gt;#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define pb(x) push_back(x)#define sz(x)...
2018-10-16 20:49:27
306
原创 [HDU](6153)A Secret ---- 扩展KMP
题目传送门题意:给你两个串s1,s2,让你求s2的所有后缀在s1中出现的频率乘以后缀长度的和。做法:逆向思维,我们发现如果将s1,s2翻转,s2原来的所有后缀就变成了前缀。我们知道扩展KMP中extend[i]的含义是文本串后缀i与模式串的最长公共前缀的长度如果我们对s1,s2使用扩展KMP,求得extend[i],他表示的是s2整个字符串与s1后缀i的最长公共前缀的长度ni,那么s2...
2018-10-15 21:51:59
152
原创 [HDU](2594)Simpsons’ Hidden Talents ---- 扩展KMP
题目传送门做法:扩展KMP模板题扩展KMP:用来求文本串所有后缀与模式串的LCP详细教程:扩展KMP算法AC代码:#include&lt;bits/stdc++.h&gt;#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define pb(x) push_back(x)#...
2018-10-15 19:22:05
149
原创 [Hihocoder](1419)后缀数组四·重复旋律4 ---- 后缀数组(最长连续重复子串)★
题目传送门做法:原题给的提示已经讲解的非常详细,这里说一下自己对下面式子的理解lcp( p - ( l - lcp (p,p+l) % l ) , p-l + lcp (p,p+l) % l +l)lcp(p,p+l)/l +1 是连续重复子串的个数lcp(p,p+l)%l 就是多出的一部分,这部分串来自后缀p+l比如原题中给的栗子,lcp(4,4+4) = lcp(4,8...
2018-10-15 14:18:51
158
原创 Codeforces Round #516 (Div. 2) D. Labyrinth ---- BFS+思维
题目传送门做法:优先选取列,然后在向左右扩展。然鹅,有思路,却不会处理,看了本场Rank1,有双端队列巧妙处理列和行的优先级,才发现处理更简洁+易懂。ORZ我们优先将列放到队首,因为列是不需要消耗步数的,然后再将左右放到队尾,然后依次访问+标记,即可。AC代码:#include<bits/stdc++.h>#define IO ios_base::s...
2018-10-15 12:46:24
157
原创 [POJ](2406)Power Strings ---- KMP(连续重复子串)
题目传送门做法:KMP利用最小循环节周期那么 周期个数 = len/ len - nex[len] 即是答案看了罗神的论文,试着用后缀数组做一下,TLE,这个题倍增会被卡常,DC3可过,但是时间复杂度远大于KMP。总结:KMP为最优解有时候同一个题,从不同的做法切入,即是A不掉,也是一次不错的收获(^-^)V温故知新~AC代码://#include<bits/stdc...
2018-10-13 20:17:21
204
原创 [URAL](1297)Palindrome ---- 后缀数组 or Manacher(最长回文子串)
做法:最长回文子串两种解法:1. Manacher 复杂度O(n)2. 后缀数组+RMQ 复杂度O(n*log(n))AC代码://Manacher #include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algor...
2018-10-13 16:09:26
194
原创 [SPOJ](694)Distinct Substrings ----后缀数组(不相同子串的个数)
题目传送门做法:一个字符串的某一子串一定是某一后缀的前缀而且有一个很容易发现的性质排完序后的后缀数组suffix(sa[i]),suffix(sa[i+1]),suffix(sa[i+2]),…… ,suffix(sa[n])相邻两后缀之间增加的子串数量为 (n -1)- sa[i]+1,但是相邻两头缀之间又有公共前缀,所以ans = (n-1)-sa[i]+1-height[i] ...
2018-10-12 22:14:31
123
原创 [UVA](11235)Frequent values ---- RMQ+思维
题目传送门做法: 白书上的经典题。说一下自己的理解:首先,题目中给的是不下降序列,也就是说相同的元素会在某一区间内。我们把相同的元素归为一块,把整个序列分块!cnt[块号] 用来记录块中相同元素的个数val[块号] 用来记录块中元素的值num[pos] 用来记录当前的下标所对应的元素属于哪个块left[块号] 用来记录这一块的左端点right[块号] 用来记录这一块的右端点我们...
2018-10-12 17:41:50
135
原创 [Hihocoder](1415)后缀数组三·重复旋律3 ---- 后缀数组(最长公共子串)
题目传送门做法:我们知道,字符串中任意一个子串都是某个后缀的前缀我们也知道了Height数组的含义是排名为i的后缀与排名i-1的后缀的最长公共前缀,即就是最长公共子串。现在题意让我们找两个串的最长公共子串,普通的KMP是无法解决这样的匹配的问题,因为KMP是完全匹配,而本题可出现子串的匹配。通过上述,我们发现,我们可以有这样的思路,即将两个串合成一个,求Height数组,那Height...
2018-10-11 20:56:18
172
原创 [POJ](1743)Musical Theme ---- 后缀数组(最长不可重叠重复子串)
题目传送门题意:给你一个长度为n的序列,序列中的元素大小为[1,88]。现在让你找重复主题:主题指序列中的一个子串,其中满足以下条件1.长度&gt;=52.子串元素间的差值相等。3.重复出现的同一主题不能有公共部分。求满足题意的最大主题长度,即就是最长不可重叠子串做法:预处理的时候,把原输入的数组差分处理成新数组。求得的最大长度为kans就是k+1比如:n = 101...
2018-10-11 17:22:02
208
Bellman-Ford模板
2018-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人