自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(176)
  • 收藏
  • 关注

原创 POJ-1680(递归模拟)

题目:http://poj.org/problem?id=1680分析:父进程wait会等到子进程执行完成之后才继续下一步,每个进程都执行相同的代码,刚好和递归函数调用的方式一致。需要注意的是【ProcessID==0】每个子进程仅打印一次,对应到递归调用中,就是进入函数时打印一次。#include const int kRoot = 1000;int N, K, P;b

2017-02-12 14:31:53 774

原创 POJ-3856(模拟构造目录树)

题目:http://poj.org/problem?id=3856分析:根据命令输出构造出目录树,需要注意的地方:(1)cd 后跟的目录可能之前没有出现过;(2)根据deltree作为case的最后一行输入,而不是题目中说的每个case之后会跟一个空行(sample input里第3个和第4个case之间就没有空行)#include #include #include #in

2017-02-01 10:23:26 470

原创 POJ-2022(简单HTML校验)

题目:http://poj.org/problem?id=2022分析:只有3种子节点,只需让每个节点【开闭】统一即可#include #include #include #include using namespace std;enum{ERROR, WAIT_FOR_LEFT, WAIT_FOR_RIGHT};bool check(const string& a

2017-01-28 17:29:01 366

原创 微软2017实习生在线笔试题——hihocoder 1289——403 Forbidden

题目:http://hihocoder.com/problemset/problem/1289分析:有N条已知的前缀字符串,回答M个query,每个query找到这N个字符串中第一个匹配的项,自然的想到O(length)复杂度的字典树Trie。由于(1)1 (2)字符串仅由01组成 >>> Trie的每个node仅含有2个子节点(3)每个字符串最多包含32个字符 >>> 一

2016-04-10 16:10:22 1431

原创 POJ-1316(类素数筛选法)

题目:http://poj.org/problem?id=1316分析:如果按照定义对每个数进行判断则需要O(N*N)的时间,但用类似筛素数的思想,我们可以mark出所有不满足条件的,自然而然的就可以输出满足条件的了,时间复杂度是O(Nlog10(N))#include const int MAX_N = 10000;bool generated[MAX_N + 1] = {

2016-01-14 00:05:38 659

原创 POJ-1363(模拟出栈)

题目:http://poj.org/problem?id=1363分析:简单的栈模拟,看status上之前很多菊苣都是0ms的空间也很小,不知道是怎么做的呢#include int n, a[1005], st[1005];bool check(){ int top = 0, *p = a + 1, i = 1; while(p - a <= n){ while(!

2016-01-13 00:37:01 521

原创 POJ-1321(类8皇后问题)

题目:http://poj.org/problem?id=1321分析:题目数据量很小暴搜即可#include int n, k, tot;char board[10][10];void dfs(int x, int r, int u){ if(!x){ ++tot; return; } if(r >= n) return; //try to plac

2016-01-12 00:56:59 335

原创 POJ-1300(汉密尔顿回路)

题目:http://poj.org/problem?id=1300分析:简单的汉密尔顿回路问题,需要注意的是要回到node 0,因此需要判断在有两个奇度node时,start node必须是非0的那个,没有判断连通性,1A,看了discuss之后,发现竟然“判断连通性会WA,不判断就AC”,也是醉了#include #include #include #include us

2016-01-11 00:48:53 593

原创 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——D题 Difficult Player Grouping

注意,lz并没有参加在线笔试,只是拿来练习一下,由于在hihocoder上并不能提交,只能用样例测试,所以不保证答案完全正确题目:http://hihocoder.com/contest/ntest2015septdev/problem/4分析:贪心,用multiset维护,每次取出数量最多的3类Hero组成一个队。设Hero种类有N种,玩家总数为M个,由于每次总数减3,则总的复杂度为

2015-09-18 15:17:23 1063

原创 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——C题 Complicated Expression

注意,lz并没有参加在线笔试,只是拿来练习一下,由于在hihocoder上并不能提交,只能用样例测试,所以不保证答案完全正确题目:http://hihocoder.com/contest/ntest2015septdev/problem/3分析:模拟题,不过可以通过【宏定义】+【异常处理】来简化代码,风格有点pythonic,感觉还是比较优雅的#include #include

2015-09-18 14:48:14 939

原创 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——A题 Amusing Digits

注意,lz并没有参加在线笔试,只是拿来练习一下,由于在hihocoder上并不能提交,只能用样例测试,所以不保证答案完全正确题目:http://hihocoder.com/contest/ntest2015septdev/problem/1分析:模拟题,贪心即可,对每一个9尝试找出最靠前的7、0、6,使得其满足9706的子串顺序,时间复杂度是O(N),空间复杂度是O(N)#includ

2015-09-16 20:15:26 1372

原创 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——B题 Best Compression Algorithms

注意,lz并没有参加在线笔试,只是拿来练习一下,由于在hihocoder上并不能提交,只能用样例测试,所以不保证答案完全正确题目:http://hihocoder.com/contest/ntest2015septdev/problem/2分析:模拟题,递归降解即可,最坏复杂度为O(N^2),串的长度不超过100,所以复杂度可以接受#include #include #includ

2015-09-16 20:08:58 748

原创 PE-43(枚举)

题目:https://projecteuler.net/problem=43分析:数据量不大,一共也就10! = 3628800种排列,枚举即可,这里有几个可以优化的地方:(1)0不能出现在数字的首位,所以枚举时从1为开头即可(2)对容易剪枝的条件先判断,例如d2d3d4能被2整除,则d4必须是偶数,这样一半的情况下后面的if都不用算了;对于d4d5d6能被5整除,则d6必须是5或者0

2015-09-10 00:58:56 453

原创 POJ-3803(模拟Sed,BFS)

题目:http://poj.org/problem?id=3803分析:数据量不大,直接BFS即可#include #include #include #include using namespace std;int n;string a[10], b[10], s, t;bool sub(string& p, const string& a, const str

2015-09-09 11:03:44 509

原创 PE32-Pandigital products

题目:https://projecteuler.net/problem=32题意:求所有满足如下条件的数z的和:z能分解成两个数x、y的积,且x、y、z中的digits刚好是1~9各出现一次分析:1~9的permutation总共也就362880,对其枚举即可,这里有一个重要的剪枝:x末位 * y末位 % 10如果不等于z的末位,则继续下一次枚举,实测发现加上这一剪枝比不加的情况快1倍多

2015-09-09 02:11:17 425

原创 PE49-Prime permutations

题目:https://projecteuler.net/problem=49思路:题目数据范围不大,直接找出全部的4位数素数,以四位素数的最小permutation为key建立hash,再从中找出差为3330的等差数列即可def findArithmeticProgression(arr, dif): for x in arr: if x + dif in arr and x + d

2015-09-09 01:26:40 352

原创 PE2-Even Fibonacci numbers

题目:https://projecteuler.net/archives思路:题目不难,可以用来练练python,求出四百万以内所有偶数斐波那契数的和,数据范围不大,很容易想到依次产生4*10^6以内的所有数,遇到偶数就加上,由于递推到斐波那契数N的只需要O(log2(N))步,所以30步以内我们就能得到结果limit = 4 * 10**6total = 0a, b = 1,

2015-09-09 00:43:27 353

原创 POJ-1885(列表数组)

题目:http://poj.org/problem?id=1885题目中说不超过10000个不同的单词,实测是扯淡的,单词数量大于20000个#include #include #include #include #include using namespace std;#define MAX_LIST 100#define MAX_CAPACITY 100 in

2015-08-25 19:07:28 306

原创 HDOJ-3528(If语句匹配模拟器)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3528和POJ2314类似的思想,就是一个parser,画画状态转换关系就行了,不过需要注意的是:对单个case,遇到连续的两个'\n'之后,本case就不能再getchar了#include #include #include using namespace std;struct

2015-08-24 23:55:40 374

原创 POJ-2799(找到一组IP的最小网络)

题目:http://poj.org/problem?id=2799思路:找出IP的最长公共前缀即最小网络,长度即子网掩码全1的长度#include #define MAX 1005int main(){ unsigned n, i, a, b, c, d, ip, net; int len; while(scanf("%u", &n) == 1){ scanf("

2015-08-18 22:09:54 357

原创 POJ-2248(加法链,DFS)

题目:http://poj.org/problem?id=2248大意:序列第一个数为1,之后的每个数都等于之前的任意两个数(可以相同)相加,问最后一个数是N的情况下,求一个最短的序列思路:搜索,确定上下界,下界一定不小于log2(N)+1,上届即目前最优序列的长度,搜索时,用每一层搜索最后一个数和之前的数相加#include #include #include us

2015-08-18 21:21:02 1408

原创 POJ-3326(模拟登录统计)

题目:http://poj.org/problem?id=3326题目本身没什么难度,本来想着是不是还得搞个线段树啥的,看了下数据量,暴力即可,这里用了一个标志位,标记是否对某个user的记录进行了预处理,有点“写时复制”的赶脚#include #include #include using namespace std;#define MAX_N 1005#define

2015-08-14 21:19:44 362

原创 一个包子引发的血案——不加锁的执行一个简单函数

今天在nowcoder的每日一题上看到这么一个问题,说是人人网的题,原题连接:http://www.nowcoder.com/discuss/1968?type=&order=0&pos=5&page=0对于下面这个函数,int add(int *x,int *y,int *z){ *x += *x; *y += *x; *z += *y; return *z

2015-08-14 12:01:20 484

原创 HDOJ-2835(最佳置换算法)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2835如果数据以后都再也不会使用,则将其换出必然是最优的,但如果缓存中的数据以后都还会使用,那到底换出哪一个好呢?直观上想,感觉换出最远下次使用的数据更好,但如何证明其是最佳的,不会呢。。。#include #include #include using namespace std;

2015-08-13 17:28:02 528

原创 HDOJ-2871(线段树)

真是个好题,虽然WA了好几次,但都是自己SB。。。包含了线段树所有的操作,看了这篇博文又加深了一次理解:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html掉进的坑:(1)因为每reset一次,就重新build一次,TLE,看了discuss才想起来,同一个case中reset,用update就行

2015-08-13 15:54:11 390

原创 POJ-2187(旋转卡壳)

题目:http://poj.org/problem?id=2187今天终于耐下心来学习凸包和旋转卡壳了,以poj的经典例题2187为例,学习主要参考了以下两篇博文:http://www.cnblogs.com/Booble/archive/2011/04/03/2004865.htmlhttp://blog.csdn.net/x314542916/article/details/794

2015-08-12 23:02:55 570

原创 ZOJ-1635(模拟pstree)

模拟打印文件树,难点在文件夹的开闭,如果仅仅将子文件缩进,则问题很简单,递归即可,题目要求显示文件夹的开闭(用'|'),所以直接递归打印不能解决(因为可能需要在前面打印'|'),这里我选择将需要打印的所有符号保存在一个缓冲区char型数组里,修改缓冲区再打印缓冲区 #include #include #include #include #include #inclu

2015-08-12 20:09:40 449 1

原创 最小编辑代价(动态规划)

在nowcoder上的题目,原题如下:对于两个字符串A和B,我们需要进行插入、删除和修改操作将A串变为B串,定义c0,c1,c2分别为三种操作的代价,请设计一个高效算法,求出将A串变为B串所需要的最少代价。给定两个字符串A和B,及它们的长度和三种操作代价,请返回将A串变为B串所需要的最小代价。保证两串长度均小于等于300,且三种代价值均小于等于100。测试样例:

2015-08-06 01:06:58 1144

原创 最长公共子字符串(动态规划)

和经典DP最长公共子串(不要求字符连续)不同,最长公共子字符串要求字符是连续的class LongestSubstring {public: int findLongest(string A, int n, string B, int m) { //f[i][j] represent the longest common substring starting wi

2015-08-06 01:02:02 387

原创 非负分数的循环小数位长度

根据竖除法我们知道,过程是用余数乘10除以分母,由于一个数n的余数最多有n个,所以n步以内就可以找到循环节了原题连接:http://www.geeksforgeeks.org/find-length-period-decimal-value-1n/def GetFractionPeriod(x, y): """ Find out the period of fraction part

2015-08-05 19:33:21 354

原创 不用乘、除、减、平方打印前N个平方数

其实挺简单的一个问题,原题链接:http://www.geeksforgeeks.org/print-squares-first-n-natural-numbers-without-using/def PrintFirstNSquareNumbers(n): """ Print first n numbers without using *, /, -, ** or power By t

2015-08-05 19:02:38 393

原创 第N个只包含3和4的数

论文看不进去,到GeeksforGeeks思考个问题。。。原题连接:http://www.geeksforgeeks.org/find-nth-number-number-system-3-4/题目大意是,找出第N个十进制数,每一位要么是3要么是4,前几个符合条件的数为:3, 4, 33, 34, 43, 44, 333, 334, 343, 344, 433, 434, 443, 444

2015-08-05 18:48:30 561

原创 HDU-4217(树状数组)

题意就是在1~N中每次找到第k小的数并删除,范围固定第k小的数,就是树状数组或者线段树的应用,一个细节是结果需要用long long,因为262144*(262144+1)/2超过了32位表示范围。#include #include #define MAX 262200int n, q, c[MAX];inline int lowbit(int x){ return x &

2015-08-01 23:28:21 690

原创 ZOJ-1243(parse URL)

刷刷水题练练手速#include #include using namespace std;struct URL{ string protocol; string host; string port; string path;};void parseUrl(const string& s, URL& url){ size_t p = s.find(":/

2015-08-01 21:51:55 377

原创 POJ-3699(模拟SQL查询)

好久没做题了,手速慢得不成样子了呀,写这个水题写了2个小时,好在1A了。。。没什么难度,就是麻烦,注意输出是居中就对了#include #include #include #include #include #include #include using namespace std;#define MAX_COL 12#define MAX_ROW 10

2015-08-01 20:53:37 402

原创 跳表(SkipList)

最近在看leveldb的源码,看到核心的skiplist时发现自己浑浑噩噩的,本来就不太懂,.h文件里还竟是模板迭代器啥的,于是决定还是先吧思路理清楚,都提倡不要重复发明轮子,但只有熟悉轮子的制作过程,用起来才可能得心应手啊。这篇图文并茂的博文将跳表的基本操作描述的很不错:http://kenby.iteye.com/blog/1187303为了便于忘了再看时能很快懂(源码真心不好看呀),

2015-07-27 12:56:50 395

原创 POJ-1056(Trie)

题目:http://poj.org/problem?id=1056题意:判断一组字符串中是否有两个串A和串B,且A是B的前缀,通过将串依次插入Trie即可判断当前串是否是前面串的前缀,和前面串是否有当前串的前缀。#include #define MAX_N 200005int N, NEX;struct Node{ Node* ch[2]; bool isLeaf(){

2015-04-28 00:15:48 541

原创 POJ-1694(贪心)

题目:http://poj.org/problem?id=1694容易想到,从树上取下来的石子可以在别的子树上使用,对以X为根的子树进行Mark,假设X有N个孩子,则N个孩子必须都挂上石子之后,X才能被挂上石子,这个对这N个孩子挂石子的过程中,如果第i个孩子没有挂上石子的时候,就试图去挂j,则肯定不会优于先挂完i再去挂j,毕竟同时进行不会要求更少的总石子数,所以我们可以先挂上一个孩子,再去挂另

2015-04-15 01:07:08 657

原创 hihocoder-1142(三分法)

感觉hihocoder和别的OJ有点不一样呢,因为可以看到关于一些常用算法的解释,感觉这个三分法讲的蛮通俗易懂呢:********************************************************* 下面是引用hihocoder上的讲解 *********************************************************在

2015-04-12 13:24:42 775

原创 POJ-2246(模拟矩阵相乘)

题目:http://poj.org/problem?id=2246题目本身没什么难度,只不过不同风格的程序写出来不一样,这里我用了异常+递归讲解:递归降解是求解算术运算的利器;当矩阵维数不匹配时,抛出异常,然后递归栈自动回退到main中的catch,栈上的局部变量也会自动析构,感觉这个风格有点pythonic呢#include #include #include using

2015-04-11 23:34:26 512

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除