08 2012 档案

整数中1出现的次数 分段算法
摘要:算法:把1-100000000,分成10000段。每段100000,统计这一段的和。这题还可以用按位DP,组合数学做代码:View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using 阅读全文

posted @ 2012-08-21 23:00 more think, more gains 阅读(219) 评论(0) 推荐(0)

约数的个数
摘要:算法:N = (1+p1)*(1+p2) *(1+p3)...*(1+pn)View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;int n, a 阅读全文

posted @ 2012-08-21 20:52 more think, more gains 阅读(192) 评论(0) 推荐(0)

题目1207:质因数的个数
摘要:题目1207:质因数的个数时间限制:1 秒内存限制:32 兆特殊判题:否提交:1397解决:326题目描述:求正整数N(N>1)的质因数的个数。相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。输入:可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。算法:只要筛选出sqrt(1000000000)前面的素数即可。代码:View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#i 阅读全文

posted @ 2012-08-21 19:49 more think, more gains 阅读(318) 评论(0) 推荐(0)

题目1104:整除问题
摘要:题目描述:给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。输入:两个整数n(2<=n<=1000),a(2<=a<=1000)算法:分解N!和a 的因子...是否整除就看因子是否包含。。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include< 阅读全文

posted @ 2012-08-21 18:30 more think, more gains 阅读(205) 评论(0) 推荐(0)

求凸包
摘要:C-Dogs' HouseTime Limit : 3000/1000ms (Java/Other)Memory Limit : 65535/32768K (Java/Other)Total Submission(s) : 134Accepted Submission(s) : 45Font:Times New Roman|Verdana|GeorgiaFont Size:←→Problem DescriptionGeorge wishes to build a House to contain his dogs(without roof), but he's a bit sh 阅读全文

posted @ 2012-08-21 16:39 more think, more gains 阅读(288) 评论(0) 推荐(0)

G-Wind
摘要:算法:计算期望值,算出每棵蘑菇的概率,再乘以其期望。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<map>#include<iostream>#include<algorithm>#include<vector>using namespace std;struct pnode{ int h, x, l, r;}p[100100];struct qnode{ int x, w;}q[11000];int N, M;i 阅读全文

posted @ 2012-08-21 16:35 more think, more gains 阅读(247) 评论(0) 推荐(0)

E- Seven tombs 表达式运算 + DFS
摘要:算法:1.表达式运算2.DFS枚举View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<stack>#include<algorithm>using namespace std;stack< 阅读全文

posted @ 2012-08-21 16:30 more think, more gains 阅读(231) 评论(0) 推荐(0)

题目1101:计算表达式 九度OJ
摘要:算法:1.1个栈寄存运算符,1个栈寄存操作数2.优先级用数组保存好View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<stack>#include<algorithm>using namesp 阅读全文

posted @ 2012-08-21 08:49 more think, more gains 阅读(256) 评论(0) 推荐(0)

C++ 中嵌入汇编
摘要:C++ 中嵌入汇编View Code #include<iostream>using namespace std;int main(){ int a,b; while(scanf("%d%d",&a,&b)==2){ int *c=&a; __asm{ mov eax,c; mov eax,[eax]; mov ebx,b; lea eax,[eax+ebx]; mov a,eax; } cout<<a... 阅读全文

posted @ 2012-08-19 19:56 more think, more gains 阅读(221) 评论(0) 推荐(0)

HDU 3486 RMQ + 二分
摘要:算法:1.RMQ 求区间最值2.二分枚举段的数量,注意是段的数量和其和成正比,也就是枚举段的数量。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace s 阅读全文

posted @ 2012-08-18 17:31 more think, more gains 阅读(161) 评论(0) 推荐(0)

多米诺骨牌 优化版
摘要:算法:在之前搜索出状态的基础上,再压缩一次状态。View Code //by yefeng#include<iostream>using namespace std;typedef long long LL; const int mod = 9937;int mask,idx, n , m;struct Matrix{ int mat[257][257]; void zero() { memset(mat,0,sizeof(mat)); } void unit(){ memset(mat,0,sizeof(mat)); fo... 阅读全文

posted @ 2012-08-18 16:38 more think, more gains 阅读(249) 评论(0) 推荐(0)

HDU 4332 Constructing Chimney 矩阵快速幂
摘要:算法:1.状态压缩2.搜索3.矩阵快速幂View Code #include<iostream>using namespace std;typedef long long LL;const int mod = 1000000007;const int mask = 255;struct Matrix{ LL mat[100][100]; void unit(){ memset(mat,0,sizeof(mat)); for(int i = 0; i < 100; i++) mat[i][i]=1; } void zero(){... 阅读全文

posted @ 2012-08-18 16:37 more think, more gains 阅读(208) 评论(0) 推荐(0)

B.寻找最大值
摘要:算法:1.正向思维如果枚举区间求最值肯定TLE,数据量很大。2.反向思维,枚举每个点的左右区间,虽然两个for循环,我感觉是平均是O(N)的时间复杂度,动态规划的思想,可以求出。3.这题相当诡异,不能给dt数组清空赋值,坑了我一晚上加上午,还不知道为什么。4.我的L[I]记录的是该点能往左到达的边界,R【i]是往右到达的边界。旭他们记录的是以该点向左能扩张的长度,R【i]类似。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#incl 阅读全文

posted @ 2012-08-18 09:38 more think, more gains 阅读(197) 评论(0) 推荐(0)

矩阵乘法 经典题目
摘要:1。 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,我们只需要二分求出A^k即可。--摘自,http://www.matrix67.com/blog/archives/276/理解:为什么k步的路径数,我们只需要二分求出A^k?因为每步实际做一次矩阵乘法,矩阵乘法定 阅读全文

posted @ 2012-08-17 11:31 more think, more gains 阅读(363) 评论(0) 推荐(0)

矩阵一维递推 菲波拉契数
摘要:算法:利用矩阵乘法求解递推,时间复杂度O(lgn)View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;#define MAXN 10#defin 阅读全文

posted @ 2012-08-16 21:28 more think, more gains 阅读(228) 评论(0) 推荐(0)

矩阵乘法
摘要:1.定义:(来自百度)基本定义 它是这样定义的,只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×n的矩阵a(m,n)左乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p),满足 矩阵乘法满足结合律,但不满足交换律 一般的矩乘要结合快速幂才有效果。(基本上所有矩阵乘法都要用到快速幂的) 在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。比如,下面的 阅读全文

posted @ 2012-08-16 19:52 more think, more gains 阅读(353) 评论(0) 推荐(0)

Teamwork Brings Profits! 搜索枚举
摘要:算法:搜索枚举,注意FOR循环初始值。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;int mp[20][20];int hash[20] 阅读全文

posted @ 2012-08-16 19:32 more think, more gains 阅读(183) 评论(0) 推荐(0)

1005 container
摘要:对一种数据结构有两种操作:1.是插入元素2.输出中位数,并且删除之。数据结构题,splay水过。View Code #include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;//节点定义typedef struct node{ node *child[2], *pf; int v, size;}*Node;Node root = NULL;void update( Node p ){ if( p == NULL) 阅读全文

posted @ 2012-08-16 19:23 more think, more gains 阅读(175) 评论(0) 推荐(0)

1003 线段树树状数组区间覆盖
摘要:算法:比赛时是对线段长度从大到小排序,一次插入查询。一直WA。赛后证明这种算法是错误的。比如1 6 5 7 6 10这组数据就无法通过。正确的算法应该是对线段的x从小到大排序,Y从大到小排序。用线段树或树状数组维护区间和都可。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<map>#include<iostream>#include<algorithm>#include<vector>using namespace 阅读全文

posted @ 2012-08-16 19:21 more think, more gains 阅读(336) 评论(0) 推荐(0)

背包
摘要:01背包。输出方案。View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<stack>using namespace std;int v[1000], num[1000], Vp[1000];const int inf = 0x7f7f7f7f;int dp[1100][1100];int st[1110], top;//输出方案种类 void DFS( int x, int volume, int sum, 阅读全文

posted @ 2012-08-10 13:47 more think, more gains 阅读(199) 评论(0) 推荐(0)

Card
摘要:算法:暴力枚举找循环节。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;int T,N,L,R;int card[100];int pcar 阅读全文

posted @ 2012-08-09 16:54 more think, more gains 阅读(208) 评论(0) 推荐(0)

最近点对 HDU 1007
摘要:TLE。。。求出答案完全正确。就是无法处理极端情况,比如100000个X坐标相同的点,因为我是对其值进行分治,时间复杂度O(N× N)。TLE。。。修改后的算法:先对X排序,然后递归分治(1,N)区间,而不是对其实际的值进行分治.分治得到两边最小的值是ans,最后合并时,找出x坐标>= p[mid].x - ans, <= p[mid].x + ans的点,并对其按Y轴排序。两个点Y值>= ans的点 break;AC代码,二分找两边左边View Code #include<stdio.h>#include<stdlib.h>#include 阅读全文

posted @ 2012-08-08 22:02 more think, more gains 阅读(296) 评论(0) 推荐(0)

最远点对 凸包 POJ 2187
摘要:http://blog.csdn.net/a81895898/article/details/7592156模版:平均时间复杂度O(nlgn),最坏O(n * n)View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include& 阅读全文

posted @ 2012-08-08 11:11 more think, more gains 阅读(176) 评论(0) 推荐(0)

Revolving Digits
摘要:算法:扩展KMP + KMP找循环节View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>#define MAXN 300010using namespace std;char S[MA 阅读全文

posted @ 2012-08-08 10:53 more think, more gains 阅读(161) 评论(0) 推荐(0)

AC自动机 HDU 2222
摘要:AC自动机分为三部分:1.构造字典树2.构找失败指针3.匹配解决的问题: 如给你n个单词,然后一篇问章,问你这篇文章中单词出现了多少次?View Code /*程序说明:多模式串匹配的AC自动机算法此题通过hdu 2222自动机算法可以参考《柔性字符串匹配》里的相应章节,讲的很清楚*/#include <stdio.h>#include <string.h>const int MAXQ = 500000+10;const int MAXN = 1000000+10;const int MAXK = 26; //自动机里字符集的大小 struct TrieNode{ Tr 阅读全文

posted @ 2012-08-08 07:52 more think, more gains 阅读(168) 评论(0) 推荐(0)

扩展KMP学习
摘要:1.扩展KMP要解决的问题 母串S,子串T,n = |S|,m = |T|,extend[i]表示S【i]与T最长公共前缀,要求在线性时间内求出extend[i]2.算法分析1)暴力算法,时间复杂度O( n * n ),比较N次,每次长度从N到1 2)扩展KMP, 时间复杂度O( n + m )扩展KMP:View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string& 阅读全文

posted @ 2012-08-07 22:20 more think, more gains 阅读(169) 评论(0) 推荐(0)

整数因子分解算法
摘要:奇葩的算法View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>#define LL unsigned long longusing namespace std;LL p[10] = { 2,3, 阅读全文

posted @ 2012-08-07 20:28 more think, more gains 阅读(445) 评论(0) 推荐(0)

找规律 技巧题 快速幂
摘要:题意:给你个N,统计C(N,0),C(N,1)。。,C(N,N)中奇数的个数算法:统计N中1的个数就可以了,然后快速幂View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using n 阅读全文

posted @ 2012-08-07 18:13 more think, more gains 阅读(212) 评论(0) 推荐(0)

History repeat itself 统计非平方数
摘要:题意:从1到。。。INF,统计第N个不能开平方数,并求其和。。算法:技巧题:View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;int T;lo 阅读全文

posted @ 2012-08-07 18:10 more think, more gains 阅读(177) 评论(0) 推荐(0)

Gold miner 分组背包
摘要:题意:要求在T时间内取N件物品,每种物品有其时间价值。同一条线上的必须依次取。算法:刚开始用树形DP做,也就是依赖背包。。TLE。而且跟据题目要求,必须节点取了,其子节点才能取。除了TLE,我的限定条件感觉对错也没有太大把握,做题时一定要正确选择算法,分析算法可行性(正确性,时间上,内存上),不要浪费时间。超时的树形DP:View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include< 阅读全文

posted @ 2012-08-07 18:06 more think, more gains 阅读(265) 评论(0) 推荐(0)

POJ 2411 Mondriaan's Dream 状态压缩 搜索
摘要:题意:求用1 * 2 的矩行拼h * w的矩阵方法数(h,w <=11)算法:1.朴素算法,根据关系,枚举由于在做第i行dp时必须完全覆盖第i-1行,只要抓住这个条件不放就行。1、如果第i行中有0,则第i-1行一定为1;2、如果第i行中为1的x列第i-1行为0,说明第i行肯定是竖着放的;3、如果第i行中为1的x列第i-1行的该列也为1,可能性只有一个,第i行是横放的,所以第i行的x+1列也必须为1,又因为第i行的x+1列为1是因为横着放的,所以第i-1行的x+1列也必须为1。View Code //自己没写枚举暴力的代码了,速度很慢2000ms,代码来自//http://gisyhy.b 阅读全文

posted @ 2012-08-06 17:23 more think, more gains 阅读(192) 评论(0) 推荐(0)

HDU 3811 炮兵阵地
摘要:题意:中文题http://poj.org/problem?id=1185算法:N <= 100;M <= 10。枚举每行状态,1表示该行放炮兵,0表示不放,相邻两位不能有1,这样的状态才合法特殊处理第一行,第二行状态。int cow[110];//保存行状态信息 int num[100]; //保存状态数int sum[100]; //保存状态对应的1,即炮兵数int dp[110][64][64]; //dp方程, dp[i][j][k]表示第i行状态为j,上一行状态为k枚举后面的行。由前往后推,num[i]&num[j] == 0 num[i]&num[k] = 阅读全文

posted @ 2012-08-06 16:29 more think, more gains 阅读(277) 评论(0) 推荐(0)

POJ 1170 shopping offers 状态压缩 记忆化搜索
摘要:题意:给你n件物品,三个参数描述该物品,编号,数量(<=5),每件价格。 n <= 5然后给你s种方案,第一个数位商品种类对数,然后是该商品型号,数量,最后一个数是该方案价格。求把所有物品买完最低的价格。算法1:商品种类很少,<= 5开个五维数组int dp[5][5][5][5][5],dp[a][b][c][d][e][f],表示第1中物品买a件,第2种物品买b件,。。,第5种物品买f件所需要价格然后DFS枚举每一种方案,记忆化搜索,即可以算出最优解。View Code #include<stdio.h>#include<stdlib.h>#inc 阅读全文

posted @ 2012-08-06 15:48 more think, more gains 阅读(313) 评论(0) 推荐(0)

HDU 3811 DP状态压缩
摘要:算法:dp[state][n]表示该状态前N位不是完美排列的个数。步骤:1.初始化第 0 位值2.第i位从第i-1位推出,每一位,枚举(1<<N)种状态。3.答案就是N!- dp[(1<<N)-1][N-1]View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<m 阅读全文

posted @ 2012-08-06 14:51 more think, more gains 阅读(172) 评论(0) 推荐(0)

multimap 一对多。。给力啊
摘要:View Code // multimap::lower_bound/upper_bound#include <iostream>#include <map>using namespace std;int main (){ multimap<char,int> mymultimap; multimap<char,int>::iterator it,itlow,itup; mymultimap.insert(pair<char,int>('a',10)); mymultimap.insert(pair<char,i 阅读全文

posted @ 2012-08-06 09:13 more think, more gains 阅读(245) 评论(0) 推荐(0)

模拟题。
摘要:算法:没有什么bug.以后少用STL。。。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;map<string,int>mp;m 阅读全文

posted @ 2012-08-05 21:10 more think, more gains 阅读(196) 评论(0) 推荐(0)

搜索
摘要:算法:题意比赛搞错了,只要最后彼此拿到的财务价值一样即可。搜索,2(40)次。加个if条件剪枝就可以了。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespac 阅读全文

posted @ 2012-08-05 21:09 more think, more gains 阅读(181) 评论(0) 推荐(0)

网络流
摘要:求最大流后判断下那些边的容量为0即可。。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;#define MAXN 2000000struct 阅读全文

posted @ 2012-08-05 21:07 more think, more gains 阅读(157) 评论(0) 推荐(0)

closest 素数
摘要:View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespace std;int pri[3200];bool visit[3200] = {0};int prime 阅读全文

posted @ 2012-08-05 21:05 more think, more gains 阅读(147) 评论(0) 推荐(0)

贪心
摘要:算法:以结束时间从小到大排序,枚举比当前开始时间小的剩余房间,有足够不另开房间,没有足够的就加上缺少多少。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>using namespa 阅读全文

posted @ 2012-08-05 21:04 more think, more gains 阅读(143) 评论(0) 推荐(0)

HDU 3811 Permutation 记忆化搜索 状态压缩 DP
摘要:题意:求1-N的排列数但是有限定条件,AI,BI,该排列要满足第AI位为Bi。算法:1.裸的DFS果断TLE。。时间复杂度为N!View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>us 阅读全文

posted @ 2012-08-05 11:25 more think, more gains 阅读(193) 评论(0) 推荐(0)

HDU 3006 The Number of set状态压缩
摘要:题意:给你N个集合,k个元素,元素值小于等于14,问由这些集合可以构造出多少新的不同集合。。。算法:由元素值特别小,可以这样处理。。1,2就是set[i]第1,2位为1然后把所有集合的合并,枚举。。最后枚举1..1<<m之间哪些数存在可以组成。。View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<queue>using namespace std;int N, M, set[110];int d 阅读全文

posted @ 2012-08-05 10:06 more think, more gains 阅读(198) 评论(0) 推荐(0)

HDU 1074 Doing Homework 状态压缩 + 搜索
摘要:题意:就是有0-15个工作,每个工作有完成日期限制,还有完成这个工作所需要时间,求完成所有工作花时最少,并且输出这些顺序。。。因为工作很小,最多也就1<<15种方案,BFS枚举所有方案即可。View Code /*鐘舵€佸帇缂?+ 鎼滅储*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<algorithm>using namespace std;struct node{ char name[110]; int end 阅读全文

posted @ 2012-08-05 09:42 more think, more gains 阅读(151) 评论(0) 推荐(0)

HDU 1565 状态压缩
摘要:题意:你一个n*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。(n <= 20)算法:因为n比较少20,可以用状态压缩,1表示方格该数取,0表示不取。每一行的状态有1<<N种,先预处理所有合法状态,即相邻两位不能为1,判断条件是i && (i<<1),下一行的状态要满足条件的是跟上一行没有相邻的 num[i] & num[j] == 0int num[21000]; //状态 int sum[21][21000]; //该状态的和 阅读全文

posted @ 2012-08-05 09:13 more think, more gains 阅读(201) 评论(0) 推荐(0)

HDU 4339 Query
摘要:算法:比赛时没有想到好的算法,暴力是O( Q * N )肯定超时。赛后,线段树,树状数组,HASH都能AC,想了下,的确用树状数组时间复杂度就可以优化到O(Q * lgN * lgN)2000msAC.。。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#includ 阅读全文

posted @ 2012-08-03 22:16 more think, more gains 阅读(222) 评论(0) 推荐(0)

HDU 4334 Trouble
摘要:算法:比赛时,最先想到的是O( N * N * N + N ^2 * log (N * N * N )) = O( N * N*N)的时间复杂度。N <= 200,5s中肯定不会超时。写出来提交MLE。。然后计算下内存要开800 0000数组,long long 型。M =800 0000 * 8 = 6400 0000 字节 = 61 M, 只能开4000000然后开40000数组。。时间复杂度变成O( N ^ 3 * log N )提交TLE。。泪奔,改为HASH。。O(N * N * N)静态链表处理冲突。。AC。4000多ms...时间好高,旭哈希过的1600ms..原因是我定义 阅读全文

posted @ 2012-08-02 21:51 more think, more gains 阅读(149) 评论(0) 推荐(0)

RMQ
摘要:1、朴素(即搜索),O(n)-O(qn) online。2、线段树,O(n)-O(qlogn) online。3、ST(实质是动态规划),O(nlogn)-O(1) online。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<time.h&g 阅读全文

posted @ 2012-08-01 16:30 more think, more gains 阅读(453) 评论(0) 推荐(0)

导航