- 博客(42)
- 收藏
- 关注
原创 Mysterious Bacteria
题目大意:T组样例,给你一个x,求出满足x=b^p的最大幂p。解题思路:使用暴力用对数函数(log(n)/log(m)即以m为底n的对数)枚举必然超时,正确的做法是用唯一素数分解定理分解质因数然后求出所有次幂的最大公约数。如果n是负数需要特殊处理一下次幂,奇数次幂不需要处理,偶数次幂需要不断降幂(即除2)得到最终的奇数次幂。 代码如下:#include<iostre...
2018-08-27 14:59:51 302
原创 LightOJ—Combinations
题目大意:求组合数C(n,m);解题思路:直接用组合数的公式,再用费马小定理+快速幂求出逆元即可。需要注意的是要把阶乘提前计算出来保存起来,否则必然超时。 代码如下:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;fstream&gt;#include&lt;set&gt;#inc
2018-08-26 19:28:52 186 1
原创 机器人走方格 V2
解题思路:由于数据较大,所以记忆化递推,即记录每一节点的值,每一个节点的值由前面两点的值推出这种方式就不好用了。从1,1走到m,n这一点需要向下走m-1格,向右走n-1格,总共(n+m-2)格,问题就是什么时候向下什么时候向右了,所以这个问题就变成了一个组合问题。即求解C(n-1或者m-1,n+m-2)。 由于除法取模的问题,需要找到分子的逆元,本题的MOD为1E9+7,是一个质数,...
2018-08-26 16:13:33 381
原创 codeforces round 506 div3 C. Maximal Intersection
题目大意:给你n的区间,要求输出n-1个区间的最长交集的长度(也就是需要删除一个区间)解题思路:当时没啥头绪,还以为是和容斥有关,主要是不知道如何求公共交集的长度。 今天看了下网上的代码,大致理解了过程。 对于n个区间来说,它们公共的交集长度就是最大左边界和最小右边界的差的绝对值。注意这个交集是这n个区间的子集合,当时没理解这一点,以为是只要是交集就行。那么保存下所有的左边界和...
2018-08-26 10:25:10 188
原创 Fibonacci
题目大意:算第n个斐波那契数解题思路:根据题意来看就是一个矩阵快速幂的模板题,利用脑海中残留的快速幂知识然而忘了怎么算矩阵乘法,于是用人类最原始的暴力思维一个个枚举算了。。。所幸只是一个2×2的矩阵,然而还是算错了几步调试了半天。。还是要提高姿势水平啊。 暴力代码如下:#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;cstdio&am
2018-08-24 08:39:04 1461
原创 一卡通大冒险
解题思路:一个简单的递推关系,当前有n张一卡通的话,那么它有从1-n种状态,每一种状态可以从上一个状态也就是n-1张一卡通哪里推出,比方说有3张一卡通我要求它放在两本书中有多少种方法,那么它就有两种情况: 1.从2张一卡通放在一本书中,然后我在加一本书放第三张. 2.从2张一卡通放在两本书中,然后我分别往每一本书里插入第三张,2本书就有两种可能。 代码如下:#include&...
2018-08-22 20:42:16 304
原创 Trailing Zeroes (III)
题目大意:找最小的n使得n!尾部的0的数量为Q。解题思路:末尾0的个数就是指这个数总共有几个10因子,而10又能表示成2和5的乘积。假设m=n!,那么m中2的因子个数肯定大于5的因子个数,所以m中5的因子个数即是所要求结果,显然n除以5可得到1~n中包含有一个因子5的个数,但是,1~n中有的数可以被5整除好几次,所以必须将这个数再除以5,得到1~n中包含有两个因子5的个数,依次循环...
2018-08-22 19:31:39 299
原创 Aladdin and the Flying Carpet
题目大意:给你一个长方形面积和一个最小可能的边长,统计有多少种满足面积相等且边长大于等于最小边长的长方形。解题思路:正常的对a开方然后找因子会超时,用唯一分解定理先找出面积a的因子数量,如果b*b>a则答案为0,否则从1-b暴力找一下满足条件的因子,最后减去即可。这个题我用欧拉筛求素数表的时候莫名的超时,百度了一下换成埃式筛居然过了。。。什么鬼啊,欧拉不是最快的线性筛选法吗?...
2018-08-22 14:30:00 490
原创 Help Hanzo
题目大意:求区间a,b内素数的数量解题思路:由于b极大,所以打表会爆内存。但并不意味着放弃打表,我们可以先打一个小点的素数表出来,如果b在这个表内直接二分找一下a,b就可以了。否则利用到b-a<=100000这个性质,可以开一个这么大的桶下标表示为j-a来筛选a-b内的素数,这样就用到我们之前的小素数表来筛选了。 代码如下:#include<iostream&...
2018-08-21 18:41:55 375
原创 Pairs Forming LCM
题目大意:简言之,就是给你一个n,让你找有多少对比n小的数,它们的最小公倍数是n解题思路:按照题目意思去暴力的话(先求GCD然后求LCM)肯定要超时,可以想到唯一素数分解定理。a,b,n都可以分解为一系列素数的乘积,求LCM就是a,b分解式中对应素数的最大次幂。思路不难但是被卡内存卡了无限次,标记数组貌似只能开到1e7(指数量级)。开大会报MLE,开小就WA了,根据素数定理那么素数...
2018-08-21 14:26:35 283
原创 codeforces round499 div2 C. Fly
题目大意:一个火箭从地球起飞最后要飞回地球,它每次从一个星球起飞和降落都要消耗燃料,消耗多少对应火箭的重量就要减少多少,起飞和降落都是一个单独到过程。首先给你n个星球和火箭本身的重量,然后n个数代表从第i个星球起飞一吨燃料可以举起的重量,最后一行n个数则是降落到第i个星球消耗一吨燃料能降落的重量,问最少携带多少燃料能进行一个来回?解题思路:题目看起来繁琐,实际上按照正常思维推公式就...
2018-08-20 20:45:02 218
原创 codeforces round499 div2 A. Stages
题目大意:给你n个小写字母表示的阶段,然后火箭需要其中的k个,这k个必须不相邻并且递增。每一个字母有一个重量,a是1吨,b是2吨。。。问最少多少吨。解题思路:贪心思想,既然求最小,那首先排序,然后“相邻”位置进行比较,注意这里的相邻是指可以满足条件的“相邻”字母,不是数组中的相邻,我们可以先把满足条件的字母保存下来,然后从它的位置以后继续比较。 代码如下:#include...
2018-08-20 20:32:55 128
原创 codeforces round49 div2 C. Minimum Value Rectangle
题目大意:t个测试样例,每个样例n个数,找四个数组成的矩形使周长的平方对面积的商结果最小,输出这四个数(就是长和宽)。解题思路:推这个关系可以发现如果长宽相同那么结果就是最小的,否则的话两个数差值越小并且本身越大结果就越小。#include<iostream>#include<cstdio>#include<fstream>#inc...
2018-08-20 16:21:58 141
原创 Language of FatMouse
We all know that FatMouse doesn’t speak English. But now he has to be prepared since our nation will join WTO soon. Thanks to Turing we have computers to help him.Input SpecificationInput consis...
2018-08-16 19:14:08 475
原创 codeforces 481 div3 E. Bus Video System
题目大意:n个车站,告诉你每一站公交车上的人数变化,然后问初始时公交车上人员数量可能有几种情况(公交车载客量为W)。解题思路:本能的做法自然是枚举每一种可能去跑每一站但这样时间复杂度高达O(w*n),所以要想办法压缩区间。维护一个前缀和代表当前站的总人数变化请况,然后更新初始人数的上下界限,使之满足全部变化。最后如果下限高于上限说明可能数为0。 代码如下:#include...
2018-08-16 15:21:51 188
原创 codeforces 481 div3 F. Mentors
题目大意:n个人,每个人对应一个能力值,接下来有m对互相不能“在一起”的人的编号。能力高的可以做能力低的人的老师,要求输出每个人最多有多少徒弟。解题思路:首先维护一个记录每个人可以拥有多少徒弟的数组,初始值为0。在输入不能在一起的人的时候,如果前者能力高于后者,那么前者徒弟就要-1,否则如果小于后者,那么后者徒弟数量-1。最后排序二分查找一次每个人第一次出现的位置即可(这里也可以用...
2018-08-16 14:31:35 156
原创 codeforce 481 div3 D. Almost Arithmetic Progression
题目大意:给你一个数列,每一项只能执行+1,-1或者不变(不算在操作次数内),最少操作多少次能使它变成一个等差数列,如果不能成为等差数列就输出-1。解题思路:首先根据前两项确定出公差然后模拟后面的情况即可。复杂度O(9n),前两项对应9种情况,对符合要求的数列更新最小操作次数。 代码如下:#include<iostream>#include<cstdi...
2018-08-16 11:00:31 177
原创 codeforces 481 div3 C. Letters
题目大意:n个宿舍楼m次查询,第二行给出每个宿舍楼的房间数,第三行每次查询要求输出b号房间在第几个宿舍楼的第几号房间。每个宿舍楼的房间都是从1开始编号的。解题思路:维护一个前缀和数组,代表到当前宿舍楼共有多少房间可用(包括之前的宿舍楼)二分查找宿舍楼的位置即可。 代码如下:#include<iostream>#include<cstdio>#i...
2018-08-16 10:49:35 172
原创 codeforces 490 div3 D. Equalize the Remainders
题目大意:给你n个数和一个m,要求余数为0-m-1的数的数量正好是n/m,m保证是n的因子,每个数只能执行加的操作,最后输出操作的次数以及修改后的数组结果。解题思路:主题思想是贪心,就是让那些余数值超过n/m的数向离他最近且余数值没有满足条件的数“移动”。这里的“移动”有个巧妙的处理,就是利用STL集合中的set.lower_bound()函数,集合中保存那些未满足条件的余数值,l...
2018-08-15 16:57:17 181
原创 POKER(扑克)
解题思路:这个题做法很多,我直接按照题意模拟了一下,复杂度O(n),记录一下右边界,每次得到算术平方根后与上一个结果进行比较,相同则放到数组右边界,否则更新上一个结果。 代码如下:#include<iostream>#include<cstdio>#include<fstream>#include<set>#include&...
2018-08-14 19:58:25 731
原创 codeforces 490 div3 C.Alphabetic Removals
题目大意:长度为n的字符串,按照小写字母顺序表删除k个字母(删完a才能接着删b….)解题思路:模拟即可,我用STL 队列写了一发,熟悉一些队列操作。#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;fstream&gt;#include&lt;set&gt;
2018-08-13 20:48:29 130
原创 codeforces 490 div3 B. Reversing Encryption
题目大意:一个长度为n的字符串,有k次操作,每次把范围为1-d(d是n的因子,且d从大到小)的子字符串翻转。 现在给你k次翻转后的结果,要求输出原来的字符串。解题思路:给出结果求原串,操作的过程翻转一下就可以。原来是d递减,那么现在递增,一开始不知道reverse()函数,拿模拟写了。。。用reverse()函数好简单。。 模拟代码:#include&lt;iostre...
2018-08-13 20:40:57 143
原创 codeforces div3 494 D. Coins and Queries
题目大意:n枚硬币q个问题,每个问题下有一个价值b,问最少需要多少枚硬币得到b?可以理解为一个找零的问题。解题思路:明显一个贪心的思想,但是朴素的贪心法即使用数组然后排序逆序遍历超时了,桶标记只能采用map标记(数组标记爆内存),记录一下最大的硬币然后遍历一下小于等于最大硬币的所有2的次幂即可。 代码如下:#include<iostream>#include&l...
2018-08-13 16:46:51 146
原创 codeforeces div3 494 C. Intense Heat
题目大意:n个数,求最大的连续k或者k个数以上的平均值,答案误差不得超过10^-6。解题思路:暴力就好了,需要注意的是最后的输出,我直接按照答案保留了小数点后15位。 代码如下:#include<iostream>#include<cstdio>#include<fstream>#include<set>#inc...
2018-08-13 15:50:28 143
原创 codeforces div3 494 B. Binary String Constructing
题目大意:给你n个0和m个1,要求输出有k个不同的“01”字符串(比如010110有4个不同,1010101有6个不同)。解题思路:一个思维题。构造一个这样的字符串首先知道一个01或者10就有一个不同,n个就有2*n-1个不同,因为答案要求是k,所以n=k/2,理论上01或者10都可以,但是由于0和1数量不同所以数量多的先输出,比如0多就先输出01,最后根据k是奇数还是偶数还有n,...
2018-08-13 15:41:49 113
原创 Oulipo-HDU-1686 哈希
这个题我之前用kmp板子写过一次,这次开始学习哈希,再上一个单哈希的方法,就当入门模板吧。思路:算出子字符串的哈希值,然后遍历主字符串枚举起点,算出和相同长度子串的哈希值,如果值相同则答案加1。 代码如下:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;fstream&gt;#include&
2018-08-12 16:18:13 251 1
原创 学习字符串的一点感悟
学了几天字符串,初步了解了KMP,扩展KMP,马拉车算法。基本都是靠看网上的博客,B站,知乎慢慢领悟的。个人感觉网上博客大同小异,有很多细节处理讲不明白,只是含糊其辞,用一大堆专业术语糊弄过去了,甚至有的博主写的存在错误之处。反而知乎上的算法讲解都是原创,不乏讲的绝妙的答案。学习算法是一个艰苦的历程,菜鸡要继续加油了。...
2018-08-10 15:34:55 553
原创 最长回文
给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等Input输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c…y,z组成的字符串S 两组case之间由空行隔开(该空行不用处理) 字符串长度len &amp;lt;= 110000Output每一行一个整数x,对应一组c...
2018-08-10 15:23:21 258
原创 codeforces 502 div1+div2 C. The Phone Number
题目大意:给一个数列长度n,要求输出一个最长上升序列长度和最长下降数列长度和最小的数列。解题思路:这个我是靠观察答案蒙出来的。具体算法的证明我也不懂。。。。答案将数列分段,每一段都是连续上升数列,这样LIS的长度就是每一段的长度,LDS的长度就是它可以分为几段。分段的依据就是n的根号,例如小于9大于3的每段长度为2(LIS长度),大于9小于16的每段长度为3。另一个难点在于输出,之...
2018-08-09 14:29:22 192
原创 codeforces 502 div1+div2 B.The Bits
题目大意:有两个长度为n的二进制数a,b,问a里存在多少对可以交换的两位数使得a或b(a||b)结果和初始结果不同?解题思路:首先想到a串只有0和1交换才有可能使a||b结果发生变化,进而想到对应的b位置上必须不全是1才可以,但这个题O(n2)的做法会超时,正确的O(n)做法是在遍历a的时候分别统计4种情况的数量,即(ai,bi)——(0,1),(0,0),(1,0),(1,1...
2018-08-09 13:26:22 187
原创 POJ-3461-Oulipo
The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter ‘e’. He was a member of the Oulipo group. A quote from the book:Tout avait Pair normal, mais tout s’...
2018-08-08 16:19:03 191
原创 HDU-1711-Number Sequence
Given two sequences of numbers : a[1], a[2], …… , a[N], and b[1], b[2], …… , b[M] (1 &amp;lt;= M &amp;lt;= 10000, 1 &amp;lt;= N &amp;lt;= 1000000). Your task is to find a number K which make a[K] = b[1], a[K + 1] = b...
2018-08-08 09:48:42 165
原创 Page Numbers
«Bersoft» company is working on a new version of its most popular text editor — Bord 2010. Bord, like many other text editors, should be able to print out multipage documents. A user keys a sequence o...
2018-08-06 20:55:45 555
原创 Comparing Two Long Integers
You are given two very long integers a, b (leading zeroes are allowed). You should check what number a or b is greater or determine that they are equal.The input size is very large so don’t use the ...
2018-08-06 20:42:00 307
原创 Ostap and Grasshopper
On the way to Rio de Janeiro Ostap kills time playing with a grasshopper he took with him in a special box. Ostap builds a line of length n such that some cells of this line are empty and some contain...
2018-08-06 20:26:16 218
原创 Different is Good
A wise man told Kerem “Different is good” once, so Kerem wants all things in his life to be different.Kerem recently got a string s consisting of lowercase English letters. Since Kerem likes it when...
2018-08-06 20:11:37 325
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人