自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDU 3943 二分+数位dp

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3943 在区间[P,Q]中找到第k大的数位上还有x个4以及y个7的数。思路:二分+数位dp。代码:#include <bits/stdc++.h>using namespace std;typedef long long LL;LL p, q, x, y, k;int a[25];LL d

2017-09-30 08:43:12 490

原创 hihocoder 1259 推公式+数位dp(非dfs写法)

题意:题目链接:http://hihocoder.com/problemset/problem/1259?sid=1199888 给出f(x)的定义,给出n和k,求f(1)~f(n)中模k==(0~k-1)的个数的异或和。思路:首先推公式,可以得到f(2n)=f(n)*3,f(2n+1)=f(2n)+1; 根据公式,写几个例子可以发现,对于一个数,比如5,二进制形式(101),可以发现f(5)=

2017-09-29 16:36:31 536

原创 HDU 5896 CDQ分治+NTT

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5829 求n个点能构成的有环图的数目。思路:母题是HDU 5552:http://blog.csdn.net/Bahuia/article/details/78109301 两题思路一致,只是改变了所求结果,推导发生变化。代码:#include <bits/stdc++.h>using nam

2017-09-27 09:34:01 544

原创 HDU 5552 CDQ分治+NTT

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5829 统计n个点可以组成多少种不同的有环连通图,其中每条边可以染成m种颜色。思路:分别统计f(n)为n个点的连通图数目,g(n)为n个点能构成的图数目,h(n)为n个点能构成的树的数目,然后递推出公式,发现是个卷积形式,可以用FFT加速,这里会爆精度,改用NTT。代码:#include <bit

2017-09-27 09:30:07 833

原创 hihocoder 1580 枚举+dp+RMQ

题意:题目链接:http://hihocoder.com/problemset/problem/1580?sid=1195305 给出一个矩阵,让你将其中一个数的值变成p(必须修改一个,且仅能修改一个),然后求最大子矩阵和。思路:2017北京网络赛C题,这题最后没A真是好气啊。 一开始被带偏榜,花了太多时间在D上,结果一直wa,后来C题过得多了再来看C题,秒出思路,然后一直WA到结束。 只不过

2017-09-24 10:58:18 664

原创 HDU 4511 AC自动机+DP

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4511 中文题。思路:常见的思路,不过要注意x和y要用double,否则溢出。代码:#include <bits/stdc++.h>using namespace std;const double INF = 1e20;const int MAXN = 505;const int K =

2017-09-22 17:29:24 535

原创 HDU 5769 后缀数组+二分

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5769 求一个字符串中包含字符x的不同子串有多少个思路:处理出height数组,对于每个后缀i,二分得出i之后的第一个字符x的位置,max(x,sa[i]+height[i])之后的位置结尾得到的字符串都是唯一的,相见代码。代码:#include <bits/stdc++.h>using nam

2017-09-22 15:57:30 475

原创 POJ 2774 (最长公共子串)后缀数组+二分

题意:题目链接:http://poj.org/problem?id=2774 求两个字符串中最长的公共子串思路:将两个串合并成一个,然后二分长度,判断时要看同一组中属于前一串的后缀喝属于后一串的后缀是否都存在。代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long

2017-09-22 15:21:56 375

原创 SPOJ DISUBSTR 后缀数组

题意:题目链接:https://vjudge.net/problem/SPOJ-DISUBSTR 求一个字符串中不相同的子串的个数思路:后缀数组水题代码:#include <bits/stdc++.h>using namespace std;typedef long long LL;const int MAXN = 1005;const int INF = 0x3f3f3f3f;int t

2017-09-22 14:40:04 214

原创 2017西安网络赛G题 分类暴力

题意:题目链接:https://nanti.jisuanke.com/t/17120 给出一棵树,每个节点的有个价值,给q个询问(u,v,k),若结点u到v的路径上的点为a0,a1,a2…am,问其中a0^ak^a2k^…apk的结果。思路:套路,按照k分类,首先求出LCA,k大于等于250时直接暴力求解,k小于250时保存从根结点到每个结点的异或和sum[u][x],x表示每次走x步。代码:#i

2017-09-21 19:10:10 423

原创 HDU 6194 后缀数组+单调栈

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6194 找到一个字符串中恰好出现k次的子串的数目。思路:计算出height数组,根据height数组进行操作,因为子串恰好出现k次,很显然需要找到一个长度为k-1的区间,这个区间要满足区间两边的height都比区间内的最小值要小,这样利用单调栈求出每个height左右两边第一个比height小的位

2017-09-21 15:45:51 426

原创 POJ 3261 后缀数组+二分

题意:题目链接:http://poj.org/problem?id=3261 在一个字符串S中求至少出现k次的最长的字符串的长度。思路:经典题,后缀数组+二分 注意此题需要离散化。代码:#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int MAXN = 2e4 + 10;c

2017-09-20 19:06:23 258

原创 UVAlive 4975 Manacher+枚举

题意:题目链接:https://vjudge.net/problem/UVALive-4975 给出一个字符串,求形如XYXY的最长子串长度,其中Y时X的逆字符串。思路:一开始没仔细想上来就二分hash,后来发现并不满足二分条件。 正解是manacher预处理,然后暴力枚举长度,枚举时有讲究,显然长度一定时4的倍数,然后再看左右两个子串的回文串范围。代码:#include <bits/stdc+

2017-09-20 15:25:28 334

原创 UVAlive 3490 AC自动机+(整数)高斯消元

题意:题目链接:https://vjudge.net/problem/UVALive-3490 给出一个字符串S和前n个英文大写字母,组成一个字符串,当构造出子串S时停止,则该字符串期望长度是多少。思路:AC自动机+高斯消元,与HDU 5955一个套路:http://blog.csdn.net/bahuia/article/details/53034010 这题坑的时直接用double的高斯消元

2017-09-20 10:43:15 526

原创 UVA 10829 后缀数组+技巧计数

题意:题目链接:https://vjudge.net/problem/UVA-10829 找出一个字符串中,形如UVU的且V长度为g的子串的个数,其中U非空。思路:可以用后缀数组也可以直接暴力,但该题重点是在计数方式上。 后缀数组可以计算两个起点i,j的LCP,但是要保证中间要夹上正好长度为g的V,这需要枚举i,j,复杂度为O(n^2),太高了。 这里有一个技巧,考虑假设U的长度为L,那么对于

2017-09-20 09:15:36 489

原创 UVA 11488 字典树

题意:题目链接:https://vjudge.net/problem/UVA-11488 给出n个串,找出一个串的集合,使得集合中所有串的最长公共前缀与集合元素的个数的乘积最大。思路:字典树简单应用代码:#include <bits/stdc++.h>using namespace std;typedef long long LL;const int MAXN = 5e4 + 10;stru

2017-09-20 08:54:30 468

原创 POJ 1743 后缀数组+二分

题意:题目链接:http://poj.org/problem?id=1743 求一个串中长度最长两个不重叠的相似子串的长度,相似定义为两个串长度相同,且相同下标的数字差相同。如:1,3,2和7,9,8,差都是6。思路:两个串的相似,还可以理解为每个串相邻的两个数字差都相同,因此要把原串转化成差的串,然后对新串求height数组,二份答案,每个答案x,对height分组,看每一组中下标差是否大于等于

2017-09-19 11:07:36 434

原创 HDU 6208 AC自动机

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6208 给出n个字符串,要求找到一个字符串包含其他所有的字符串。思路:肯定是最长的那个字符串,如果存在两个不一样的额且长度都是最长的字符串,就肯定找不到。否则就用AC自动机跑一遍所有的串即可。代码:#include <bits/stdc++.h>using namespace std;#def

2017-09-18 15:59:06 834

原创 HDU 6215 链表

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6215 给出n个数的序列,每一轮需要删除当前这一轮比左边的数小或者比右边的数大的数字,然后再将剩下的部分合并,进行下一轮。最后序列变成非递减时结束,输出最后序列。思路:很显然每一轮就删掉一段递减的序列,比如,{1,2,3,7,6,5,8}删除的就是7,6,5,可以发现,每次删除一段后只会对这一段左

2017-09-18 15:25:55 828

原创 HDU 4821 字符串哈希

题意:给出m和L和一个字符串s,要求在s中找到一种子串,满足长度为m*l,且分成m段长度为l的小子串可以使得任意两个小子串不完全相同,问一共有多少个这样的子串。思路:字符串哈希。 预处理出每个长度为L的子串的哈希值,并按照其起始位置%L的结果存在L个vector里,对于每个vector只要单纯看连续m个数是否有相同的数字即可,如果没有就更新答案。代码:#include <bits/stdc++.h

2017-09-16 10:29:26 318

原创 HDU 6199 dp

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6199 AB两个人玩游戏,n个数,从左到右依次选取。第一个人可以选择1个或者2个数,假设某一轮一个人选择了k个数,那么下一轮另一个人就要选择k个或者k+1个数,如果剩下的数字不够就不能选择,游戏终止。此时比较A-B的大小,问两个人都采取最优策略,都尽可能让自己所获得的数的总和大,最后A-B的最大值

2017-09-15 21:18:37 364

原创 HDU 6201 树形dp

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6201 给一棵n个节点的树,每个节点和边都有权值,求一条价值最大的路径。价值为该条路径终点的价值 - 起点的价值 - 路径上边的权重和。思路:树形dp,分别考虑祖先与后代以及兄弟之间的关系即可。细节比较多,详见代码。代码:#include <bits/stdc++.h>using namespa

2017-09-15 20:49:02 361

原创 HDU 6138 AC自动机

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6138 给出n个字符串,m个询问,询问x和y两个字符的最长公共子串的长度,而且要求这个子串为这n个字符串中任意一个(或多个)的前缀。思路:AC自动机。 每个节点end数组都保存当前节点到根节点的距离。将n个字符串保加入AC自动机。然后对x在自动机上跑一边标记节点,然后再对y跑一遍,遇到标记的节点

2017-09-15 20:42:55 315

原创 HDU 4080 字符串哈希+二分

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4080 找到一个字符串中出现超过m次的最长的子串,以及该子串最有出现的起点。如果有多个相同的就选择最右端出现的。思路:二分长度,然后哈希统计子串出现次数。代码:#include <bits/stdc++.h>using namespace std;typedef unsigned long l

2017-09-15 20:35:17 521

原创 EOJ 3329 dp

题意:题目链接:http://acm.ecnu.edu.cn/problem/3329/ 中文题。但是题意有点迷,在计算子集个数时,对于同一个子集只计算一次,如{1,2,3,3}中存在两个{1,2,3},但是计算的时候只算一个{1,2,3}。思路:dp,需要点优化,因为这里数的范围只有3500~4500,所以可以存这些数字的个数,注意到这里异或产生的质数最多只到8191。 dp[i][j]表示到

2017-09-15 20:29:01 394

原创 2017乌鲁木齐网络赛D题 区间dp

题意:题目链接:https://nanti.jisuanke.com/t/16953 长度为L的线段上有n个点,每个点保存了该点的位置以及可以访问该点的最早时间,走过单位1的距离需要单位1的时间,现在需要将这n个点都访问,问所需的最短时间。(只有在规定访问时间后访问点才算访问成功)。思路:区间dp,很巧妙。 与一般的区间dp不同的是,该题是长的区间向短的区间dp。dp[i][j][0/1]表示将

2017-09-13 19:28:36 521

原创 HDU 4758 AC自动机+状压dp

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4758 一个矩形从左上角走到右下角,向右移动用R表示,向下移动用D表示,要求满足移动序列中含有给出的两个规定子串,问一共有多少种方案?思路:还是经典的AC自动机+状压DP思路,类似HDU-2825:http://blog.csdn.net/bahuia/article/details/771490

2017-09-07 17:17:12 447

原创 HDU 4057 AC自动机+状压dp

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4057 要求构造一条长度为l的字符串,构造的字符串中若含有给出的子串,就可以加上该子串的权值,但是同一子串只能算一次权值,问构造的字符串最大权值多少。思路:看到n只有10,典型的AC自动机状压的思路,dp[x][y][S]保存构造到第x个字符,到达结点y,且含有子串的状态为S是否可能,直接转移最后

2017-09-07 11:26:10 313

原创 HDU 2457 AC自动机+dp

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2457 给出只包含AGCT四个字符的基因序列,其中给出n个字符串,要求序列中不含有这些子串,问最少改变多少个字符?思路:AC自动机+dp,不能存在的子串构成一个AC自动机,然后在自动机上dp,dp[x][y]表示第x个字符已经到了自动机结点y之后能修改的最少步骤。判断字符是否需要修改,然后转移即可

2017-09-07 11:19:58 305

原创 HDU 4717 三分板子

题意:n个点有起始坐标,以及速度向量,问从t=0开始两个点的最远距离的最小值是多少。思路:两点之间的距离是二次函数,凹函数,取最大值还是凹函数。求此凹函数的最小值,直接套三分。代码:#include using namespace std;const int MAXN = 305;const double eps = 1e-6;struct point {

2017-09-05 20:58:56 360

原创 Codeforces Round #432(div.2) D题 暴力乱搞

题意:有n个数,可以进行两种操作: 1. 删除一个数,代价为x; 2. 使一个数增加1,代价为y; 每个操作可以进行任意次数,要求在最少代价的情况下,使得所有数的gcd!=1。思路:仔细想想没什么策略。那就考虑暴力。 既然要让gcd不等于1,那么就枚举所有可能的gcd,对于每个gcd,再枚举所有可能的倍数,剩下就是要求出每个数到达相应倍数所花的最短操作数。 对于gcd为a,在区间[(t-1

2017-09-05 12:51:19 303

空空如也

空空如也

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

TA关注的人

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