关闭

求N!最后非0位 O(N log N)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1594 直接上代码,此题直接当作模题就好了,感觉不怎么好理解。看了几遍,还是不太能理解。先放这里吧。 吉林大学模版: #include #define maxn 10010 using namespace std; const int mod[20]={1,1,2,6,4,2,2,...
阅读(400) 评论(0)

POJ 2823 Sliding Window 线段树求解

题目链接:http://poj.org/problem?id=2823 题意:就是求区间最小值。 此题,显然可以用线段树过,但是,知道此题是学习滑动窗口时。此题用滑动窗口做的话比较省代码,内存和时间。但是要是真正到了赛场上,可能真的不太能想起用滑动窗口,而且对单调队列也不是很熟悉。写一下线段树也还是不错的。 代码: #include #include #include #defin...
阅读(321) 评论(0)

POJ 2823 Sliding Window 滑动窗口 单调队列优化

题目链接:http://poj.org/problem?id=2823 灵感来源:单调队列初步 为什么说是灵感来源呢,看了紫书上的代码,知道了单调队列的意思,而且有两种解法,一种是用C++的set,复杂度是O((N-k) log k),然后百度到了此题,为了方便用来set,然后果断TLE。就试着写单调队列,可是却写不出来。。百度到这篇博客后,第一次随便过了一遍,没怎么看懂。没看了。今天再次百度...
阅读(650) 评论(0)

UVA 11572 Unique Snowflakes(最长无重复元素问题) 用dp思路

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25998 题意:给定一个数组,求最长的一个连续的子序列,使得该序列中没有重复的元素。 紫书上用了两种方法,一种是:滑动窗口,还有一种,我就把叫做Dp吧。这里采用的是dp思路: 用dp[i]表示以i为结尾的最长连续且没有重复元素的子序列的长度,则状态转移方程为:d...
阅读(319) 评论(0)

UVA 11054 Wine trading in Gergovia (酒的交易问题)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21418 紫书P237的例题8--5。英文没看。 题意:紫书上用的是动态处理,内存几乎为零。不过,我没那么强,还是用自己方式写吧。用dp[i]表示i为最后一个的需求量。则状态转移方程为:dp[i]=dp[i+1]+A[i]。实质就是价值的转移。即紫书说的价值转换。...
阅读(268) 评论(0)

HDU 2689 Sort it 归并排序求逆序对

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2689 思路:就是归并排序啦。在归并排序的同时,记录逆序对就行了。时间复杂度即为归并排序的复杂度:O(N log N)。 代码: #include #include #define maxn 100010 using namespace std; int N,A[maxn],T[maxn],a...
阅读(340) 评论(0)

所谓的归并排序

归并排序: 以前学过归并排序,把意思看懂了,但要是自己写代码实现,那是真的不会,现在看了紫书上的代码,现在真的是豁然开朗,看这个的原因是也是为了实现逆序对的O(N log N)实现。 思路:其实,归并排序的实质就是二分,我们对二分并不陌生,经常用二分来查找某个值,我们可以把这个值称为二分的“附加值”(即:我们的目的),同样的在归并排序中,这个“附加值”不再是某个值,而是某个过程,这个过程就是“...
阅读(492) 评论(0)

HDU 1003 Max Sum 最大子段和dp解题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题意:给定一个数组,求最大的连续的一段和值(最大子段和)。 Dp思路:用dp[i]表示以i结尾的最大最大子段和,则状态转移方程为:dp[i]=max(dp[i-1]+A[i],A[i]),这个很好理解。做了这题就可以做HDU1024的升级版最大子段和了。遗憾的是,我居然反过来了,导致HDU1...
阅读(447) 评论(0)

怎样k^N的最高位

思路:k^N=10^(N lg k)。 令:N lg k=a+b。其中:a为 N lg k的整数部分,b为小数部分。则所求最高位有10^b的首个非零数决定。在转换时的注意精度处理,最好把double与long long 相互转换,精度会损失少些,与Int可能会出错。...
阅读(260) 评论(0)

矩阵加速递推(XDU 斐波那契数列为列)

题目链接:http://acm.xidian.edu.cn/problem.php?cid=1005&pid=4 这是XDU校网络塞的一道题目,斐波那契数列。。。看到给出的数据那么大,心想,既然给出了Mod,说不定有一个循环节呢,可是直到N达到10^6都还没有出现循环节,只有放弃了,然后觉得可以解线性递推式的特征根来求解,简单化了几下,感觉不妥,然后放弃了。后来白神说,这题可以用矩阵加速,感谢白...
阅读(549) 评论(0)

N!的最末位非零数

N!的最末位非零数(原帖)   给定一个数N(N   在N很小的情况下,有一个简便的方法:求出1到N之间每个数的2的因子数和5的因子数,记为F(2)和F(5),显然F(2) >= F(5)。由于在末尾只有2和5相乘才能产生0,如果我们把2和5抛去,那么肯定不会有0,这样就可以一边乘一边模10,防止溢出。剩下的一堆2和5如何处理呢?因为2肯定比5多,因此最末位肯定是偶数(0的阶乘和1的阶乘除外...
阅读(220) 评论(0)

PKU 1401 Factorial 有一个计算公式

题目链接:http://poj.org/problem?id=1401 题意:求N!的末尾0的个数。 思路:这算是一个数学公式求解型的问题。方法是,给定一个数N,结果就是: [N/5]+[N/25]+[N/125]+............+[N/(5^k)],其中5^k为不大于N的最大的数。具体原理自行百度即可。 代码: #include using namespace std; i...
阅读(214) 评论(0)

CSU 1592 石子归并 相邻操作Dp问题

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1592 题意:给定一堆石子,每次只能合并相邻两堆,每次的合并代价为两者石子数之和,求最后只剩下一堆时的最小合并代价。 刚开始,想到的是贪心,每次合并相邻和值最小的两堆就行了,这题和 POJ 3186  Treats for the Cows以及紫书上的“最优矩阵链乘”差不多,初看看似贪...
阅读(366) 评论(0)

POJ 3186 Treats for the Cows 简单dp

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68966#problem/O 题意:给定一个数组,每次只能从首或位取一个数,每个数的权值为取该数的序数,求所能使所有数乘上他的权值的和值最大,并求出该最大和值。 虽然说是简单dp,但是,还是百度了一下,说是枚举数组的位置,然后就很容易想到状态转移方程了。 思路:用dp[i]...
阅读(376) 评论(0)

POJ 3616 Milking Time 排序Dp

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68966#problem/R 题意:给定一个区间和若干个子区间,求没有重叠区间的最大和值。 这题没啥说的,直接排序一下,就变成类似于紫书上所说的DAG上的最长路问题了。 代码: #include #include #include #define maxn 101...
阅读(329) 评论(0)
110条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:40637次
    • 积分:1400
    • 等级:
    • 排名:千里之外
    • 原创:103篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条