自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蒟蒻的博客

SCU_GoodGuy

  • 博客(34)
  • 收藏
  • 关注

原创 K-th occurrence (后缀自动机上合并权值线段树+树上倍增)

AC代码:#include<iostream>#include<cstring>#include<vector>using namespace std;const int MAXN = 1e5 + 5;int N, L, R, K, Q;char S[MAXN];int u[MAXN];//1...rint EndPosToTree[2 *...

2020-01-30 18:17:09 339

原创 Longest Common Substring(最长公共子串)

SP1811题目描述A string is finite sequence of characters over a non-empty finite set Σ.In this problem, Σ is the set of lowercase letters.Substring, also called factor, is a consecutive sequence of ch...

2020-01-26 20:21:07 448

原创 数字子串的和 str2int

UVA1673这道题可以用广义后缀自动机,不过陈锋老师给我们讲了一个巧妙地方法,使得这道题可以用普通的后缀自动机做。题目大意:给出NNN个完全由数字组成的字符串。计算将这个NNN的字符串的所有子串转换为整数后先去重再求和的结果,输出其模2012的余数。也就是求其子串的所有本质不同的字符串的和。预处理:首先,我们可以将NNN个字符串拼接起来,拼接的部位可以用一个特殊的分隔符隔开。比如这里...

2020-01-26 16:59:47 404

原创 Substrings

SP8222You are given a string S which consists of 250000 lowercase latin letters at most. We define F(x) as the maximal number of times that some string with length x appears in S. For example for st...

2020-01-26 15:54:15 161

原创 Reincarnation

HDU4622Now you are back,and have a task to do:Given you a string s consist of lower-case English letters only,denote f(s) as the number of distinct sub-string of s.And you have some query,each tim...

2020-01-26 15:16:09 140

原创 New Distinct Substrings

SP705Given a string, we need to find the total number of its distinct substrings.InputTTT- number of test cases.T<=20T<=20T<=20; Each test case consists of one string, whose length is &lt...

2020-01-26 15:00:18 233

原创 Glass Beads

UVA719将循环串SSS展开成两倍大小:S+SS+SS+S,这样线性处理就可以处理所有循环的情况了。对S+SS+SS+S建立一个后缀自动机,让后从初始状态开始走,每次选择字典序最小的道路,走NNN步就得到一个字典序最小的原串了。假设最后走到ppp,那么此时首字符下标即为len(p)−N+1len(p)-N+1len(p)−N+1,即从首字符的位置走了NNN步到ppp。AC代码:#incl...

2020-01-26 14:43:20 490

转载 转载-后缀自动机讲解

https://www.cnblogs.com/zjp-shadow/p/9218214.html#autoid-4-0-0作者:zjp_shadow

2020-01-26 14:28:32 177

原创 照亮体育馆 Barisal Stadium

UVA10641题目为逆时针顺序编号,这里直接将数组开两倍来处理环。(然而不知为啥开到1000也能过)定义:Corners[i]Corners[i]Corners[i]为体育馆点的坐标。Lights[i]Lights[i]Lights[i]为灯的坐标及费用。IsShineOnCur[i]IsShineOn_{Cur}[i]IsShineOnCur​[i]表示第CurCurCur盏灯是否能...

2020-01-24 02:49:36 1347

原创 禁止的回文子串 Dyslexic Gollum

UVA1633一个长的回文串都可以由短的回文串拓展而来,只要短的回文在左右两端增加相同的字符即可。因此,在考虑长度为NNN的01串时,只要在从长度为1向NNN拓展的过程中,保证后KKK个字符不是回文串即可。定义:dp[i][j]dp[i][j]dp[i][j]为考虑长度为i的串的后KKK个字符组成的子串为jjj时的合法字符串的数量。IsPalindrome[i][j]IsPalindrom...

2020-01-23 23:08:24 265

原创 棒球投手 Pitcher Rotation

UVA1379定义:Map[i][j]Map[i][j]Map[i][j]为对战第i支队伍时,胜率排名第j位的棒球手的胜率Schedule[i]Schedule[i]Schedule[i]为第i天的对手dp[i][a][b][c][d]dp[i][a][b][c][d]dp[i][a][b][c][d]为考虑到前i天时,第i天派出胜率排名第a位,第i-1天排除第b位,第i-2天排出第c位,...

2020-01-23 01:35:36 437

原创 佳佳的筷子 Chopsticks

UVA10271首先,将筷子逆序读入,即使得读入的ChopsticksChopsticksChopsticks数组中的元素时降序的。这样在考虑前iii只筷子时可以选iii和i−1i-1i−1,而第三只(最大那只)在i−1i-1i−1之前选一个没被用过的即可。定义:dp[i][j]dp[i][j]dp[i][j]为考虑前i个筷子并选了j个三元组后的最小权值和。初始化:dp[i][0]=0...

2020-01-22 22:41:16 817 1

原创 学习向量 Learning Vector

UVA12589预处理:首先,我们将所有向量按斜率从大到小排序。因为在连上某个向量时,在他之前的向量都会为它贡献底部的面积。观察题目的图,可以发现除了第一个向量之外,剩下向量新增的面积都是由底部一个矩形和上面一个三角性组成,而三角形只和当前向量有关,当矩形面积等于当前的总高度乘当前向量的长。因此,向量放的越早,其为后续贡献的矩形面积就越多,因此选择先放斜率大的。定义:dp[i][j][k...

2020-01-22 21:57:17 501

原创 仓库守卫 Storage Keepers

UVA10163这道题需要两次dp1. 求最小安全指数最大值定义:dp[i][j]dp[i][j]dp[i][j]为考虑前i个人看守前j个仓库最小安全指数最大值,SafetyIndex[i]SafetyIndex[i]SafetyIndex[i]为第iii个人的能力值。初始化:dp[i][0]=infdp[i][0]=infdp[i][0]=inf(常数/0=无穷大)剩下的dp=0...

2020-01-22 16:15:57 347

原创 阿里巴巴 Alibaba

UVA1632这是一个区间动态规划定义:dp[i][j][0]dp[i][j][0]dp[i][j][0]为阿里巴巴收集完iii到jjj的宝藏后位于iii位置的最短耗时,dp[i][j][1]dp[i][j][1]dp[i][j][1]为阿里巴巴收集完iii到jjj的宝藏后位于jjj位置的最短耗时。(在最短耗时情况下,阿里巴巴收集完某个区间的宝藏后只能位于区间的边缘,不可能在内部,因为在内部的...

2020-01-22 02:45:00 3128

原创 密码锁 Locker

UVA1631定义:dp[i][x][y][z]dp[i][x][y][z]dp[i][x][y][z]为达到第iii个数字之前已经解锁,第iii个数为xxx,第i+1i+1i+1个数为yyy,第i+2i+2i+2个数为zzz的状态最少需要转动几下。详见注释AC代码:#include<iostream>#include<string>#include<cs...

2020-01-22 01:28:41 2418

原创 电子人的基因 Cyborg Genes

UVA10723有两个字符串S1,S2S_1,S_2S1​,S2​,求能包含他们的最短串。显然S1+S2S_1+S_2S1​+S2​可以包含S1S_1S1​,又包含S_2,但是却不一定是最短的。为什么呢?因为S1,S2S_1,S_2S1​,S2​中有公共的子序列,这些子序列实际上最后只需要出现一次,而非两次。在S1+S2S_1+S_2S1​+S2​中就把这些公共的子串被计算了两次。比如样例中的...

2020-01-21 03:44:35 2971

原创 串折叠 Folding

UVA1630这是一个区间动态规划定义:dp[i][j]dp[i][j]dp[i][j]为iii到jjj的字符串能压缩成的最小长度,dps[i][j]dps[i][j]dps[i][j]保存iii到jjj的字符串能压缩成的最短字符串,S[i]S[i]S[i]表示第iii个字符(从1开始编号)。初始化:dp[i][i]=1dps[i][i]=S[i]dp[i][i]=1\\dps[i][i...

2020-01-21 02:03:02 275

原创 切蛋糕 Cake slicing

UVA1629定义:UpperLeftUpperLeftUpperLeft为矩形左上角,LowerRightLowerRightLowerRight为右下角。dp[UpperLeft.x][UpperLeft.y][LowerRight.x][LowerRight.y]dp[UpperLeft.x][UpperLeft.y][LowerRight.x][LowerRight.y]dp[Upp...

2020-01-20 16:35:35 515

原创 免费糖果 Free Candies

UVA10118定义:dp[a][b][c][d]dp[a][b][c][d]dp[a][b][c][d]为第0列取了aaa颗糖果,第1列bbb颗,第二列ccc颗,第三列ddd后剩下的糖果还能最多再装进口袋多少个。那么答案就是dp[0][0][0][0]dp[0][0][0][0]dp[0][0][0][0],即考虑所有糖果。Candies[i][j]Candies[i][j]Candies[...

2020-01-20 14:42:56 259

原创 校长的烦恼 Headmaster's Headache

UVA10817定义:s0s_0s0​为没人教的科目的集合,s1s_1s1​为恰好有一人教的科目的集合,s2s_2s2​为至少有两人教的科目的集合。则定义dp[i][s1][s2]dp[i][s_1][s_2]dp[i][s1​][s2​]为考虑前i名教师时科目情况为相应科目情况为s1,s2s_1,s_2s1​,s2​时的最小花费。AllSetAllSetAllSet为全集。这里的集合采用二进...

2020-01-20 01:27:21 440

原创 完美的服务 Perfect Service

UVA1218定义:Son[i]Son[i]Son[i]为第iii个节点的子节点集dp[i]dp[i]dp[i]为以iii为根节点的最少服务器需求量dp[i][0]dp[i][0]dp[i][0]为将第iii个节点作为服务器的时的情况,即它的子节点既可以是服务器,又可以是客户端。dp[i][1]dp[i][1]dp[i][1]为第iii个节点为客户端且它的父节点为服务器的情况,即它的子...

2020-01-19 17:00:03 2168

原创 Party at Hali-Bula

UVA1220这是一个树上dp问题,求树的最大独立点集。首先,将所有名字都赋予一个编号,这里使用map。定义:dp[i][0]dp[i][0]dp[i][0]为以第iii名员工为根且第iii名员工不参加晚会的最优答案,dp[i][1]dp[i][1]dp[i][1]为第iii名员工参加晚会的答案;IsRepeat[i][0]IsRepeat[i][0]IsRepeat[i][0]为dp[i...

2020-01-19 15:21:35 356

原创 Another Crisis

UVA12186 定义:dp[i]dp[i]dp[i]为要使第iii名员工向其上级发信最少需要多少工人,DP(i)DP(i)DP(i)返回dp[i]dp[i]dp[i]的值,Son[i]Son[i]Son[i]为第iii名员工的所有直属下级。每一个员工都只有一个直接上级,因此不会有两个工人由同一上级。#include<iostream>#include<string&g...

2020-01-19 02:26:16 428

原创 Brackets sequence

UVA1626这是一道区间动态规划。定义:dp[i][j]dp[i][j]dp[i][j]为从第iii个字符到第jjj个字符组成的子串要成为正规子串最少要添加多少字符,SSS为字符串。初始化:dp[i][i]=1dp[i][i]=1dp[i][i]=1一个字符必定需要补充另一个才能匹配。dp[i+1][i]=0dp[i+1][i]=0dp[i+1][i]=0在转移方程中的dp[i]...

2020-01-19 01:39:43 1292

原创 Cutting Sticks

UVA10003这是一道区间动态规划定义:dp[i][j]dp[i][j]dp[i][j]为第iii个切割点到第jjj个切割点之间的木条的最小切割费用,Point[i]Point[i]Point[i]为第iii个切割点的位置。初始化:dp[i][i+1]=0dp[i][i+1]=0dp[i][i+1]=0因为相邻切割点之间没有切割点,不需要切割。Point[0]=0Point[n+1...

2020-01-18 19:02:01 1775

原创 划分成回文串 Partitioning by Palindromes

UVA11584这道题需要两次dp第一次定义:SSS为字符串,IsPalindrome[i][j]IsPalindrome[i][j]IsPalindrome[i][j]为第iii个字符到第jjj个字符组成的子串是否为回文i≤ji\leq ji≤j。初始化:IsPalindrome[i][i]=trueIsPalindrome[i−1][i]=(S[i]==S[i−1])IsPalin...

2020-01-18 17:11:29 2907

原创 Lighting System Design

UVA11400定义:dp[i]dp[i]dp[i]为考虑前种中灯泡的最小花费,PrefixSum[i]PrefixSum[i]PrefixSum[i]为前i种灯泡的需求量之和(前缀和)。初始化**:for (int i = 0; i < n; ++i) { dp[i] = lamps[i].K + PrefixSum[i] * lamps[i].C; }即前i种灯泡的需求都...

2020-01-18 16:27:41 427

原创 Jin Ge Jin Qu hao

UVA12563定义:dp[i][j]为考虑前i首歌并且总时长为j时最多能唱的歌曲数,Song[i]表示第i首歌的时长。转移方程:dp[i][j]=max(dp[i−1][j],dp[i−1][j−Song[i]])dp[i][j]=max(dp[i-1][j],dp[i-1][j-Song[i]])dp[i][j]=max(dp[i−1][j],dp[i−1][j−Song[i]])经...

2020-01-17 00:43:22 1683

原创 Unidirectional TSP

UVA116定义:dp[i][j]dp[i][j]dp[i][j]为从第iii行第jjj列走到最后一列的最小整数和,Road[i][j]Road[i][j]Road[i][j]为在最优方案下第iii行第jjj列的下一步的行数(记录路径),Map[i][j]Map[i][j]Map[i][j]表示第iii行第jjj列的数。代码从0编号到n−1n-1n−1,而题目是1到nnn,所以会有些不一样。...

2020-01-16 22:06:45 478

原创 The Tower of Babylon

UVA437一种砖块的三个边都可以当作高度,因此n中砖块对应有3*n中搭砖方式。定义:dp[i]为一第i中方式为底的最大高度,blocks[i]为第i中搭砖方式。#include<iostream>#include<algorithm>#include<cstring>using namespace std;int n, dp[91];struc...

2020-01-16 17:08:38 288

原创 A Spy in the Metro

UVA1025定义:dp[i][j]dp[i][j]dp[i][j]为在第iii时刻间谍到达第j个车站时在车站待的最短时间,RightTrain[i][j]RightTrain[i][j]RightTrain[i][j]表示在第iii时刻是否有从左向右开的列车,LeftTrain[i][j]LeftTrain[i][j]LeftTrain[i][j]同理。初始化:dp[0][1]=0dp[0...

2020-01-16 15:26:49 1588

原创 Game of Sum

题目链接题意:有一个长度为n的整数序列,两个人AAA和BBB轮流取数,AAA先取。一个玩家每次只能从左端或者右端取任意数量连续的数,但不能两边同时取。当所有的数都被取走时游戏结束,然后统计每个人取走的数的和,作为各自的得分。两个人采取的策略都是让自己得分尽可能高,并且两个人都很机智,求AAA的得分−B-B−B的得分后的结果。显然,最后整数序列的所有元素必定被AAA或BBB取得。定义:dp[...

2020-01-15 23:38:25 372

原创 And Then There Was One

题目链接约瑟夫环问题假设有nnn个数,编号为0,1,2,⋯n−10,1,2,\cdots n-10,1,2,⋯n−1,其中0和n−1n-1n−1相连,形成一个环,如图:.......0123n从0开始数kkk个,将这个数从环中移除,再数kkk个,再移除,问最后一个数是多少。假设n=7,k=3n=7,k=3n=7,k=3。那么第一次删除2,数列变成:0123456...

2020-01-15 00:46:57 345

空空如也

空空如也

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

TA关注的人

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