![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法技巧
Owen_K
这个作者很懒,什么都没留下…
展开
-
求n的阶乘末尾有几个零
通过因数分解知道,10是由2和5相乘得到的,而在n的阶乘中,因子2的数目总是比5多的,所以最终末尾有几个零取决于其中有几个5。1到n中能够整除5的数中有一个5,能整除25的数有2个5(且其中一个在整除5中已经计算过)…... 所以只要将n不断除以5后的结果相加,就可以得到因子中所有5的数目,也就得到了最终末尾零的数目,时间复杂度log(n)。code:#include#inclu原创 2016-05-29 23:55:15 · 839 阅读 · 0 评论 -
CF 678B 暑假集训13(闰年判断)
网址:http://codeforces.com/problemset/problem/678/B题目大意:一个女孩有一个y年的日历,她想知道y年之后哪一年的日期与y年的相同。做这题时突然想到了小学学习闰年平年的时候,在三四本田字格上画出了之后四五年的日历,现在还要去百度怎样判断闰年......一开始以为就是找规律,按照题目给的数据推,闰年加28,平年加6,感觉原创 2016-08-20 04:09:39 · 673 阅读 · 0 评论 -
快速求质数(C语言描述)
【问题描述】: 试编写一个程序,找出2->N之间的所有质数。希望用尽可能快的方法实现。【问题分析】: 这个问题可以有两种解法:一种是用“筛子法”,另一种是从2->N检查,找出质数。 先来简单介绍一下“筛法”,求2~20的质数,它的做法是先把2~20这些数一字排开: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18转载 2015-03-16 15:23:18 · 748 阅读 · 0 评论 -
巴什博弈 HDU2188
巴什博弈是个很经典的游戏。 就是只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。那么我们可以找到一个规律,来制定必胜策略。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s原创 2015-03-18 15:40:59 · 478 阅读 · 0 评论 -
二分查找 HDU2178
二分查找也叫折半查找,基本思路就像猜数字游戏比如你要猜一个1000以内的正整数,每次只需别人告诉你你说的数比目标数字大还是小。猜的方法就是“二分”。首先你可以猜500,除了运气特别好正好可以猜中之外,不管别人说“大了”还是“小了”,你可以把可行范围缩小一半:如果“大了”,那么答案在1~499之间;如果小了,那么答案在501~1000之间。只要每次猜可行区间的中点,那么就可以吧范围缩小一半。原创 2015-03-18 16:12:39 · 772 阅读 · 1 评论 -
尼姆博弈 HDU2176
有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。仔细分析一下,(1,2,3)也是奇异局势,无论对手如何拿,接下来都可以变原创 2015-03-20 22:09:30 · 401 阅读 · 0 评论 -
C++sort函数的各种用法
sort函数对结构体排序,对pair数组排序,对字符数组排序原创 2015-06-27 10:12:40 · 2988 阅读 · 0 评论 -
C语言中对文件的操作
A题时有时会用到对文件的操作读个数据打个表啥的虽然用的不多但一用到就得去百度。。。在此写一个C语言中文件操作的总结以便以后查阅 文件的打开操作 fopen 打开一个文件 文件的关闭操作 fclose 关闭一个文件 文件的读写操作 fgetc 从文件中读取一个字符 fputc 写一个字符到文件中去 fge原创 2015-07-26 00:01:43 · 891 阅读 · 0 评论 -
C++优先队列的用法与求集合的交集并集差集
C++求两集合的交集并集差集以及优先队列的用法原创 2015-07-30 10:56:59 · 2093 阅读 · 0 评论 -
最长递增子序列问题的求解
最长递增子序列问题的求解 最长递增子序列问题是一个很基本、较常见的小问题,但这个问题的求解方法却并不那么显而易见,需要较深入的思考和较好的算法素养才能得出良好的算法。由于这个问题能运用学过的基本的算法分析和设计的方法与思想,能够锻炼设计较复杂算法的思维,我对这个问题进行了较深入的分析思考,得出了几种复杂度不同算法,并给出了分析和证明。一, 最长递增子序列问题的描述设L=1,a转载 2016-03-29 15:54:19 · 343 阅读 · 0 评论 -
最长01子串
【题目】给定一个数组,数组中只包含0和1。请找到一个最长的子序列,其中0和1的数量是相同的。例1:10101010 结果就是其本身。例2:1101000 结果是110100【解析】这个题目,看起来比较简单,一些同学可能认为题目的描述符合动态规划的特征,然后就开始用动态规划解,努力找状态转移方程。这些同学的感觉,是很正确的。转载 2016-04-17 12:53:09 · 813 阅读 · 0 评论 -
HDU 1175 连连看(dfs,bfs)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1175dfs一个重要的剪枝:当拐弯数为等于2时,判断目标点是否在那一列(行)的有效的范围内。方向标记分别为0,1,2,3,在起始位置就开始做每个方向的标记。code:#include#include#includeusing namespace std;int map原创 2016-11-13 17:30:09 · 291 阅读 · 0 评论