算法研究
文章平均质量分 65
_低头的麦穗
感恩大牛的博客,所以我要向他们学习!
展开
-
NYOJ 267郁闷的C小加(二)
题目大意:将一个中缀表达式转为后缀表达式,原创 2014-11-19 18:57:59 · 592 阅读 · 0 评论 -
nyoj145 聪明的小珂
题目:点击打开链接分析:题目大意:n个数,先从第一个开始数,下一次就要从上一个数的下一个开始数m个,m,求最大的m使不重复的把n个数数完。 思路:由于要把所有的数都数完,且不能重复,那么可知,m一定是与n互质的,也就是gcd(n,m)=1时,m的最大值。 上码:#include using namespace std; int gcd(int a,int b原创 2015-04-08 18:14:59 · 451 阅读 · 0 评论 -
nyoj998 Sum
题目:点击打开链接题目大意:在1~n之间找到所有x满足gcd(x,n)≥m的和,其中1≤x≤n,遇到这样的题,我第一开始也没有什么太好的想法,我是把所有的gcd求出来,看是否满足条件,呵呵...肯定是TLE了...但是我们看,gcd(x,n)的值肯定都是n的因子,这里令gcd(x,n)=d当有上式的时候,我们令x=q*d,n=p*d,由题意可知x≤n→q*d≤p*d→q≤p原创 2015-04-08 18:23:10 · 473 阅读 · 0 评论 -
nyoj109 数列转换
题目:点击打开链接理解:有的题目,一看就应该是模拟,而有的题目规律性很强,我们看这道题是从(an-1,an,an+1)转化到(an-1+an,-an,an-1+an),三个数的和是不变的。那我们就想到是否数列额总和一样,两个数列就可以互达呢?在我们下结论之前肯定要举几个例子,验证一下。好现在考虑(1 2 3)(1 3 2)(1 2 3)→(3,-2,5)→(1 2原创 2015-04-08 18:07:06 · 701 阅读 · 1 评论 -
nyoj144 小珂的苦恼
题目:点击打开链接 解体思路:看到ax+by=n就很容易联想到ax+by=gcd(a,b).这是扩展欧几里得算法。扩展欧几里得算法:对于不全为0的a和b,一定有一个整数对且唯一使得ax+by=gcd(a,b),那这里a,b为都不为零,问是否有上面那个式子成立,这就好做了。只要看n%gcd(a,b)是否为0即可。 代码:#include int gcd(int原创 2015-04-08 17:50:44 · 385 阅读 · 0 评论 -
nyoj 44 子串和
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=44这个题做过好久了,但是一直没有记录下来。。。好吧,开始!题目大意:给一个整形数组,求连续非空子数组的最大和。解题思路:这题,最重要的就是一个思路,用一个max变量始终记录连续最大子数组和,sum记录当前和,而sum的处理是最重要的! 上码更清楚!原创 2015-04-26 06:39:32 · 523 阅读 · 0 评论 -
nyoj 102 最大和
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=104题目大意:这个题是二维连续子矩阵的最大和,是 子串和 的升级版。解题思路:枚举每个子矩阵,求出子矩阵的和,并笔记录最大值解题技巧:像这类的连续和,这里有一个小技巧:(input:a[0],a[1],a[2],...,a[n])映射到(handle:s原创 2015-04-26 06:46:45 · 429 阅读 · 0 评论 -
nyoj1170 最大的数
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1170题目分析:刚看到这个题的时候,就想着怎么模拟添加*/+/(),可是想想没有这么麻烦,最大的数肯定是乘出来的嘛。。。当然了,还要处理一些要细节 1.数组的中第一个没有前驱,最后一个没有后继,要单独处理 2.当某个数为1时,应该加到旁边的数上,要往较小的一个加(a原创 2015-04-26 07:01:10 · 1032 阅读 · 0 评论 -
nyoj 树状数组 522Interval 116士兵杀敌(二)
认真记录自己的成长,做人事,听天命。今天认真学习了树状数组这中数据结构,很美的一种结构,下面简单介绍一下树状数组:具体的介绍百度百科很清楚。我就说一下我对add(update),lowbit,getSum这三个函数的理解我们知道树状数组是一种求数组连续和的神结构,究竟神在哪里?1.树状数组求区间和的时间复杂度是logN2.修改某个只时,同时也修改了区间和,时间复原创 2015-05-02 23:02:19 · 583 阅读 · 0 评论 -
nyoj 01背包 289苹果 325zb的生日 456邮票分你一半
记录自己的成长,避免重复学习!今天我研究了一下01背包,下面是我做的三道题,比较起来更容易理解、总结。题目链接:苹果题目链接:zb的生日题目链接:邮票分你一半动态规划:避免重复计算,记录下计算过的值,用空间换取时间;01背包:是动态规划应用的一种,就是一系列的物品n1,n2,n3...,nn的大小分别是c1,c2,c3,...,cn,价值分别是w1,w2,w3,...,原创 2015-05-02 22:30:40 · 531 阅读 · 0 评论 -
nyoj 数论 541最强DE 战斗力
踏实做事,安心做人,这是最后的斗争,英特纳雄奈尔一定会实现。题目分析:这题是一个数论题,第一开始我自己找规律的时候,发现任何一个正整数分解的字数都能转为2和3的乘积。。。后来就baidu了一下,有这么一定数论定理!定理:当把一个正整数n拆分加数因子的乘积时,尽可能的拆为3,若最后剩1,就拿回一个3凑成4,这样就是最大的乘积。知道里定理,用java用的大数,就OK啦代码:原创 2015-05-02 23:36:23 · 663 阅读 · 0 评论 -
nyoj743 复杂度
题目:点击打开链接个人理解:我刚开始做的时候,是按照这个程序走的,i=?,j=?,k=?,发现规律不太好找,在这里提示一下,找规律的题一定要多试几次规律。后来,看了一些csdn上的博文,才发现这道题的巧妙,我们看一下那个循环,i最小取1,k最大取n,而且,很重要的一点是,i,j,k。。。是递增的,看到没有?递增以为这什么呢?举个例子,1、2、3,...,n-1,n组成的一个序列原创 2015-04-08 18:12:07 · 618 阅读 · 0 评论 -
nyoj166 小珂的数学题
题目:点击打开链接题目大意:给定一个字符串,该字符串是升序的,问它是字符串中的第几个?思路:只要算出该字符串前面有多少个就可以了,然后加一就是最终答案,这里麻烦的是求该字符串前面有多少个,分为两部分,一部分是字符串长度小于该字符串的,另一部分是长度等于该字符串的但在该字符串前面的字符串!由于是字符串是升序的,即是n个字母只能组合成一个序列,那就应该对应着n个字母的组合数!原创 2015-04-08 17:55:55 · 1114 阅读 · 0 评论 -
NYOJ 228 士兵杀敌(五)
题目链接:点击...对于这道题的原创 2014-11-20 18:21:06 · 454 阅读 · 0 评论 -
nyoj117 求逆序数 归并排序
题目链接:点击打开链接原创 2014-11-09 23:31:49 · 526 阅读 · 0 评论 -
NYOJ467 中缀式转后缀式 java
题目链接:表达式,我们一般喜欢于写中缀形式的,也就是num1 op num2,但是计算的时候是要考虑优先级的。而后缀表达式num1 num2 op是不需要考虑优先级的。网上很多都是用栈来实现的,我这个是用二叉树的结构来实现的。可以很容易想到,中缀表达式就是一个表达式二叉树的中序遍历的结果,而后续表达式则是后序遍历的结果。好,那么我们的思路出来了,就是根据中缀式构建二叉树,再后续遍历输出原创 2014-11-15 11:33:41 · 529 阅读 · 0 评论 -
nyoj 129树的判定
题目大意:给一个有向图,判断是不是树!!! 思路:我一上来就想着图,用邻接矩阵还是邻接表存储,是bfs遍历还是dfs遍历!!! 思维僵化了,一上来就想到这!!!但是,那么东西确实是硬功!! 空树也是树,读题要认真仔细!!!! 这道题就是让我们判断一个有向图是不是树! 那我们想一想图在什么情况下是树呢!!!!!1.首先,没有环2.其次,每个结点的入读不能大于1原创 2014-11-20 22:51:10 · 537 阅读 · 0 评论 -
nyoj 163Phone List-字典树
题目大意:就是给一串电话号码,问是否存在这种情况,一个号码是另一个号码的前缀!!! 解题思路:字典树(tire树),是一种极大节省空间的树形结构,因为所有具有相同前缀的会共享前缀,我对tire数的理解是,结点本身是不存信息,存信息是当前结点的某个子节点是否为空!!!tire树的结构如下: 而tire树的核心代码归为两个函数,createTire()和findTire(),就像并原创 2014-11-22 20:27:54 · 604 阅读 · 0 评论 -
nyoj 123士兵杀敌(四)
题目大意:1~M个士兵,初始的时候,每个人的军工都是零,动态连续增加军工,动态查询某个人的军工!! 思路:由于是动态的,连续插入,单个查询,是典型的插线问点树状数组!!!对于树状数组的lowBit()和updat原创 2014-11-22 23:16:02 · 730 阅读 · 0 评论 -
nyoj 130相同的雪花
题目大意:有多组测试数据,每组有多组数组,每组有六个数,判断是否含有两组一样的数据(六个数围成圈,看看能否重合) 思路:由于是判断一个集合中是否存在相同的元素,很容易就想到了SET:集合,而java里面给我们提供了HashSet这种数据结构,HashSet也是依据hash表的思想设计的,不清楚的可以上网了解一下HashSet的用法,在判断是否含有两个相同的雪花的时候,用一个for循原创 2014-11-20 19:46:35 · 631 阅读 · 0 评论 -
蓝桥 ALGO-2 最大最小公倍数
描述:对于一个整数n(1取三个不小于n的正整数,使其最小公倍数最大。 先介绍三条数论的基本知识:1.任意大于1的两个相邻的正整数是互质的。2.两个数的公约数只有1和-1,称为互质整数。3.两个数的公约数只有1,称为互质自然数。 分析:最先想到的答案是n*(n-1)*(n-2),(注:n>2),但是我们得考虑是的,n和(n-2)差2,是否也互质?情况一:当n为奇数时,原创 2015-04-08 17:47:42 · 426 阅读 · 0 评论 -
nyoj 46 最少乘法次数
最少乘法次数 问题描述:给定一个正整数n,求2的n次幂,每次相乘的结果,后面也能使用。现求至少需要多少步,能得到2^n.例如2^4,2*2=2^2,2^2*2^2=2^4,所以,答案为2。 求解:每次都是乘2,我们很容易想到2进制。现在有没有想到我们中国那句古话,叫做“擒贼先擒王”,联系到这道题上,我们可以先求转化为二进制最高位的1需要几次才能得到,举个例子,14 = 2^3+原创 2015-04-08 17:43:13 · 540 阅读 · 0 评论 -
nyoj1013 除法表达式
题目:点击打开链接 分析:可易知,X1一定在分子上,X2一定在分母上,要想使E的结果为整数,即Xk尽量要在分子的上,可将E改写成:X1/X2/(X3/X4/X5/X6.../Xk)=(X1*X3*X4*X5*X6...*Xk)/X2,现在简单了吧? 方法1:用大数相乘,再用大数求余方法2:从X1到Xk依次跟X2约分,知道X2为1时结束. 上码:#include#inc原创 2015-04-08 18:17:31 · 685 阅读 · 0 评论 -
nyoj752 又见回文串 博弈
题目:点击打开链接题目分析:就是一个找规律的博弈问题,一定要理解“重新整理”。。。是可以调整顺序的。。。然后找规律....代码:package 南阳;import java.io.BufferedInputStream;import java.io.PrintStream;import java.util.Arrays;import java.ut原创 2015-05-16 22:01:22 · 477 阅读 · 0 评论