自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【HDU 3068】【manacher模板题】最长回文

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=3068思路:manacher模板题复杂度O(n), 这题二分+hash或者后缀数组复杂度为O(nlogn),好像会T详细讲解:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/e

2016-11-23 23:11:08 476

原创 【HDU 5973 && 51nod 1185】【威佐夫博弈+大数】

HDU5973 传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=5973题意:有2堆石子。两个人轮流拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设两个人都按照最优的策略取石子。给出2堆石子的数量,问先手是否能赢得比赛。 每堆石子的大小≤10^100。 思路:对于a

2016-11-21 21:30:10 1192

原创 最大子段和及其变形小结

最近做刷51nod的时候,看到了这类题目,挺有意思的,小结一下51nod1049 最大子段和题意:O(-1)思路:经典问题复杂度:O(n)代码:#include #include using namespace std; const int MAXN = 50000+5; int a[MAXN]; int main() {

2016-11-13 00:04:26 1221

原创 【codeforces 691 F】【数论+前缀和 好题】【求序列中乘积大于等于p的点对的个数】

传送门:http://codeforces.com/contest/691/problem/F题意:求序列中乘积大于等于p的点对的个数刚开始还想用数据结构维护一下,想想不靠谱先反向思考求乘积小于p的情况,具体的有两种思路思路一:类似于埃式筛法,cnt[a[i]]记录a[i]的个数,mul[i]记录点对乘积是i*j的个数复杂度:O(NloglogN+m)代

2016-11-22 23:20:59 501

原创 【codeforces 691 E】【矩阵快速幂 思维题】【给定序列,从序列中选择k个数(可以重复选择),使得得到的排列满足xi与xi+1异或的二进制表示中1的个数是3的倍数。问满足条件的序列个数】

传送门:http://codeforces.com/contest/691/problem/E题意:给定序列,从序列中选择k(1≤k≤1e18)个数(可以重复选择),使得得到的排列满足xi与xi+1异或的二进制表示中1的个数是3的倍数。问长度为k的满足条件的 序列有多少种?思路:首先每个元素自己构成一个长度为1的满足条件的序列。其次我们可以预处理出满足条件的vi,vj,就可

2016-11-17 21:01:26 1209

原创 【codeforces 519 D】【hash+dp】【给出一个字符串,给出每个字母的权值,求字符串的子串中首尾相等,除去首尾字母的权值和为0的数量。】

传送门:http://codeforces.com/contest/519/problem/D题意:给出一个字符串,给出每个字母的权值,求字符串的子串中首尾相等,除去首尾字母的权值和为0的数量。思路:从前到后扫描字符串,计算前缀和,每次将前缀和Hash,然后每次查询与当前位字母相同的前缀和 前缀的数量,间接地计算出字符串的数量。代码:#include

2016-11-17 16:32:07 648

原创 【codeforces 691 D】【并查集 或者 dfs】aps in Permutation【给一个1到N的排列,M个操作,每次可以交换X Y位置上的数字,求可以得到的最大字典序的数列】

传送门:http://codeforces.com/contest/691/problem/D题意: 给一个1到N的排列,M个操作(1思路:把位置分成若干块,每一块里面的位置都是可以被这一块里另一个位置经过若干次调换的(类似强连通,位置可达),因而可以用并查集维护。然后把每一块位置里的 位置按从小到大排序,位置上的值按从大到小排序,依次填入位置(最大的放最前)。每个

2016-11-17 13:37:22 925

原创 【codeforces 691C】【模拟】Exponential notation【 给定一个长度为N的数字,转化为 标准的科学计数法形式】

传送门:http://codeforces.com/contest/691/problem/C题意: 给定一个长度为N的数字,转化为 标准的科学计数法形式。N最大可达1e6。要考虑前置0 和 后置 0 的特殊情况。 当指数为0 的时候,不输出指数部分。思路:模拟,需要注意细节,和cf 697 B 互为逆过程,题解见Here代码:#include using

2016-11-17 13:30:15 384

原创 【codeforces 681C】【优先队列+模拟】 Heap Operations

传送门:http://codeforces.com/contest/681/problem/C思路:因为本题的操作是一系列关于堆的操作,而且数据规模也合适,所以我们可以直接用一个堆来模拟这些操作(可用 STL 的 priority _ queue 或 multiset ),然后动态判断当前操作是否合法。当前操作合法时只需要维护堆,且将当前操作加入题目要求我们求的答案序列中即可(可以用数

2016-11-13 00:16:24 487

原创 【codeforces 681B】【优化循环】Economy Game

传送门:http://codeforces.com/contest/681/problem/B思路:最朴素的想法是用三重循环枚举 a,b,c ,但是其实用两重循环枚举 a,b ,再检查是否存在满足条件的c即可。代码:#include using namespace std;#define ll __int64const int inf=0x3f3f3f3f;con

2016-11-13 00:09:43 447

原创 【codeforces 672 C】【计算几何+贪心】Recycling Bottles【有两个人和一个垃圾桶,n个瓶子,把每个瓶子捡起来然后扔到垃圾箱中,每人最多带一个瓶子,求最短总距离】

传送门:http://codeforces.com/contest/672/problem/C题意:有两个人和一个垃圾桶,n个瓶子, 现在要人去把每个瓶子捡起来然后扔到垃圾箱中,每人最多带一个瓶子,求最短总距离思路:我先用坐标平移使得垃圾桶作为零点建立坐标系假设人都在垃圾箱上,那么总距离为2 * 每个瓶子到垃圾桶的距离现在人不在上面,所以只要求出瓶子到垃圾桶的距离 -

2016-11-12 22:45:46 646

原创 【UVa 10003】【区间DP】Cutting Sticks【有一个长为L的木棍,木棍中间有n个切点。每次切割的费用为当前木棍的长度。求切割木棍的最小费用。】

传送门:http://vjudge.net/contest/141412#problem/D (密码:cd)题意:有一个长为L的木棍,木棍中间有n个切点。每次切割的费用为当前木棍的长度。求切割木棍的最小费用。思路:d(i, j)表示切割第i个切点到第j个切点这段所需的最小费用。则有d(i, j) = min{d(i, k) + d(k, j)} + a[j] - a[i]; (

2016-11-12 16:59:32 1077

原创 【UVA 11584】【简单dp】Partitioning by Palindromes【给定一个字符串, 问最少分为几部分可使各部分均为回文串】

传送门:http://vjudge.net/contest/141412#problem/A  (密码cd)题意:给定一个字符串, 问最少分为几部分可使各部分均为回文串思路: 1 dp[i] 表示以i结尾的最少分割数 2 dp[i] = min(dp[j-] + 1 && j-i为回文)复杂度O(n^3),这题数据好像比较水不需要紫书上说的预处理

2016-11-12 14:55:37 366

原创 【hihoCoder太阁最新面经算法竞赛13 C】【01背包】Target Sum【给一个序列在序列中添加+或者-,使得运算结果为s,求方法数】

传送门:http://hihocoder.com/contest/hihointerview22/problem/3题意:给一个序列在序列中添加+或者-,使得运算结果为s,求方法数思路:强搜肯定不行,这题可以转换成01背包求解先求出序列的sum,多出的sum-s肯定有一半是要加上去的,还有一半是要减去的所以背包容量为(sum-s)/2,背包价值为方案数代码:

2016-11-09 20:35:01 706

原创 【玲珑杯 1047】【二分匹配 KM算法或者费用流】Best couple【定义男女生的距离为最短距离,求匹配之后使得总距离最大】

传送门:http://www.ifrog.cc/acm/problem/1055思路:跑一发floyd,然后再用km。但是问题来了,这个有可能n != m。那怎么办?其实可以补上一些不存在的点。来使得n = m。他们的权值就设置为0就好了。意思就是这些人的搭配,是对答案没有贡献的。注意不能设置为-inf。因为补上的那些点也是必须要选人的,只不过他们选了人,相当于没选而已(权

2016-11-08 23:41:48 688

原创 【51nod 1065】【贪心+前缀和】最小正子段和【最小正子串和】

传送门:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1065思路:可以参见夹克老爷的回复的那个帖子:http://bbs.csdn.net/topics/370106383。对于这类连续序列的问题可以先求出前缀和,对于每个位置求某个位置到当前位置和大于1的和的最小值。然而这是复杂度是O(n^2)的。其

2016-11-08 13:38:58 824

原创 【codeforces 680 D】【数学+贪心+DFS】【求一个不超过 m 的最大体积 X, 每次选一个最大的 x 使得 x3 不超过当前剩余体积。问在能选最多个数的情况下,X 最大是多少】

传送门:http://codeforces.com/contest/680/problem/D题意:求一个不超过 m 的最大体积 X, 每次选一个最大的 x 使得 x3 不超过当前剩余体积。问在能选最多个数的情况下,X 最大是多少思路:对于每一次选择,首先要保证选完后的剩余体积最大,这样就保证了能选最多个数。然后在这基础上保证X 最大。考虑对

2016-11-07 23:38:25 445

原创 【codeforces 680 C】【数学题+交互题】C. Bear and Prime 1【底数是[2,100]中的数,现在你最多询问20次,询问为这个数是不是底数的因数,最后判断这个数是不是素数】

传送门:http://codeforces.com/contest/680/problem/C题意:底数是[2,100]中的数,现在你最多询问20次,询问为这个数是不是底数的因数,最后判断这个数是不是素数思路:[2,100]的素数有25个,不能都询问一遍,可以询问[2,50]里面的素数,如果全都是no就是大于50的素数,如果yes的个数大于1,那么一定不是素数,如果是一个yes

2016-11-06 23:27:49 658

原创 【玲珑杯 1054】【暴力+枚举约数】String cut

传送门:http://www.ifrog.cc/acm/problem/1054思路:首先知道这样一个性质,删除一个字符之后的字符串的循环节长度一定是nn的约数。所有我们就枚举删除哪一个字符,然后对每一个约数判断是否可以循环节为它。复杂度O(nlogn)O(nlogn).代码:#include #include #include #include using

2016-11-06 01:10:16 406

原创 【玲珑杯 1053】【概率DP】Gemstone digger

传送门:http://www.ifrog.cc/acm/problem/1053思路:令dp[i][j]dp[i][j]表示前ii个矿,得到jj个宝石,不会死亡的最大概率。转移方程:dp[i][j]=max(dp[i−1][j],dp[i−1][j−ai]∗(1−pi))dp[i][j]=max(dp[i−1][j],dp[i−1][j−ai]∗(1−pi))然后找不会死亡概率

2016-11-06 01:00:33 476

原创 【玲珑杯 1052】【暴力+set】See car

传送门:http://www.ifrog.cc/acm/problem/1052思路:因为车一点在人的右上角,可以变化一下左标,把人的左边变为原点,其它点就在第一想象了。然后发现所有经过原点共线的点,在最前面被看到的点都是互质的,所以对于所有的点(xi,yi)(xi,yi),用(xigcd(xi,yi),fracyigcd(xi,yi))(xigcd(xi,yi),fracyigcd(xi

2016-11-06 00:50:25 445

原创 【玲珑杯 1051】【构造】My-graph

传送门:http://www.ifrog.cc/acm/problem/1051思路:如果一个图有nn个顶点,有∁2n∁n2条可能的边。显然,一个图要想和自己互补,它里面的连线数必然是 ∁2n2∁n22, 且其必须是偶数。即可以被4k4k 和 4k+14k+1整除 的数。那么这个条件是充分的吗?接下来,我们将会构造性地说明,对于上述的每一个 n ,顶点数为 n 的图都确实有可能

2016-11-06 00:39:24 1040

原创 【玲珑杯 1050】【DP】array

传送门:http://www.ifrog.cc/acm/problem/1050思路:注意到10^9范围内的2的幂次只有30个,所以我们定义dp[30]这样一个dp数组,dp[i]表示以2^i为结尾的满足条件的子序列的个数。枚举每一个数来转移,复杂度O(n)代码:#include #include #include #include using namespace s

2016-11-06 00:36:01 325

原创 【玲珑杯 1049】【卡特兰数+(lucas定理+预处理)】Deg-route【求从 (0,0)到 (n,n)不穿过对角线 x = y 的方法数】

传送门:http://www.ifrog.cc/acm/problem/1049题意:求从 (0,0)到 (n,n)不穿过对角线 x = y 的方法数思路:在一个格点阵列中,从 (0,0) 点走到 (n,m) 点且不经过对角线 x = y 的方法数 (x > y): C(n + m−1,m)−C(n + m−1,m−1)。在一个格点阵列中,从 (0,0) 点走到 (n,m)

2016-11-06 00:24:37 1878

原创 【玲珑杯 1046】【记忆模拟】chess play【n*m棋盘,11xy表示(x,y)位置加白棋,12xy表示(x,y)位置加黑棋,2 x1 x2表示交换x1和x2这两行】

传送门:http://www.ifrog.cc/acm/problem/1046思路:显然不可以纯暴力地去怼,只需要一个数组去记录第ii行目前真正的在cur[i],然后交换操作只需要改变记录数组的值,实现O(1)O(1)交换。复杂度O(q*n)代码:#include #include #include #include using namespace std;#

2016-11-06 00:08:43 713

原创 【51nod 1201】【DP + 思维】整数划分【将N分为若干个不同整数的和,求划分数】

传送门:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1201思路:dp[i][j]表示i这个数划分成j个数的情况数。dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1]前者表示将i - 1划分为j个数,然后j个数都+1 还是不重复后者表示将i - 1划分

2016-11-04 15:00:00 2041

原创 【hdu3415】【单调队列 】Max Sum of Max-K-sub-sequence【求长度不大于k的区间最大子串和】

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3415题意:给出一个有N个数字(N 思路:因为序列是环状的,所以可以在序列后面复制前k-1个数字。如果用s[i]来表示复制过后的序列的前i个数的和,那么任意一个子序列[i..j]的和就等于s[j]-s[i-1]。对于每一个j,用s[j]减去最小的一个s[i](i>=j-k)就可以得

2016-11-03 20:22:27 825

原创 【hihocoder 1388】【区间DP】A Game【给出一个数列,两人每次从数列的头尾取数,小ho 先取,小hi每次都采取最优策略,问小ho最终能取得的数的总和最大是多少】

传送门:http://hihocoder.com/problemset/problem/1338题意:小hi和小ho玩游戏,给出一个数列,两人每次从数列的头尾取数,小ho 先取,小hi每次都采取最优策略,问小ho最终能取得的数的总和最大是多少。思路:区间动规dp[i][l]表示当前某个人以最优策略在i为开头,l为长度的区间上执先手选数的最大答案,转移方程为dp[i][l] =

2016-11-03 17:36:26 944

原创 【 51NOD 1434 素数筛 】【数论+思维+筛素数】区间LCM【找到一个最小整数M,满足M>N,LCM(N+1,N+2,..,M-1,M)是LCM(1,2,3,4,.,N-1,N) 的倍数】

传送门:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1434思路:虽然是四级题,但是思路还是不太清晰,找网上题解讲的很多不是特别清晰首先可以得出一个性质:LCM(1,2,3,4,...,N-1,N) 中质因子k的出现的次数为t,则有k^t根据这个性质我们先筛出素数,然后枚举每个质数,求出对应的k和t,

2016-11-02 23:25:45 3349

原创 【codeforces 731D】【差分+线段扫描 思维题】80-th Level Archeology【给你n个word,现在要使得word按字典序排列,随便操作多少次,每次可以使每个word+1】

传送门:http://codeforces.com/contest/731/problem/D题意:给你n个word,每个word都有若干个字母,现在要使得从上到下的word都必须小于或等于下一个word,你可以操作一次钥匙将所有word的所有字母都加上1,如果>c,就变为1,问是否有解,有的话随意输出,没有的话就输出-1思路:如果光暴力复杂度会达到O(nc),下面介绍两个技巧

2016-11-01 23:17:00 564

原创 【codeforces 733 C】【模拟】C. Epidemic in Monstropolis【给你n个数,再给你k个数,问你a序列能否通过一定规则合并变成b序列】

传送门:http://codeforces.com/contest/733/problem/C题意:给你n个数,a1,a2,a3,…an,再给你k个数b1,b2,b3,…bk,问你a序列能否通过合并变成b序列。合并的条件为只能相邻的数合并并且由大数向小数合并,然后通过新序列合并下去问你能不能达到b序列?能达到的话输出是如何合并的,不能的话输出NO。思路:1、我们

2016-11-01 19:46:48 641

原创 【codeforces 733D】【贪心 乱搞】D. Kostya the Sculptor【给你n个长方形,让你找出2个或1个长方体,使得他们拼接成的长方体的内接圆半径最大】

传送门:http://codeforces.com/contest/733/problem/D题意:给你n个长方形,让你找出2个或1个长方体,使得他们拼接成的长方体的内接圆半径最大(两个矩形拼接的条件是他们有一个面完全相同)思路:很容易想到一个长方体的内接圆半径是由他的最短的那条边决定的,拼的时候贪心思想就是拼完之后让最小边变大,所以按两条边较长那个面把两个长方体拼起来

2016-11-01 17:16:27 663

空空如也

空空如也

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

TA关注的人

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