11 2015 档案

摘要:1.该题较为简单AC代码://#include//#include #include#include //#include#include#include#include//#include//#include//#include //#include "func.h"//#include #inc... 阅读全文
posted @ 2015-11-27 20:35 siukwan 阅读(124) 评论(0) 推荐(0)
摘要:1.直接建立1001长度的数组,分别进行存储,最后累加输出AC代码://#include//#include//#include//#include //#include "func.h"//#include #include #include#include#include#include#inc... 阅读全文
posted @ 2015-11-27 20:30 siukwan 阅读(156) 评论(0) 推荐(0)
摘要:1.主要是字符串处理,然后插入逗号2.注意正负数3.输入可以直接使用int类型读取AC代码//#include//#include//#include//#include //#include "func.h"//#include #include #include#include#include#... 阅读全文
posted @ 2015-11-27 20:23 siukwan 阅读(164) 评论(0) 推荐(0)
摘要:1.涉及的情况比较多,需要分类讨论。自己卡在了补零的运算中,代码有注释,是一个小失误,导致最后一个测试点调试了比较长时间2.下面列出了一些测试点,通过这些测试点,也就可以AC了:3 12300 12358.9YES 0.123*10^51 12300 12358.9YES 0.1*10^51 1.2... 阅读全文
posted @ 2015-11-27 20:10 siukwan 阅读(362) 评论(0) 推荐(0)
摘要:1.本题的中间三个测试点非常容易超时2.需要采用树状数组+二分法树状数组:能够在o(logn)的时间内进行对a[i]操作和统计a[0]+a[1]+a[2]+...a[i]的操作。我们把a[i]记录为i的出现次数,那么统计sum=a[0]+a[1]+a[2]+...a[i],就可以知道小于等于i的元素... 阅读全文
posted @ 2015-11-27 19:07 siukwan 阅读(203) 评论(0) 推荐(0)
摘要:1.题目的要求是,每次选取NG个用户组成一组进行比赛,第一名进入下一轮,其他落败的用户排名相同2.刚开始卡在了这里,误以为在最后议论的比赛中,用户要排1,2,3,4。。结果不是,最后一轮,胜出的排第一名,落败的均为第二名3.排名的统计,假如这次有N个group,那么这次落败的用户排名为N+14.第三... 阅读全文
posted @ 2015-11-27 18:34 siukwan 阅读(174) 评论(0) 推荐(0)
摘要:1.这道题比较重要,主要考察AVL树的建立2.需要掌握单旋转,双旋转,插入等操作//#include//#include//#include//#include //#include "func.h"//#include #include #include#include#include#inclu... 阅读全文
posted @ 2015-11-27 12:40 siukwan 阅读(157) 评论(0) 推荐(0)
摘要:1.建议一个n节点的 完全二叉树,然后使用中序遍历,把地址数组遍历出来,再填充数组2.注意读取的数组需要先排序,在填充到完全二叉树的中序遍历数组中//#include//#include//#include//#include //#include "func.h"//#include #inclu... 阅读全文
posted @ 2015-11-27 12:37 siukwan 阅读(165) 评论(0) 推荐(0)
摘要:1.一个大于等于2的数,质因数分解分两种情况:1)如果这个数是质数,那么质因数分解就是它本身2)如果不是质数,那么除去最大的质因数后,剩下的质因数均小于sqrt(n),所以遍历到sqrt(n)即可2.注意输入为1的情况,输出应该为1=1AC代码://#include//#include//#incl... 阅读全文
posted @ 2015-11-26 20:16 siukwan 阅读(173) 评论(0) 推荐(0)
摘要:1.该题不难,主要是字符串的处理和进制处理AC代码://#include//#include//#include//#include //#include "func.h"//#include #include #include#include#include#include#include#inc... 阅读全文
posted @ 2015-11-26 20:03 siukwan 阅读(147) 评论(0) 推荐(0)
摘要:1.先把用户按照年龄大小排序,因为后面给出的是年龄范围,所以需要快速找出符合年龄要求的用户2.建立一个年龄数组,该数组记录了以年龄x为左界时,用户数组的idx,以年龄x为右界时,用户数组的idx,通过年龄数组,就可以快速定位到用户数组的对应位置3.刚开始,在查询输入时,直接定位到用户数组,把对应的用... 阅读全文
posted @ 2015-11-26 15:07 siukwan 阅读(180) 评论(0) 推荐(0)
摘要:1.该题求出现次数超过一半的元素,故采用moore voting算法,moore投票法2.遇到不同的元素,如果出现次数为0,更跟换成当前元素,如果次数不为0则-1,3.遇到相同元素,出现次数相加4.最终记录的元素就是所求元素//#include//#include//#include//#inclu... 阅读全文
posted @ 2015-11-26 12:53 siukwan 阅读(152) 评论(0) 推荐(0)
摘要:1.该题使用树节点数据结构,其中包含vector child列表和权重值2.使用DFS进行遍历搜索(节点最多100个),能够满足要求AC代码://#include//#include//#include//#include //#include "func.h"//#include #include... 阅读全文
posted @ 2015-11-26 11:26 siukwan 阅读(121) 评论(0) 推荐(0)
摘要:1.这道题目主要有两个难点1)以head为头部的链表不一样包括全部n个,即输入的数据中存在多个链表,但是我们只需要对以head为头部的链表排序输出即可,这也是为什么结果要求我们输出排序后的链表大小,因为这个大小不一定和n相等;2)head为-1的情况,卡在这里比较久,需要特殊判断,然后输出0 -12... 阅读全文
posted @ 2015-11-26 10:53 siukwan 阅读(145) 评论(0) 推荐(0)
摘要:1.这道题是判断出栈队列是否合理2.采用了用栈来模拟情况3.当目前栈为空,或者栈不为空并且栈顶不等于目标值,并且队列中还有数值可以压入,栈的size小于最大容量,那么就一直循环执行压入操作,把123456789。。。队列中的值依次压入栈,直到跳出循环4.跳出循环后,判断栈顶是否等于目标值,不等于的话... 阅读全文
posted @ 2015-11-26 09:26 siukwan 阅读(1334) 评论(1) 推荐(1)
摘要:1.该题目主要是先输入一些集合,然后查询某两个集合的交集数量除以并集数量2.刚开始使用map去存储每个集合,后面再建立一个新的map合并两个集合的map,从而查找交集数量,结果超时3.后面改为利用map作集合的重复判断,在输入集合时,通过map的判断,建立一个每个元素都是唯一的vector4.合并时... 阅读全文
posted @ 2015-11-25 23:11 siukwan 阅读(128) 评论(0) 推荐(0)
摘要:1.主要涉及到一个根据规则排序的问题2.分类规则1)圣人,sages,virtue和talent都要>=high2)君子,nobleman,virtue>=high,talent=low3)愚人,fool man,low=low,talent>=low3.跟结构体增加了一个level的变量,记录其所... 阅读全文
posted @ 2015-11-25 20:33 siukwan 阅读(128) 评论(0) 推荐(0)
摘要:1.第一对string中,DAY的char需要限制在A到G之间,一个星期只有7天;HOUR的char需要限制在A到N,0到9之间,这样才是合理的0~23小时2.之前卡在了没有限制HOUR的char需要限制在A到N,0到9之间。//#include//#include//#include//#incl... 阅读全文
posted @ 2015-11-25 20:07 siukwan 阅读(128) 评论(0) 推荐(0)
摘要:1.用一个数组pos记录各个元素所在的位置2.假设0所在的位置为i,那么正确的排序应该是i在位置i上,所以0应该和i交换,即0的位置和i的位置交换,swap(pos[0],pos[i]),又pos[0]=i,即0的位置在i上,所以swap(pos[0],pos[pos[0]])3.通过2中提到的,每... 阅读全文
posted @ 2015-11-25 18:55 siukwan 阅读(150) 评论(0) 推荐(0)
摘要:1.使用string读取a和b,如果符号相同,按照字符串来处理,因为两个负数或者两个正数相加,会超过最大的取值范围2.如果符号不同,那么a+b一定会在范围内,可以使用long long进行处理和比较//#include//#include//#include//#include //#include... 阅读全文
posted @ 2015-11-25 18:33 siukwan 阅读(133) 评论(0) 推荐(0)
摘要:1.题目要求一个加油站,能够到达所有的屋子,并且这个加油站到屋子的最小距离尽可能地大(实际上也应该,不然汽油挥发会影响人身安全啊啊啊)2.根据汽油站index排序时,不能使用string,要转换成int排序,避免出现G1//#include//#include//#include //#includ... 阅读全文
posted @ 2015-11-25 17:10 siukwan 阅读(149) 评论(0) 推荐(0)
摘要:1.卡在测试点2比较久,结果发现amount也需要使用double才能通过,使用long long或者int都不行2.贪心算法,每次取单位价格最高的mooncake存储结构:struct mooncakeNode{ double amount;//需要使用double,才能通过测试点2 double... 阅读全文
posted @ 2015-11-25 11:17 siukwan 阅读(175) 评论(0) 推荐(0)
摘要:1. 6174猜想 ,1955年,卡普耶卡(D.R.Kaprekar)研究了对四位数的一种变换:任给出四位数k0,用它的四个数字由大到小重新排列成一个四位数m,再减去它的反序数rev(m),得出数k1=m-rev(m),然后,继续对k1重复上述变换,得数k2.如此进行下去,卡普耶卡发现,无论k0是多... 阅读全文
posted @ 2015-11-25 10:19 siukwan 阅读(214) 评论(0) 推荐(0)
摘要:1.该题需要采用合适的数据结构,本程序使用了用节点来进行存储,节点中有一个followers列表,记录了谁关注了该用户2.使用层次遍历,直到最大level。3.需要注意,用一个hasForwarded数组记录哪些用户已经转发,每个用户只转发一次。AC代码://#include//#include /... 阅读全文
posted @ 2015-11-25 09:31 siukwan 阅读(128) 评论(0) 推荐(0)
摘要:1.该题有几个需要注意的点1)-1表示提交了但是没有编译通过,在最终输出的时候需要显示0分2)完全没有记录的,表示没有提交过,在最终输出的时候需要显示-3)在排名时,要把0分的也进行排名,如下面的测试例子:8 4 2120 25 25 3000002 2 1200007 4 1700005 1 19... 阅读全文
posted @ 2015-11-24 22:06 siukwan 阅读(123) 评论(0) 推荐(0)
摘要:1.该题与leetcode中的Reverse Linked List 和Reverse Linked List II相似2.这次解法并没有采用链表操作,而是把链表转化为数组,对数组进行操作AC代码如下://#include//#include //#include//#include//#inclu... 阅读全文
posted @ 2015-11-24 20:10 siukwan 阅读(153) 评论(0) 推荐(0)
摘要:1.根据E后面是正数还是负数,决定小数点左移还是右移2.我的算法是,先提取出正负号和E之间的数字(已经去掉小数点),即+1.234567E+04,经过提取后变为1234567,后续直接对这个字符串进行处理3.右移时,需要注意3种情况1)如+1.200E+03,为1200 ,刚好不需要补零和小数点2... 阅读全文
posted @ 2015-11-24 19:24 siukwan 阅读(156) 评论(0) 推荐(0)
摘要:1.注意排名,在总分数和各个分数相同的情况下,排名必须相同2.注意录取,学校记录一个最后录取学生的排名,当学校没有名额后,判断这个排名和当前申请的学生排名是否相等,如果相等,则必须录取这个学生//#include//#include //#include//#include//#include //... 阅读全文
posted @ 2015-11-24 18:50 siukwan 阅读(170) 评论(0) 推荐(0)
摘要:1.使用数的结构存储供应商和零售商2.采用层次遍历(BFS)进行遍历3.需要使用double进行存储,一开始发现下面几个耗时大的测试点不通过,所以考虑是精度不够或者溢出的原因,于是改为double类型,然后就通过了AC代码://#include//#include //#include//#incl... 阅读全文
posted @ 2015-11-24 18:26 siukwan 阅读(167) 评论(0) 推荐(0)
摘要:1.题目中提到MSize的最大值为10000,而比10000大的最小的一个质数为10007,刚开始误以为是10001,卡了一下2.Quadratic probing即平方探测,公式为h(x)=(Hash(x)+j*j)% MSize,Hash(x)=x%MSize//#include//#inclu... 阅读全文
posted @ 2015-11-24 18:07 siukwan 阅读(141) 评论(0) 推荐(0)
摘要:1.需要使用getline输入,避免空格断开2.其他没有太多特点的地方//#include//#include //#include//#include//#include //#include "func.h"//#include #include#include#include#include#... 阅读全文
posted @ 2015-11-24 15:54 siukwan 阅读(162) 评论(0) 推荐(0)
摘要:1.题目提到各个同学的分数是唯一的,所以可以采用分数作为下标,直接建立101个学生节点,即0~100分2.然后根据最高分限制和最低分限制,筛选出学生进行输出//#include//#include //#include//#include//#include //#include "func.h"/... 阅读全文
posted @ 2015-11-24 15:44 siukwan 阅读(118) 评论(0) 推荐(0)
摘要:1.需要分类考虑的情况比较多2.123456789可以分为 1 2345 6789 ,其中2345和6789的处理方法相同,不同点就是2345处理完后需要加上Wan3.需要处理0等特殊情况4下面有些特别的测试例子,可以参考:/*-1234567891234000001230000001200000... 阅读全文
posted @ 2015-11-24 13:37 siukwan 阅读(153) 评论(0) 推荐(0)
摘要:1.每次读取一个数时,对其进行因式化简,再累加2.每次直接进行相加,分子先不对分母取模,在最后才进行取模,才把整数部分提取出来3.注意在计算gcd时,取bot和top的绝对值,避免算出来的gcd为-1,使得top和bot的符号翻转4.刚开始尝试使用scanf("%d/%d",&a,&b)进行分式的读... 阅读全文
posted @ 2015-11-24 12:49 siukwan 阅读(151) 评论(0) 推荐(0)
摘要:1.如果上次没有弹出,并且栈为空,则这次压入的为根2.如果上次有弹出,并且这次压入,那么上次弹出的是父节点,这次压入的是右子节点3如果上次没有弹出,并且这次压入,那么这次压入的是栈头的左子节点4.每次弹出一个节点,都要把这个节点记录下来,lastPopAC代码://#include//#includ... 阅读全文
posted @ 2015-11-23 23:21 siukwan 阅读(117) 评论(0) 推荐(0)
摘要:1.先对输入的数据进行排序2.开始遍历所有情况,其中i从0开始遍历,求得j,使得num[j]//#include //#include//#include//#include //#include "func.h"//#include #include#include#include#include... 阅读全文
posted @ 2015-11-23 22:56 siukwan 阅读(190) 评论(0) 推荐(0)
摘要:1.求单源最短路径,使用dijkstra求出最小耗费,以这个最小耗费作为约束条件,在后面遍历的时候进行剪枝AC代码://#include//#include //#include//#include//#include //#include "func.h"//#include #include#i... 阅读全文
posted @ 2015-11-23 21:52 siukwan 阅读(148) 评论(0) 推荐(0)
摘要:1.注意哈希表里面大小写字母需要一致,即如果a出现了,那么A也标记为出现了,如果A出现了,那么a也标记为出现了AC代码://#include//#include //#include//#include//#include //#include "func.h"//#include #include... 阅读全文
posted @ 2015-11-23 14:19 siukwan 阅读(154) 评论(0) 推荐(0)
摘要:1.主要是考察并查集2.每输入一个像素点,就检测它的上边,左边,上一层的位置是否为1,为1的话,归为一个集合3.最后对集合的数量进行统计AC代码://#include//#include //#include//#include//#include //#include "func.h"//#inc... 阅读全文
posted @ 2015-11-23 13:55 siukwan 阅读(154) 评论(0) 推荐(0)
摘要:1.这道题目实则是一道关于的题目,树的每一层代表一个级别的供应商,树的高度越大,价格越高如题目例子:9 1.80 1.001 5 4 4 -1 4 5 3 6构成的树为红色部分(0和8,一共两个节点)的价格最高,为1.8*1.01*1.01*1.01=1.852.采用合适的数据结构存储节点,然后BF... 阅读全文
posted @ 2015-11-23 13:12 siukwan 阅读(134) 评论(0) 推荐(0)
摘要:1.根据题意,编写归并排序算法,如下: bool isMerge = false; for (int step = 1; step / 2 tmpArr(2 * step); int first = i; int second = i+step; int idx = 0; int ... 阅读全文
posted @ 2015-11-22 21:17 siukwan 阅读(127) 评论(0) 推荐(0)
摘要:1.#define LeftChild(i) (2*(i)+1)void PercDown(vector&num, int i, int n){ int child; int tmp; for (tmp = num[i]; LeftChild(i) num[child]) child++; ... 阅读全文
posted @ 2015-11-22 20:16 siukwan 阅读(129) 评论(0) 推荐(0)
摘要:1.注意在数字和string转化过程中,需要考虑数字不是只有一位的,如300转为“300”,一开始卡在里这里,测试用例:24/8 100/1024/11 300/112.该题用到了欧几里德算法求最小公约数gcd(a,b)算法如下://欧几里德算法求最大公约数gcd,其中a>blong long gc... 阅读全文
posted @ 2015-11-22 20:02 siukwan 阅读(149) 评论(0) 推荐(0)
摘要:1.事件模拟2.首先读取所有的汽车记录数据,筛选出合理的进入和离开时间,放到一个vector里面,对这个vector进行排序处理,进入时间早的放在前面3.对每一秒进行模拟,已经进入的车辆用一个小根堆进行存储维护,离开时间早的,排在堆顶3.取下一次进入校园车辆的时间,下一次离开校园车辆的时间,下一次查... 阅读全文
posted @ 2015-11-22 18:36 siukwan 阅读(270) 评论(0) 推荐(0)
摘要:1.这道题目主要是求家族树中,哪一层的成员数最多,输出成员数和该层层数2.主要考察了层次遍历和数据结构的设计AC代码如下://#include//#include #include#include //#include#include#include#include//#include#includ... 阅读全文
posted @ 2015-11-22 15:35 siukwan 阅读(142) 评论(0) 推荐(0)
摘要:1.这道题目比较有趣,我的思路如下:1)首先统计countP[i],即0~i的位置上,一共有多少个P,同理可以反向统计出countT[i],即i到n-1之间有多少个T2)遍历string,当str[i]==‘A’时,那么ans+=countP[i-1]*countT[i+1],当然, 需要根据题目要... 阅读全文
posted @ 2015-11-22 15:05 siukwan 阅读(146) 评论(0) 推荐(0)
摘要:1.使用哈希表分别记录两串的bead数量2.需要使用迭代器进行遍历,避免出现重复情况:如ppRYYGrrYBR2258和YrR8RrY,用YrR8RrY来遍历,则前面遍历了R,后面又遍历了R,导致统计的重复AC代码://#include//#include #include#include //#i... 阅读全文
posted @ 2015-11-22 14:24 siukwan 阅读(146) 评论(0) 推荐(0)
摘要:1.这道题目难度不大,主要思想如下:1)先构建二叉树(此时尚未填值)2)输出二叉树的中序遍历地址3)对数组进行排序4)把数组的数输入到中序遍历地址相应的节点值中AC代码://#include//#include #include#include //#include#include#include#... 阅读全文
posted @ 2015-11-22 14:05 siukwan 阅读(136) 评论(0) 推荐(0)
摘要:1.之前一直开在测试点2里,通过实验知道0、2、4测试点是测插入排序的,1、3、5是堆排的。2.测试点2卡住,主要是因为插入排序的外层循环我从i=0开始,导致第一步出来的结果和原来的一模一样(i=0,相当于没有进行调整),而把i改为1后,则可以正常AC题目3.目前只知道测试点2的情况是,经过若干轮插... 阅读全文
posted @ 2015-11-22 13:43 siukwan 阅读(374) 评论(1) 推荐(0)
摘要:1.主要是考察链表的删除和建表操作,使用map进行记录已经存在过的链表2.注意是删除绝对值相同的节点AC代码://#include//#include #include#include //#include#include#include#include//#include#include//#in... 阅读全文
posted @ 2015-11-22 10:02 siukwan 阅读(147) 评论(0) 推荐(0)
摘要:1.求连续的质因数,最开始卡在最后一个测试点中,后来经过对偶数情况的优化,发现仍然超时,于是考虑是奇数情况下超时,实际上,最后一个测试例子应该是一个非常大的质数;2.把情况分为奇数和偶数,1)奇数情况下,答案肯定为1个,遇到第一个整除的数,则直接输出;但是采用遍历至n时,最后一个测试例子会超时,于是... 阅读全文
posted @ 2015-11-21 22:06 siukwan 阅读(223) 评论(0) 推荐(0)
摘要:1.根据题目的特点,n的最大值不超过400,可以使用深度遍历搜索答案2.加入限制条件进行剪枝,如i的p次方不能大于n-k+1,因为剩下的数至少均为1,剩下还需要k-1个数需要进行分配,每个数至少分配为1,共k-1,所以i的p次方最大只能为n-(k-1)=n-k+1,而最大值不能超过上一次分配的。//... 阅读全文
posted @ 2015-11-21 10:33 siukwan 阅读(176) 评论(0) 推荐(0)
摘要:1.直接把递归把左右子树翻转即可AC代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tr... 阅读全文
posted @ 2015-11-20 22:20 siukwan 阅读(122) 评论(0) 推荐(0)
摘要:1.和leetcode中的Invert Binary Tree(easy)题目差不多2.利用递归函数,每次都把左右子树翻转即可函数如下:void invertTree(TreeNode* root){ if (root != NULL) { swap(root->l, root->r); inv... 阅读全文
posted @ 2015-11-20 22:15 siukwan 阅读(133) 评论(0) 推荐(0)
摘要:1.这道题目需要考虑采用适当的数据结构,即小根堆和大根堆2.判断某个元素是否能够成为pivot,那么该元素左边数组应该构成一个大根堆,堆顶元素应该小于该元素,该元素的右边构成小根堆,堆顶元素大于该元素3.左边的小根堆,一直插入即可,利用priority_queue,而右边则需要进行维护,需要编写仿函... 阅读全文
posted @ 2015-11-20 21:33 siukwan 阅读(171) 评论(0) 推荐(0)
摘要:1.这个和最长公共子序列问题相类似(LCS)2.不同的地方是允许元素重复,如{a}和{aaa},匹配出来的是3,a可以重复3次3.该问题一开始卡在了输入格式上4.动态规划方程:dp[i][j]表示f[0~i]与o[0~j]匹配的最大长度如果f[i]==o[j],dp[i][j]=max(dp[i][... 阅读全文
posted @ 2015-11-20 20:32 siukwan 阅读(147) 评论(0) 推荐(0)
摘要:1.十进制与13进制之间的转换2.注意输入为13,26,39整数时,只输出一个marsNum,后面低位的0不输出AC代码://#include//#include #include#include //#include#include#include#include//#include#includ... 阅读全文
posted @ 2015-11-20 16:23 siukwan 阅读(174) 评论(0) 推荐(0)
摘要:1.这道题需要注意,s1和s2的输入都需要使用getline,避免出现空格的情况AC代码://#include//#include #include#include //#include#include#include#include//#include#include//#include //#i... 阅读全文
posted @ 2015-11-20 14:54 siukwan 阅读(115) 评论(0) 推荐(0)
摘要:1.算法说明:如3141592,在m(digitDivide)=100时,即要求计算百位上“1”的个数其中a为31415,b为92,31415中出现了3142次“1”,因为每10个数里面出现1次“1”。而实际上,31415是3141500,所以把31415中1的个数再乘以m。如3141400~314... 阅读全文
posted @ 2015-11-20 14:53 siukwan 阅读(155) 评论(0) 推荐(0)
摘要:1.和leetcode里面的Number of Digit One一样2.算法说明:如3141592,在m(digitDivide)=100时,即要求计算百位上“1”的个数其中a为31415,b为92,31415中出现了3142次“1”,因为每10个数里面出现1次“1”。而实际上,31415是314... 阅读全文
posted @ 2015-11-20 14:48 siukwan 阅读(135) 评论(0) 推荐(0)
摘要:1.遍历一次nums,利用map记录已经遍历过的nums[i],并记录其index :i+12.每次求出b=target-nums[i],检测b是否在map中,如果在,则已经得到答案,否则,把nums[i]存到map里面AC代码:class Solution {public: vector t... 阅读全文
posted @ 2015-11-20 14:46 siukwan 阅读(106) 评论(0) 推荐(0)
摘要:1.和前面的1039 Course List for Student (25)相类似2.刚开始使用vector> 格式存储course,后面在输入数据的时候就已经超时3.随后改为vector> 存储,在后面进行sort,没有超时AC代码如下://#include//#include #include... 阅读全文
posted @ 2015-11-20 13:45 siukwan 阅读(143) 评论(0) 推荐(0)
摘要:1.建立一个数组dp[i],记录0到i之间的距离和2.定义sum,记录全程的路程和3.求i,j的最短距离时,利用ans=dp[j]-[i]+num[i]-num[j],ans2=sum-ans,min(ans,ans2)即为答案AC代码:#include #include #include #inc... 阅读全文
posted @ 2015-11-20 00:06 siukwan 阅读(161) 评论(0) 推荐(0)
摘要:1.这道题目与pat中的1046. Shortest Distance (20)相类似;2.使用一个数组dp[i],记录0到第i个数的和3.求i到j之间的和时,输出dp[j]-dp[i]+num[i]即可。AC代码如下:class NumArray {public: vector dp; ... 阅读全文
posted @ 2015-11-19 23:21 siukwan 阅读(141) 评论(0) 推荐(0)
摘要:在CentOS安装CMake转自:http://www.cnblogs.com/mophee/archive/2013/03/19/2969456.html一、环境描述1、系统:CentOS 6.4 i386 (min)2、登录用户:root3、版本:CMake 2.8.10.24、虚拟机:Orac... 阅读全文
posted @ 2015-11-19 17:35 siukwan 阅读(674) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html1基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用... 阅读全文
posted @ 2015-11-18 16:58 siukwan 阅读(88) 评论(0) 推荐(0)
摘要:1.使用尺取法,如果取得范围总和大于需要pay的,删掉头部2.如果取得范围综合小于pay的,增加尾部3.注意边界情况和没有相等的情况,细节可查看代码4.利用一个minAns的变量进行记录答案数值部分测试用例如下:16 153 2 1 5 4 6 8 7 16 10 15 11 9 12 14 13 ... 阅读全文
posted @ 2015-11-17 14:40 siukwan 阅读(154) 评论(0) 推荐(0)
摘要:1.通过前缀遍历的数组,建立可能的BST或者镜像BST2.写两个函数,分别用来建立正常的BST:dfs和镜像BST:dfsMirror3.如果使用dfs不能建立BST,那么使用dfsMirror进行建立,两者都不能建立,则输出NO//#include//#include #include#inclu... 阅读全文
posted @ 2015-11-17 14:37 siukwan 阅读(211) 评论(0) 推荐(0)
摘要:1.建立一个shuffling数组,把j号卡放在shuffling[j]的位置AC代码://#include//#include #include#include //#include#include#include#include//#include#include//#include //#in... 阅读全文
posted @ 2015-11-16 16:44 siukwan 阅读(152) 评论(0) 推荐(0)
摘要:1.统计各个数字出现的次数2.输出第一个出现次数为1的数字AC代码://#include//#include #include#include //#include#include#include#include//#include#include//#include //#include "fun... 阅读全文
posted @ 2015-11-16 13:46 siukwan 阅读(109) 评论(0) 推荐(0)
摘要:1.getline输入数据2.最好使用manacher方法3.暴力方法解决不会超时暴力AC代码://#include//#include #include#include //#include#include#include#include//#include#include//#include /... 阅读全文
posted @ 2015-11-16 13:43 siukwan 阅读(138) 评论(0) 推荐(0)
摘要:1.存在超时的危险2.根据题意,名字由3个字母和1个数字组成,所以共26*26*26*10=175760种可能,直接开辟内存AC截图://#include//#include #include#include //#include#include#include#include//#include#... 阅读全文
posted @ 2015-11-16 13:38 siukwan 阅读(152) 评论(0) 推荐(0)
摘要:1.题目是把一些数,通过组合,变成一个最小的数(在这些数的所有组合中最小)2.使用贪心算法,贪心标准为:1)如果两个数中,数a是数b的前缀,或者数b是数a的前缀,那么判断字符串相加后a+b与b+a的大小,进行确定前后顺序2)如果不是上面1)中的两种情况,直接按照string进行大小比较3.该题目可以... 阅读全文
posted @ 2015-11-16 12:53 siukwan 阅读(132) 评论(0) 推荐(0)
摘要:1.比较简单2.最大的正数coupon与最大的正数product相乘3.最小的负数coupon与最小的负数product相乘(最小的负数即绝对值最大)4.其他没有匹配的就不购买了。//#include//#include #include#include //#include#include#inc... 阅读全文
posted @ 2015-11-15 23:22 siukwan 阅读(141) 评论(0) 推荐(0)
摘要:1.简单的重写比较函数//#include//#include #include#include //#include#include#include#include//#include#include//#include //#include "func.h"//#include #include... 阅读全文
posted @ 2015-11-15 23:02 siukwan 阅读(162) 评论(0) 推荐(0)
摘要:1.简单的字符串处理2.注意0,1个没有修改是,是is,大于1个是,是are//#include//#include #include#include //#include#include#include#include//#include#include//#include //#include ... 阅读全文
posted @ 2015-11-15 22:37 siukwan 阅读(126) 评论(0) 推荐(0)
摘要:1.该题目涉及到了并查集和一些统计2.过程1)收集根据记录,存储每个人的总通话时间和他的联系人,同时进行并查集的合并。2)根据并查集中分好的集合,进行集合的分类,并且分别统计各集合的名单和总通话时间3)遍历上面的集合,找出符合条件的gang和gang的头目注:A "Gang" is a cluste... 阅读全文
posted @ 2015-11-15 22:16 siukwan 阅读(127) 评论(0) 推荐(0)
摘要:1.在做pat的to fill or not to fill的时候想起同样是加油站的题目,于是翻出来复习一下2.关键在于理解潜在的条件。假设油量为tank,如果到了当前站i,tank0的油量,去掉一个站,那么tank必然比现在的油量还要小,所以更加不可能达到i+1.证明:设tank[a,b]是指以a... 阅读全文
posted @ 2015-11-15 17:43 siukwan 阅读(156) 评论(0) 推荐(0)
摘要:1.这道题目比较有趣,给出了加油站的位置和每个站的油价,求最小耗费,如果不能到达终点,则求能走的最远距离2.思路:1)采用一个油箱数组的概念,实则是一个vector,当成队列使用,这个vector记录了加了的油的价格,油的容量,通过这些油走过的长度和耗费;2)每到一个站,计算从上一站达到这个站所需要... 阅读全文
posted @ 2015-11-15 16:50 siukwan 阅读(171) 评论(0) 推荐(0)
摘要:1.直接建立两个100001长度的数组,一个用来当作链表使用,一个用来当作后面的哈希查询使用2.遍历第一个链表,把第一个链表中存在的节点记录在哈希表中3.遍历第二个链表,如果哈希中存在某个节点的值,就break,最终输出该节点值4.把地址改为int存储,最后输出注意-1和其他的补0的情况下面为AC代... 阅读全文
posted @ 2015-11-14 22:07 siukwan 阅读(145) 评论(0) 推荐(0)
摘要:1.通过n1= n3= max { k| k //#include #include#include //#include#include#include#include//#include//#include//#include //#include "func.h"//#include #inc... 阅读全文
posted @ 2015-11-14 20:41 siukwan 阅读(112) 评论(0) 推荐(0)
摘要:1.仍然是先使用Dijkstra求出最短距离,然后使用深度搜索遍历,以最短距离作为条件进行剪枝,最后求出最短距离的基础上耗费最小的路径//#include//#include #include#include //#include#include#include#include//#include/... 阅读全文
posted @ 2015-11-14 19:50 siukwan 阅读(86) 评论(0) 推荐(0)
摘要:1.这道题目与leetcode中的Median of Two Sorted Arrays相似,只是偶数情况取前一个,不用求平均2.采用二分法进行查找数组分为如下部分{a[0],a[1],a[2],....a[i-1] | a[i],a[i+1],...a[m-1]}{b[0],b[1],b[2],... 阅读全文
posted @ 2015-11-14 18:03 siukwan 阅读(122) 评论(0) 推荐(0)
摘要:1.这道题目使用C++的cin和cout均会超时;2.需要使用scanf输入,printf输出;3.使用char[]存储ID和name,使用strcmp进行比较,strcmp(a,b),当ab,strcmp(a,b)>0下面截图为部分实验结果:1)程序仅执行cin输入数据,可以看出使用cin仅输入就... 阅读全文
posted @ 2015-11-13 22:36 siukwan 阅读(121) 评论(0) 推荐(0)
摘要:1.主要涉及到进制的转换,10进制到13进制2.处理0和个位数,前面需要补03.可以自行输出0~168检测函数的鲁棒性//#include//#include #include#include //#include#include#include#include//#include//#includ... 阅读全文
posted @ 2015-11-13 19:52 siukwan 阅读(115) 评论(0) 推荐(0)
摘要:1.整体思路为:先遍历vip桌子和vip玩家,如果有匹配成功的,进行匹配;然后再遍历一轮所有的桌子和等候的玩家,有匹配的进行匹配;2.被卡的地方:1)关于秒的四舍五入,是按照大于等于30秒,进一分钟,小于30秒则舍去的原则;最后的一个测试用例就是检验这个30秒的2)在遍历所有的玩家时,由于可能存在已... 阅读全文
posted @ 2015-11-13 18:47 siukwan 阅读(161) 评论(0) 推荐(0)
摘要:今天在做leetcode的Longest Increasing Subsequence题目时,需要用到二分查找,于是翻看了《STL源码剖析》这本书,发现map里面有lower_bound和upper_bound这两个函数。用法如下:map m;int x=10;map::iterator ite;i... 阅读全文
posted @ 2015-11-09 23:00 siukwan 阅读(184) 评论(0) 推荐(0)
摘要:第一次做题思路2015110922501.采用map存储,key为nums[i],value为以nums[i]为结尾的最大递增子序列的长度2.采用map里面的lower_bounder函数直接找出第一个大于或等于nums[i]的位置,位置ite--,然后遍历前面的数,找出比nums[i]的数里面,长... 阅读全文
posted @ 2015-11-09 22:50 siukwan 阅读(129) 评论(0) 推荐(0)
摘要:主要有两种思路:一、本题只需要判断能否到达最后一个数,那么可以采用贪心策略,到达某个位置i后,在直接在这个位置的基础上走nums[i]步,主要保证能一直前进,就能达到终点;那么,什么时候才不能一直前进呢?答案是,遇到0的时候,遇到nums[i]=0的时候,只要我们想办法跳过这个0,那么就可以确保我们... 阅读全文
posted @ 2015-11-09 20:45 siukwan 阅读(133) 评论(0) 推荐(0)
摘要:1.用string记录ID2.熟悉sort函数的用法,选取合适的范围排序3.题目要求:相同分数的排名相同,分数相同的情况下ID需要按照递增排列//#include//#include #include#include //#include#include#include#include//#incl... 阅读全文
posted @ 2015-11-07 13:21 siukwan 阅读(134) 评论(0) 推荐(0)
摘要:1.使用string存储数字2.用朴素的方法检测回文3.需要考虑进位,和首位为0的情况(字符串翻转相加,为了避免长度不等,不需要去掉前面的‘0’)//#include//#include #include#include //#include#include#include#include//#in... 阅读全文
posted @ 2015-11-07 11:18 siukwan 阅读(122) 评论(0) 推荐(0)
摘要:1.20位的数字,超过了unsigned long long的取值2.采用string进行存储和检测3.用哈希进行相同位检测//#include//#include #include#include //#include#include#include#include//#include//#inc... 阅读全文
posted @ 2015-11-07 10:53 siukwan 阅读(150) 评论(0) 推荐(0)
摘要:1.采用map> 的结构进行存储,可利用string自身带有的排序进行排序2.如果采用map> ,输出的时候则需要考虑ID为0001111的,前面带有0的情况(主要卡在这里)//#include//#include #include#include //#include#include#includ... 阅读全文
posted @ 2015-11-06 15:06 siukwan 阅读(134) 评论(0) 推荐(0)
摘要:1.主要是根据后序和中序还原二叉树还原函数为:class TreeNode{public: int val; TreeNode* l, *r; TreeNode(int x) :val(x), l(NULL), r(NULL){}; TreeNode() :val(0), l(NULL), r(NU... 阅读全文
posted @ 2015-11-05 22:57 siukwan 阅读(126) 评论(0) 推荐(0)
摘要:1.采用求余的方式转换成以radix为基数的数2.使用vector来存储底数,因为后面需要以底数的形式显示,而不是以位的形式显示print N as the number in base b in the form "akak-1... a0".3.注意输入为0的情况//#include//#inc... 阅读全文
posted @ 2015-11-05 22:11 siukwan 阅读(129) 评论(0) 推荐(0)
摘要:1.采用dijkstra计算出最小耗费cost,再用最小耗费cost作为约束条件,进行遍历2.关键在于后面如何选择最优的路径,选择需要发送最小数量的路径,如果两者发送的数量相同,则选择take数量最小的路径3.如0->2->3->4->5, 节点2缺单车,需要send,节点3单车多出来,只能够补充4... 阅读全文
posted @ 2015-11-05 00:51 siukwan 阅读(134) 评论(0) 推荐(0)
摘要:1.在17:00:00前(包括17整)来的客户,都要确保一直执行完,即使超过了17点。譬如一个在8点来的客户,处理时间需要20小时,也需要同样服务完,然后处理队列中的客户。2.只是对17:00:00后来的客户拒绝服务。3.逻辑顺序有问题,需要先插入,然后再减时间。4.首次插入,需要判断时间是否合适。... 阅读全文
posted @ 2015-11-04 22:04 siukwan 阅读(143) 评论(0) 推荐(0)
摘要:1.需要熟悉进制转换的方法2.进制转换的第一步,通过求余求出string,此时的string恰好是倒序的正确的进制转换:while (num != 0) {//求余,把它转化为d进制格式的数,但求出来的string刚好是反的 char c = num%d + '0'; s += c; ... 阅读全文
posted @ 2015-11-04 12:59 siukwan 阅读(111) 评论(0) 推荐(0)
摘要:1.判断记录好坏,把所有记录以string存起来,按照字典序排序,相邻的两条记录满足要求:第一条为on-line且第二条为off-line,才是成功匹配;2.采用计算00:00:00到现在的耗费和分钟数,这个方法比较简单3.最重要的:题目中只强调至少有一条匹配成功的记录,不是说每个人都至少有一条匹配... 阅读全文
posted @ 2015-11-04 12:47 siukwan 阅读(134) 评论(0) 推荐(0)
摘要:1.银行排队时间模拟,采用合适的结构进行编程2.超过17:00(包括17:00)不再接受新用户,已经在处理的用户可以一直处理到17:59//#include//#include #include#include //#include#include#include#include//#include... 阅读全文
posted @ 2015-11-04 12:44 siukwan 阅读(129) 评论(0) 推荐(0)
摘要:1.采用邻接矩阵才不会超内存,一开始采用edge的结构体存储,结果出现段错误(内存爆满)2.采用并查集的方法,统计时,遇到破坏的城市则不处理,否则进行合并3.最终检查并查集的集合数,集合数-2就是结果(集合数m减去破坏的城市,即m-1,令n=m-1,剩下的集合数n,需要采用n-1条边才能连接起来)/... 阅读全文
posted @ 2015-11-04 12:41 siukwan 阅读(145) 评论(0) 推荐(0)
摘要:1.首先是平均分A,再到C,M,E2.通过重写不同的cmp函数,使用algorithm.h里面的sort进行排序3.如果分数相同,则排名相同,例如90,80,80,80,70,则排名为1,2,2,2,5//#include//#include #include#include //#include#... 阅读全文
posted @ 2015-11-04 12:38 siukwan 阅读(145) 评论(0) 推荐(0)
摘要:1.较为简单2.最后的公式为(a*b*c*0.65-1)*2//#include//#include #include#include //#include#include#include#include//#include//#include//#include //#include "func.... 阅读全文
posted @ 2015-11-04 12:36 siukwan 阅读(156) 评论(0) 推荐(0)
摘要:1.此题较为重点2.最小的radix为各位的数字最大值+13.采用二分法查找,l=radix,r=已知的数+14.要求的最大radix不一定是36//#include//#include #include#include //#include#include#include#include//#in... 阅读全文
posted @ 2015-11-04 12:33 siukwan 阅读(137) 评论(0) 推荐(0)
摘要:1.直接创建最大的数组2.遍历所有的组合情况//#include//#include #include#include //#include#include#include#include//#include//#include//#include //#include "func.h"//#inc... 阅读全文
posted @ 2015-11-04 12:31 siukwan 阅读(152) 评论(0) 推荐(0)
摘要:1.注意判断全为负数的情况,第一个数是否为负数,不要漏判断2.实际上采用动态规划,dp[i]=max{dp[i-1]+num[i],num[i]},dp[i]一定会包含当前的数字num[i],但是可以简化为判断dp[i-1]是否为负数//#include//#include #include#inc... 阅读全文
posted @ 2015-11-04 12:29 siukwan 阅读(125) 评论(0) 推荐(0)
摘要:1.采用algorithm.h里面的sort函数,对时间进行排序,需要重写比较函数//#include//#include #include#include //#include#include#include#include//#include//#include//#include //#inc... 阅读全文
posted @ 2015-11-04 12:27 siukwan 阅读(241) 评论(0) 推荐(0)
摘要:1.主要是string的位操作,string的每一位都是一个char//#include//#include #include#include //#include#include#include#include//#include//#include//#include //#include "f... 阅读全文
posted @ 2015-11-04 12:25 siukwan 阅读(130) 评论(0) 推荐(0)
摘要:1.可为多叉树,采用vector保存子树名称2.采用map记录树节点3.采用广度遍历,输出每层的叶子节点数量节点代码如下:struct node{ vector child; int head; string ID; node() :head(-1), child(0), ID(""){};};源代... 阅读全文
posted @ 2015-11-04 12:21 siukwan 阅读(122) 评论(0) 推荐(0)
摘要:1.采用dijkstra算法,算出最小耗费cost2.利用最小耗费cost最为约束条件,进行遍历搜索(循环->锁->dfs->解锁)//#include//#include #include#include //#include#include#include#include//#include//... 阅读全文
posted @ 2015-11-04 12:15 siukwan 阅读(119) 评论(0) 推荐(0)