- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 专题——线段树和树状数组(HDOJ)09 Turing Tree 【hdu 3333】
读入所有query,按右端点递增排序,hash记录当前值的下标,删去(0,t)中相同且非最后一次出现的元素,计算每个query Best solutions for Problem 3333 Language : AllG++GCCC++CPascalJava Rank Author Exe. Time Exe. Memory Code Len. Langu
2012-03-28 14:13:57 702
原创 专题——线段树和树状数组(HDOJ)14 LCIS
#include #include using namespace std; #define lrt (rt<<1) #define rrt (rt<<1|1) #define mid ((l+r)>>1) #define lson l,mid,lrt #define rson mid+1,r,rrt #define llen mid-l+1 #define rlen r-mid const
2012-03-27 13:44:05 637
原创 poj 1743 Musical Theme 【后缀数组】
有希望成为最长公共前缀不小于 k 的两个后缀一定在同一组。然后对于每组后缀,只须判断每个后缀的 sa 值的最大值和最小值之差是否不小于k。如果有一组满足,则说明存在,否则不存在。 #include #include #include using namespace std; const int maxn=20100; int a[maxn],b[maxn],s[maxn],c[maxn]; i
2012-03-22 10:40:39 512
原创 poj 3261 Milk Patterns 【后缀数组】
给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。 算法分析: 这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O(nlogn) #include #include #include using namespace
2012-03-22 10:38:21 733
原创 spoj 694&&705 后缀数组
每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照 suffix(sa[1]), suffix(sa[2]),suffix(sa[3]), …… ,suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀 suffix(sa[k]),它将产生 n-sa[k]+1 个新的前缀。但是其中有height[k]个是和前面的字符串的前缀是相同
2012-03-22 10:34:01 766
原创 poj 2893 hdu 3600 M*N数码问题
S = x0 + y0 + 逆序对个数(包含0) x0 y0指当前状态的0的坐标 所以最终就是判断 (初始的 x0 + y0 + 逆序对个数) %2 == ( m-1 + n-1 + m*n-1 )%2 或者分奇偶性讨论亦可 #include #include #include using namespace std; int a[1000000],_tmp[1000000];
2012-03-10 04:33:26 1261
原创 HDU 4167 User Names【string stl】
#include #include #include #include using namespace std; int main() { cin.sync_with_stdio(false); int n,maxlen,cas=1; while(cin>>n>>maxlen) { if(n==0&&maxlen==0) break;
2012-03-03 18:30:49 1046
原创 hdu3590 PP and QQ 【ext_anti-nim】
anti-nim 博弈扩展(树形博弈) 详细见:http://wenku.baidu.com/view/e0c822d3240c844769eaeea8.html #include #include #include using namespace std; int head[1000],nxt[1000],ev[1000]; int edge=-1; int fa[2000]; v
2012-03-02 18:13:23 984
原创 hdu3584 Cube【三维树状数组】
详细见:http://wenku.baidu.com/view/2175f419ff00bed5b9f31db4.html 更新8个顶点就行了 #include #include #include using namespace std; #define lowbit(x) x&-x const int maxn=105; int n,m,a[maxn][maxn][maxn]; v
2012-03-02 18:10:23 920
原创 HDU 3589 Jacobi symbol 【二次剩余】
#include #include using namespace std; const int maxn=1000000+10; typedef long long ll; bool not_pri[maxn]; int cnt=0,pri[maxn>>3]; void init() { for(int i=2;i<maxn;i++){ if(not_pri[i])
2012-03-02 18:07:51 922
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人