自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WangMeow --- ᶘ ᵒᴥᵒᶅ ฅ^•ﻌ•^ฅ

欲穷算法千里目,更上编程一层楼!

  • 博客(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 910 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 5015 3

原创 [团体程序设计天梯赛](L2-001)紧急救援 ---- SPFA +DFS

题目传送门 zz操作:一开始把最短路径条数理解成了最短的路径有几条路,wa到底,特此记录一下 仔细一看才是最短路径一共有几条,样例成功骗了我 23333 解题思路: SPFA跑出最短路,prev数组记录路径,llen数组记录到达每个结点的累加人数。 最后dfs跑一下,找出所有的最短路即可 AC代码: #include <bits/stdc++.h> using namespace ...

2019-03-26 10:10:58 463

原创 [51Nod] (1247) 可能的路径 ---- 思维+欧几里得

题目传送门 思路: 求解的时候,往扩展gcd的方向去了QAQ,WA 3 放弃 看到一个巨巨的神之推导。 (a+b,b) ,(a-b,b),(a,a-b),(a,a+b) 这四个方向都可以推到(a,b)。(证明可逆) 例如: (a,a-b) -&gt; (a-(a-b),a-b) -&gt; (b,a-b) -&gt; (b,a-b+b) -&gt; (b,a) -&gt; (b+a,a) -&g...

2018-11-28 18:00:50 291

原创 [51Nod] (1163) 最高的奖励 ---- 贪心+优先级队列

题目传送门 思路: 一步步剖析。 先看题目给的数据: 7 4 20 2 60 4 70 3 40 1 30 4 50 6 10 做任务的顺序应该是(4,70) —&gt; (2,60) —&gt; (3,40) —&gt; (4,50) —&gt; (6,10) 得到的奖励即为:70+60+40+50+10 = 230 我们发现,如果我们按照最晚结束时间尽可能紧凑,奖励越高这样去贪心,并不是最优...

2018-11-26 21:02:54 263

原创 [51Nod] (1102) 面积最大的矩形 ---- 单调栈(思维)

题目传送门 思路: 自己的想法跟题解一样,也是从左右两边找到最远能扩展的位置。但这样复杂度一定是O(n^2) 显然会超时,于是自己发现除了这个思路没有好办法了,于是去学习一波新技能√ ---- 单调栈! 单调栈其实精湛的不是用栈去实现,而是一种思维,用这种单调的思维去降低复杂度。 以这个题为例,我们可以给每个位置pos,记录它向右最远的扩展距离R[pos],向左最远的扩展距离L[pos]。 举个...

2018-11-18 17:12:43 179

原创 [51Nod] (1097) 拼成最小的数 ---- 排序+思维

题目传送门 思路: 把数看成字符串,数a和数b,ab与ba比较大小即可。 这里巧妙的地方就是借助了STL,cmp函数 return a+b&amp;lt;b+a;即可 QAQ AC代码: #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; #define IO ios_base::sync_with_stdio(0),cin.tie...

2018-11-16 16:51:18 183

原创 [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 471

原创 [51Nod] (1279) 扔盘子 ---- 贪心+思维(逆向)

题目传送门 思路: 试图藐视平台数据,正向思维模拟,暴力无果_(:з」∠)_ 。 需要复杂度更低的做法~ 如果盘子能落到井的位置pos,那么pos之前的井口的宽度一定&gt;=pos位置的井口的宽度。 所以贪心的思想,我们可以把井口自底向上维护成一个不下降的序列。 然后我们逆向思维,从底部向上填充盘子,这样所得的答案最优。 AC代码: #include&lt;bits/stdc++.h&gt;...

2018-11-14 21:12:55 262

原创 [51Nod] (1521) 一维战舰 ---- 思维+二分

题目传送门 思路: 看了一大会儿没有思路,这类区间问题确实很需要想象力!QAQ 我发现这类算法题,我不由自主地给它做加法,从而导致思维混乱(痛苦阴影 其实这类题目,要给它做减法。 我们每查询一个编号所对应的方格,一定控制着某段区间,这段区间必被视为不可用。 如果它不合法,一定是因为它在所有情况下都必被战舰覆盖。除了它占用的空间外,那么剩余的区间如果不能放的下k个战舰,那么证明此次查询一定不合法。...

2018-11-14 18:11:23 201

原创 【ACM-ICPC 2018 沈阳赛区网络预赛】B. Call of Accepted ----中缀表达式计算

题目传送门 题意: 给你一个表达式由+,-,*,d,( ),组成。运算符左边的元素&gt;=0,右边的元素&gt;=1 其中d的运算规则是,比如3d6,指3次掷6面体骰子,出现的数值为[1,6]。 现在让你求表达式的最大和最小 做法: 经典的中缀表达式转后缀表达式(逆波兰式) 算法:复习复习~ 中缀表达式 —&gt; 后缀表达式 1. 数字:直接输出 2. 运算符:如果栈顶运算符的优先级&g...

2018-10-29 21:05:35 173

原创 【ACM-ICPC 2018 沈阳赛区网络预赛】I.Lattice's basics in digital electronics ---- 字典树

题目传送门 做法: 用字典树存好译码词,然后模拟即可 AC代码: #include &lt;bits/stdc++.h&gt; 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 321

原创 【ACM-ICPC 2018 焦作赛区网络预赛】L. Poor God Water ---- 矩阵快速幂 or 杜教BM算法

题目传送门 做法: 我们设(肉,鱼,巧) —&amp;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 263

原创 【ACM-ICPC 2018 沈阳赛区网络预赛】D. Made In Heaven ---- 第K短路(A*算法)

题目传送门 做法: A*算法(最佳搜索算法,基于启发式)(人工智能课上也学习了) 讲解: 求图的第K短路(A*算法与最短路的应用) A* &amp;amp;&amp;amp; 第k短路详解 (详尽) 存个板子~ AC代码: 基于邻接表 #include &amp;lt;iostream&amp;gt; #include &amp;lt;cstdio&amp;gt; #include &amp;lt;cstdlib&amp;gt; #incl

2018-10-26 17:00:56 252

原创 [牛客]牛客国庆集训派对Day2 F.平衡二叉树 ---- 递推 or 记忆化搜索

题目传送门 做法: 其实一开始推东西,推的太细了反而里通解越来越远~ _(:з」∠)_ 首先要满足最优解,我们可以把最大的左子树看成满二叉树,然后去想右子树是怎么构造的即可。这棵右子树,它的左右子树必定满足结点之差&lt;=d,且左右之差为d的时候最优,那么递归定义其左子树dp[h-1],右子树dp[h-1-d]。 我们发现d&gt;=h时,f[h] = h 为最优解。 于是有了以下递推式...

2018-10-26 11:44:56 150

原创 [HDU] (3874) Necklace ---- 离线操作+树状数组

题目传送门 几乎完全一样的题目(区间内不同数的个数): 传送门 题意: 给你n个数,q次查询,问这个区间内,区间内数的和为多少,每个不同的数只能取一次。 做法: 莫队也可做,但是了解到树状数组也可以进行离线操作。 思路就是,记录相同数字中上一个数字出现的位置。 按照查询区间的右端点排序,从小到大访问右端点,更新当前位置时,如果之前有出现过相同的数字,相同数字所在的位置处更新为-a[i],否则更新...

2018-10-25 16:04:27 336

原创 [SPOJ] (1812) Longest Common Substring II ---- SAM(多个串的最长公共子串)

题目传送门 做法: 类似求两个串的最长公共子串。 我们对第一个串建立自动机,然后把剩余的n-1个串放进自动机上匹配。 每个串都保存它们在每个状态上的匹配的最大长度ml, 然后对于每个状态,维护一个数组mn[p],表示当前串在此状态的LCS。对于每个状态我们要取mn[p]中的最小值。然后答案就是所有状态中最小值的最大值。 注意,如果当前状态存在祖先,那么它的祖先的ml要更新其length,为什么呢...

2018-10-24 15:44:28 462

原创 [SPOJ] (1812) Longest Common Substring ---- SAM(最长公共子串)

题目传送门 做法: 后缀家族的基本应用,之前学习了后缀数组的解法,后缀自动机的思想如下: 给第一个串建立自动机,第二个串在自动机上匹配,通过tran数组,如果匹配就len+1, 否则通过slink数组(fa)向前跳,直到能继续匹配。 AC代码: #include&lt;bits/stdc++.h&gt; using namespace std; #define IO ios...

2018-10-23 15:38:13 256

原创 【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 1670 2

原创 [UVALive](7908)World Cup ---- 枚举子集(暴力)

题目传送门 做法: 模拟赛时6重循环暴力过了,但是听了听超霸的三进制枚举子集,感觉有些意思,就写了写,其中中间代码比较糙,没有优化,无脑写的。 AC代码: #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; #define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0...

2018-10-22 17:14:36 170

原创 Codeforces Round #517 (Div. 2) B.Curiosity Has No Limits ---- DFS

题目传送门 做法: DFS搜索即可,想构造写炸了…… AC代码: #include&lt;bits/stdc++.h&gt; 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 144

原创 【ACM-ICPC 2018 青岛赛区网络预赛】H. Traveling on the Axis ---- 前缀和+规律

题目传送门 做法: 我们很容易推出,对于每一个位置到终点,先判断起始位置是1or0,是1初始化为1,是0初始化为0 从当前位置往后相邻两项如果不一样,那么+1,如果一样+2 举个例子: 1 0 1 1位置: 1 1+1 1+1+1 2位置:    2    2+1 3位置:           1 ans = 1+2+3+2+3+1 = 12 然后多写几组数据,我们发现后一项是前一...

2018-10-19 21:22:13 221

原创 【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&lt;bits/stdc++.h&gt; #define IO ios_base::sync_with_...

2018-10-19 12:24:40 197

原创 [Hihocoder](1449)后缀自动机三·重复旋律6 ---- 不同长度下出现次数最多的子串(SAM)

题目传送门 做法: 原题中小Hi 的讲解循序渐进,比我好,好好吸收他的讲解即可。 不过这里要说一个自己异议的地方,就是自己认为这一步没有必要。但是网上包括题目本身都加了这句话,我没加我也AC了。所以对此持疑惑态度。 因为我们知道ans[i] 一定&amp;gt;= ans[i+1],也可能是自己自动机写法的原因吧,如果有各位巨巨有想法,可以和我讨论~ AC代码: #include&amp;lt;...

2018-10-19 11:39:26 327

原创 [HDU](4622)Reincarnation ---- 后缀自动机or后缀数组(区间内不同子串的个数)

题目链接 做法: SA做法: 复杂度O(t * q * (n*log(n))) 暴力解法,注:(q&gt;n) 7e8 险过…… 对于每次查询,把这段区间内的字符串,建立后缀数组,然后用(n-1)-sa[i]-height[i]计算。 SAM做法: 复杂度O(n^2+q) 4e6 在线建立串S每个后缀的SAM,用一个变量维护区间内子串的个数,保存到二维数组里面。离线查询即可 后缀数组: AC...

2018-10-18 16:42:42 513

原创 [洛谷] (P3804)【模板】后缀自动机 ---- SAM(模板题)

题目传送门 做法: 考察SAM的基本概念,即各个状态的endpos集合的大小怎么求? 我们从parent树上自底向上跑,类似树的遍历(即回溯过程),去统计集合的大小即可。 AC代码: #include&lt;bits/stdc++.h&gt; #define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) #def...

2018-10-18 12:44:25 296

原创 [Hihocoder](1175)拓扑排序·二 ---- 简单拓扑排序

题目传送门 做法: 开一个数组num用来记录和传递病毒数量 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) (int)(x)....

2018-10-17 22:11:16 127

原创 [Hihocoder](1445)后缀自动机二·重复旋律5 ---- SAM构造

题目传送门 做法: 我们知道SAM中 l[st] 数组的意义是状态st的最长子串的长度 从前一状态到当前状态的转移所增加的子串数量: l[st] - l[slink[st]] AC代码: #include&amp;lt;bits/stdc++.h&amp;gt; #define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) #d...

2018-10-17 21:06:02 176

原创 【后缀自动机学习笔记】

前言 历经两天,看了大大小小的后缀自动机的知识讲解,看来看去,还是觉得HihoCoder上的SAM系列讲解的最白话最让人容易理解。 HihoCoder 讲解是按照 问题提出—&amp;amp;gt;引入SAM概念----&amp;amp;gt;模拟SAM----&amp;amp;gt;构造SAM 这个顺序进行的,适合入门看。 放一下链接:进入网页后,点里面的解题方法提示即可 后缀自动机·基本概念 后缀自动机·构造 PS:推荐各位认真阅读上述...

2018-10-17 20:55:12 244

原创 [Hihocoder](1441)后缀自动机一·基本概念 ---- 模拟

题目传送门 做法: 原文中对SAM概念的讲解很详细了,值得入门的时候先学习这个~ 模拟即可 AC代码: #include&amp;lt;bits/stdc++.h&amp;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 321

原创 [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 167

原创 [HDU](2594)Simpsons’ Hidden Talents ---- 扩展KMP

题目传送门 做法: 扩展KMP模板题 扩展KMP: 用来求文本串所有后缀与模式串的LCP 详细教程:扩展KMP算法 AC代码: #include&amp;lt;bits/stdc++.h&amp;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 154

原创 [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 171

原创 Codeforces Round #516 (Div. 2) D. Labyrinth ---- BFS+思维

题目传送门 做法: 优先选取列,然后在向左右扩展。 然鹅,有思路,却不会处理,看了本场Rank1,有双端队列巧妙处理列和行的优先级,才发现处理更简洁+易懂。ORZ 我们优先将列放到队首,因为列是不需要消耗步数的,然后再将左右放到队尾,然后依次访问+标记,即可。 AC代码: #include&lt;bits/stdc++.h&gt; #define IO ios_base::s...

2018-10-15 12:46:24 167

原创 [POJ](2406)Power Strings ---- KMP(连续重复子串)

题目传送门 做法: KMP利用最小循环节周期 那么 周期个数 = len/ len - nex[len] 即是答案 看了罗神的论文,试着用后缀数组做一下,TLE,这个题倍增会被卡常,DC3可过,但是时间复杂度远大于KMP。 总结: KMP为最优解 有时候同一个题,从不同的做法切入,即是A不掉,也是一次不错的收获(^-^)V 温故知新~ AC代码: //#include&lt;bits/stdc...

2018-10-13 20:17:21 213

原创 [URAL](1297)Palindrome ---- 后缀数组 or Manacher(最长回文子串)

做法: 最长回文子串两种解法: 1. Manacher 复杂度O(n) 2. 后缀数组+RMQ 复杂度O(n*log(n)) AC代码: //Manacher #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;cmath&gt; #include &lt;algor...

2018-10-13 16:09:26 208

原创 [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 128

原创 [UVA](11235)Frequent values ---- RMQ+思维

题目传送门 做法: 白书上的经典题。说一下自己的理解: 首先,题目中给的是不下降序列,也就是说相同的元素会在某一区间内。 我们把相同的元素归为一块,把整个序列分块! cnt[块号] 用来记录块中相同元素的个数 val[块号] 用来记录块中元素的值 num[pos] 用来记录当前的下标所对应的元素属于哪个块 left[块号] 用来记录这一块的左端点 right[块号] 用来记录这一块的右端点 我们...

2018-10-12 17:41:50 144

原创 [Hihocoder](1415)后缀数组三·重复旋律3 ---- 后缀数组(最长公共子串)

题目传送门 做法: 我们知道,字符串中任意一个子串都是某个后缀的前缀 我们也知道了Height数组的含义是排名为i的后缀与排名i-1的后缀的最长公共前缀,即就是最长公共子串。 现在题意让我们找两个串的最长公共子串,普通的KMP是无法解决这样的匹配的问题,因为KMP是完全匹配,而本题可出现子串的匹配。 通过上述,我们发现,我们可以有这样的思路,即将两个串合成一个,求Height数组,那Height...

2018-10-11 20:56:18 181

原创 [POJ](1743)Musical Theme ---- 后缀数组(最长不可重叠重复子串)

题目传送门 题意: 给你一个长度为n的序列,序列中的元素大小为[1,88]。 现在让你找重复主题:主题指序列中的一个子串,其中满足以下条件 1.长度&amp;gt;=5 2.子串元素间的差值相等。 3.重复出现的同一主题不能有公共部分。 求满足题意的最大主题长度,即就是最长不可重叠子串 做法: 预处理的时候,把原输入的数组差分处理成新数组。求得的最大长度为k ans就是k+1 比如:n = 10 1...

2018-10-11 17:22:02 221

数据结构课程设计题目

数据结构课程设计题目~~~~~~~~数据结构课程设计题目数据结构课程设计题目

2018-03-15

Bellman-Ford模板

Bellman-Ford模板 Bellman-Ford模板 Bellman-Ford模板 Bellman-Ford模板 Bellman-Ford模板

2018-03-15

空空如也

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

TA关注的人

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