![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
——————基础部分——————
等我学会后缀自动机
侠影之谜
展开
-
Codeforces Round #537 (Div. 2)C Creative Snap (分治)
题目链接:http://codeforces.com/contest/1111/problem/C#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long ...原创 2019-02-04 20:00:48 · 327 阅读 · 0 评论 -
HDU 4560 我是歌手 (网络流+拆点+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4560题目大意有n个歌手,m种歌曲,每一场演唱会中约束描述如下:每一场演唱会中每个歌手都要上台,每个歌手都有其擅长曲目,一个歌曲全程被不擅长的歌手演唱的次数不超过k,问最多可以半多少场演唱会。题目分析不难发现题目中的答案隐含二分性质,演唱会场数越多其出错的可能性会越大。...原创 2019-03-03 11:32:54 · 357 阅读 · 0 评论 -
Codeforces Round #541 (Div. 2)F. Asya And Kittens(启发式合并+并查集+构造)
题目链接:http://codeforces.com/contest/1131/problem/F题目大意给定n个操作,其意义是把两个线段区间合并成一个,现在要构造一种排列使得这些操作合法。题目分析我们可以用并查集来表示一个已经归为一种类型的区间,那么对于下一种操作x,y我们可以用vector数组来模拟合并并更新并查集,出于时间复杂度考虑肯定是把小的并到大的上,启发式...原创 2019-03-06 22:26:21 · 254 阅读 · 0 评论 -
Codeforces Round #545 (Div. 2) D. Camp Schedule(KMP思想+贪心)
题目链接:http://codeforces.com/contest/1138/problem/D题目大意背景不读,只把编程要求领出来,就是给定两个串,把第一个串重新组合使得第二个串在其中出现的次数最多。题目分析明显的kmp题目,我们利用下nxt数组的求法,这样我们可以找到一个长度,这个长度代表着原串前后缀一样的最大长度且长度小于串长度,那么我们不难发现,可以得到...原创 2019-03-09 17:38:40 · 187 阅读 · 0 评论 -
HDU 6278 Just $h$-index (静态主席树+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6278题目大意给定一个序列和若干个查询,查询给定区间中最大的h满足至少有h个人其权值不小于h。题目分析其实只要知道区间第k小就可以二分做了,然后区间第k小就用主席树搞一下即可,然后二分答案,假设枚举到mid,观察区间第mid小的数x,如果该位置答案R-mid+1符合计数...原创 2019-03-10 00:41:16 · 210 阅读 · 0 评论 -
Codeforces Round #541 (Div. 2) E. String Multiplication(繁琐细节+递归)
题目链接:http://codeforces.com/contest/1131/problem/E题目大意给定一个字符串的运算规则,给定若干个字符串,问运算到最后其最长的连续相同串是多长。题目分析首先考虑最后一个串,这题情况稍微有点多,但是理清楚就简单了,首先我们可以维护一个数组is_have[maxn][26]表示前i个串中出现过哪些字符,因为最后一个串是附加...原创 2019-03-15 19:20:42 · 93 阅读 · 0 评论 -
POJ 1149 PIGS (网络流建模思维+好题)*
题目链接:http://poj.org/problem?id=1149题目大意题目意思有些鬼畜我感觉,大体意思就是:有个访客序列,每个访客可以打开指定的猪圈序列,然后对于当前已经打开的猪圈其猪的个数可以任意分配,每个访客固定要拿走指定头猪,问最多可以有多少头猪可以被拿走。题目分析网络流建模问题,增加源点指向猪圈,这道题建模的关键在于是选择选取猪圈为点还是访客,如...原创 2019-03-11 20:45:22 · 134 阅读 · 0 评论 -
CodeForces 916D Jamie and To-do List (主席树+map)
题目链接:http://codeforces.com/problemset/problem/916/D题目大意给定四种操作,第一种:设定字符串的优先级,若该字符串事先没有出现过,则添加上去,否则修改。第二种:删除操作,删除指定的字符串第三种:返回操作,回退k个操作,第四种:查询指定字符串,其有多少个字符串的优先级小于它。题目分析看到时间回退操作不难想到可持久化,...原创 2019-03-20 15:07:07 · 214 阅读 · 0 评论 -
Educational Codeforces Round 61 (Rated for Div. 2) D. Stressful Training(贪心+二分+优先队列)
题目链接:http://codeforces.com/contest/1132/problem/D题目大意每个同学电脑有初始电量和电量消耗速度,这堂课有k分钟,其损耗过程有note描述。现在有个输出x,每分钟可以指定一个电脑并充电x,问要维护每位同学电脑电量始终不小于零,其最小的x是多少。题目分析这道题思路倒是蛮容易想的,就是细节比较多!可以看出是二分,并且二分上界是...原创 2019-03-16 19:26:10 · 222 阅读 · 0 评论 -
Codeforces Round #542 (Div. 2) E Wrong Answer (构造思维)
题目链接:http://codeforces.com/contest/1130题目大意给定一个算法,让你构造出一个序列,其真正的答案和这个算法得到的答案之差为k。k给定,关键是n序列长度和序列中的值的数据范围,n最大为2000,值的绝对值不超过1e6.题目分析构造思维。我刚开始想的是0,-1,0,-1...这样,然后最后加上一个X,那么差就是(X-N)*(N*2...原创 2019-03-02 11:24:14 · 133 阅读 · 0 评论 -
HDU 5738 Eureka (组合计数+map数据结构的使用+暴力)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738题目大意:给定二维平面上若干个点,要求计算满足条件的集合P的数量,其中集合P需要满足条件,该集合中存在一个点对,其约束关系如题干所述。题目分析: 简单换算下不难发现其需要找若干个点共线的集合,该集合至少两个点。该题没什么好方法,只有暴力,,虽然我不大懂这题最坏复杂...原创 2019-02-24 22:30:18 · 148 阅读 · 0 评论 -
HDU 5876 Sparse Graph (DFS+补图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll uns...原创 2019-02-07 21:29:59 · 188 阅读 · 0 评论 -
Gym 101102L Starry Night (树形DP+贪心)
题目链接:http://codeforces.com/gym/101102/problem/L#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long lo...原创 2019-02-09 08:31:51 · 153 阅读 · 0 评论 -
Codeforces Global Round 1 Magic Stones (思维脑洞题)
题目链接:http://codeforces.com/contest/1110题目大意:给定两个序列,每次可以在第一个序列上执行一个操作即:a[i]=a[i-1]+a[i+1]-a[i],问是否可能把a序列经过若干次操作后变成b序列。题目分析: 很有思维的一道题目。考虑a[i-1],a[i],a[i+1],当我们把a[i]变成a[i-1]+a[i+1]-a[i]后,...原创 2019-02-21 18:10:11 · 135 阅读 · 0 评论 -
HDU 4417 Super Mario (二分+静态主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417题目大意:给定一个整数序列,和若干查询,每次查询区间[l,r]中小于等于x的数有多少个。题目分析: 区间第k小的另一种表达方式,假如我们能够log时间求出第k小的数,就可以二分处理这道题。主席树可以搞定静态第k小。#include<bits/stdc++....原创 2019-02-16 21:03:07 · 151 阅读 · 0 评论 -
CodeForces 645E Intellectual Inquiry (DP+贪心)
题目链接:http://codeforces.com/problemset/problem/645/E题目大意:给定n和k和一个串,表示有k个字符可以选择,还可以选择n个字符,问选择完后的字符串其不同的子序列数量有多少个。题目分析: 首先来分析原先给定的序列,令dp[i]表示到i位置的不同子序列个数,那么新增的字母x,我们只要减去因为这个字母造成的重复度即可,假设这个...原创 2019-02-17 13:15:19 · 159 阅读 · 0 评论 -
Codeforces Round #542 (Div. 2) D2. Toy Train(思维+贪心)
题目链接:http://codeforces.com/contest/1130/problem/D2题目大意考虑特定的一个站台,其要完成k个糖果的配送并要送往x1,x2,..xk,我们通过手动模拟不难发现要想最优的完成这个站台的配送,最后到达的点是离当前点最近的x值。并且有几个糖果就转几圈,如果在x集合中出现了比当前站台序号大的,那么圈数减一。题目分析 对于离站台的...原创 2019-02-27 15:35:51 · 113 阅读 · 0 评论 -
Codeforces Round #539 (Div. 2) D. Sasha and One More Name(构造+细节考虑)
题目链接:http://codeforces.com/contest/1113/problem/D题目大意:预先给定一个回文串,要求做若干次切割,片段不能翻转,切割后再拼接成的字符串是一个不同的回文串,问最少的切割次数。题目分析: 首先不难发现答案最多就是2,因为如果左半部分都是一样的字母那明显不可能,只要有一个位不一样比如相邻两位不一样,我们就可以在该位切割然后...原创 2019-02-18 17:35:55 · 135 阅读 · 0 评论 -
CSU 1811 Tree Intersection (map启发式合并+树形DP)
题目链接:http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1811题目大意:给定一颗树,树上每个节点都有颜色,问对于每条边,其两端子树颜色集合交集的大小。题目分析: 相比于上次用线段树动态开点类似的方法来做合并,这次用map做启发式合并,这样的复杂度会因为每次都合并小的而降维。这道题同时还嵌套着树形D...原创 2019-02-24 09:36:53 · 158 阅读 · 0 评论 -
Codeforces Round #546 (Div. 2) E. Nastya Hasn't Written a Legend(线段树+二分+数学转换)
题目链接:http://codeforces.com/contest/1136/problem/E题目大意给定两个序列,支持两种操作,查询第一个序列的区间和,第二种是修改a数组x位置上的值,增加x,并且如果a[i+1]<a[i]+k[i] 那么a[i+1]=a[i]+k[i]。题目分析[i+1]-S[i]<a[i]-S[i-1],这样我们把a[i]+S[i...原创 2019-03-21 00:52:03 · 123 阅读 · 0 评论 -
Codeforces Round #546 (Div. 2)D - Nastya Is Buying Lunch (贪心+排序)
题目链接:http://codeforces.com/contest/1136题目大意给定一个队列序号,小明在队尾,给定若干个序对,每个序对(a,b)表示a如果在b前面一个位置则可以调换这两人的位置i,问小明最多可以往前进多少。题目分析贪心思想,对于一个位置,假设可以和这个位置替换的若干个位置,不难发现这些位置的相对位置是不变的,那么我们用vector把每个标号其...原创 2019-03-13 19:16:05 · 172 阅读 · 0 评论 -
Gym 100694A Did he drop any good loot? (背包变形+细节考虑)
题目链接:http://codeforces.com/gym/100694/problem/A题目大意给定n个物品和一个容量m,每个物品有三个属性,价值,容量,和可增益的容量.在你选择的物品中你可以至多利用两个物品的增益属性来扩大容量.问最大价值可以是多少.题目分析就是背包变下形.我们可以把一个物品其本身容量减去增益容量这个值当作一个新的容量值,当然会有负数,我们...原创 2019-04-10 23:11:55 · 167 阅读 · 0 评论 -
Codeforces Round #197 (Div. 2) C. Xenia and Weights(记忆化搜索+map+DP)
题目链接:http://codeforces.com/problemset/problem/339/C开个三维映射的map直接爆搜即可,记忆化下状态一共是1e7这样的级别#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x...原创 2019-04-23 21:11:27 · 78 阅读 · 0 评论 -
CodeForces 713C Sonya and Problem Wihtout a Legend (策略问题+DP)*
题目大意给定一个序列,现在有两种操作,一种是使序列中某一个数加一,一种是使其减一.问把这个序列弄成单调递增的最少操作次数是多少.题目分析这题我是看题解的,发现是蛮经典的一道题.首先考虑不降序列,那么我们如果暴力DP那么数据范围是九次方存不下,我们需要找到一种可以包含所有可能转移到的状态的空间而使空间开的下.我们可以证明序列最后映射成的,是其原本序列的子集...原创 2019-04-28 19:11:24 · 176 阅读 · 0 评论 -
CodeForces 582A GCD Table (分析状态+贪心)
题目链接:http://codeforces.com/problemset/problem/582/A题目大意给定一个序列的GCD table的乱序,GCDtable的定义十分简单形象,要求根据这个table 序列还原出原来的序列.题目分析我们可以发现,table中最大的一个数肯定是序列中的一个数,这样状态就可以根据当前情况缩减了!!假设我们已经得知前k个数...原创 2019-04-24 18:47:49 · 206 阅读 · 0 评论 -
HDU 6518 Clumsy Keke(思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6518#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll lon...原创 2019-04-20 08:23:19 · 145 阅读 · 0 评论 -
CodeForces 721C Journey (DFS来模拟DP顺序)
题目链接:http://codeforces.com/problemset/problem/721/CDP+DFS#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#def...原创 2019-04-29 14:43:12 · 160 阅读 · 0 评论 -
CodeForces 463D Gargari and Permutations (DFS建图+DP)
主要是需要建图,i和j是否可以连边需要比较i的位置是不是每个序列都出现在j的前面,想清楚这点就简单了.#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll l...原创 2019-05-05 12:54:59 · 124 阅读 · 0 评论 -
HDU 6521 Party(线段树+二分+思维贡献)*
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6521题目大意给定n和m个操作,n代表序列长度,每个操作给定一个区间,代表把这个区间的人聚到一起,其区间效率是这个区间中多少对人没有在之前的区间中已经聚过.题目分析线段树+思维转化,我们可以对每个人,维护一个数组代表其最远认识到右边的哪一个人,比如...原创 2019-04-25 17:11:50 · 208 阅读 · 0 评论 -
Codeforces Round #554 (Div. 2) (A,B,C)
题目链接:http://codeforces.com/contest/1152第一题(模拟)#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long l...原创 2019-05-11 18:57:14 · 125 阅读 · 0 评论 -
CodeForces 873B Balanced Substring (预处理)
把0当成-1预处理所有前缀和即可#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,i...原创 2019-05-03 07:15:31 · 127 阅读 · 0 评论 -
Codeforces Round #551 (Div. 2)D D. Serval and Rooted Tree(树形DP+贪心)*
题目链接:http://codeforces.com/problemset/problem/1153/D题目大意给定一颗树结构,每个节点上设置了max和min标志,意味着该节点的值取其son的最大/最小值,而叶节点上的数取值为1到叶节点总个数并且各不相同.要求根节点值最大是多少.题目分析思考dp值,那么毫无疑问dp转移关系核心在min和max函数之间,考虑到...原创 2019-04-18 19:37:25 · 102 阅读 · 0 评论 -
Codeforces Global Round 2 E. Pavel and Triangles(贪心+DP思想)*
题目链接:http://codeforces.com/contest/1119/problem/E题目大意给定价值为2的幂次方的长度的数量序列,问最多能拼成多少个合法三角形。题目分析不难利用幂次方级数的性质发现,构成三角形只有两种情况,三种选一样的,和两个一样的加上一个次小的。基于这样的情况,我们考虑当前位置数量,按2选取的话肯定是贪心的能选多少就选多少,但我们...原创 2019-04-07 22:57:34 · 135 阅读 · 0 评论 -
HDU 6492 分宿舍(决策性问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6492题目大意中文题.题目分析本人不擅长的策略性问题,首先算法角度上枚举k,下面就是分析对于特定的x,有两种决策,a元的双人间,b元的三人间,我们可以这样考虑:先比较3*a与2*b,这样分析出来后我们可以优化决策,假设3*a小于2*b,那么加入我们双人...原创 2019-04-21 07:00:59 · 301 阅读 · 0 评论 -
Codeforces Round #551 (Div. 2) C Serval and Parenthesis Sequence (贪心策略)
题目链接:http://codeforces.com/contest/1153/problem/C题目大意给定括号串和问号,问号可以填入左括号和右括号,问是否可以把这个串改成:任何前缀括号序列不合法但整体合法的序列.题目分析这道题是贪心做法.首先我们不难发现输入长度为奇数或者原先左括号数量大于一半长度或右括号长度大于一半长度肯定无解.那么我们可以知道还需...原创 2019-04-14 18:43:49 · 138 阅读 · 0 评论 -
Codeforces Round #550 (Div. 3) G. Two Merged Sequences(贪心)
题目链接:http://codeforces.com/contest/1144/problem/G题目大意给定一个序列,要求判断是否能把其按序分解成两个子序列,一个递增一个递减,如果能,输出01序列,1代表递增的,0代表递减的子序列.题目分析是我薄弱的环节即策略问题.正解是贪心,首先分析子状态性质,假如最后可以存在一个答案,那么对于任何1到i的序列肯...原创 2019-04-26 17:01:46 · 135 阅读 · 0 评论 -
CodeForces 977F Consecutive Subsequence (贪心+DP)
题目链接:http://codeforces.com/problemset/problem/977/F贪心性质+DP#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#de...原创 2019-04-26 17:18:56 · 128 阅读 · 0 评论 -
Codeforces Round #552 (Div. 3) E Two Teams (链表模拟)
题目链接:http://codeforces.com/contest/1154题目大意给定一个序列,每次老师把序列中的最大值及其附近的k个人(如果不足则割舍)加到他的阵营,总共有两名老师轮番做这个操作,输出一个序列表示每个人都在哪个阵营.题目分析k和n的数量级都是五次方,很迷惑人,其实不难发现每个数只会被用到一次,那么我们不妨用链表来跳跃性的映射关系,初...原创 2019-05-01 22:08:34 · 97 阅读 · 0 评论 -
Codeforces Round #552 (Div. 3)G Minimum Possible LCM (数论+优化枚举状态)
题目链接:http://codeforces.com/contest/1154题目大意给定一序列数,问其中两个数的lcm最小值是多少.题目分析这道题大致就是我最近一直想着的优化决策问题,或者说是优化枚举状态问题,所有答案候选集合明显过大了,要想办法优化,我们可以把每个数都丢到其所有因子的桶中试试看,如果对于同一个因子,有若干个数根据贪心的思想我们只要把前...原创 2019-05-01 22:21:19 · 122 阅读 · 0 评论 -
Codeforces 1155D Beautiful Array(子段和+DP)
题目链接:http://codeforces.com/problemset/problem/1155/D题目大意给定一个序列,和一个数字k,现在可以允许把一段连续的子列数字均乘上k,或者不操作,问可以得到的最大子段和是多少.题目分析最大子段和的变种吧,分析决策状态都在什么大体情况下产生,或者分析候选答案的集体特征吧,我们分析三种状态,dp(i,j),...原创 2019-05-01 22:27:54 · 172 阅读 · 0 评论