数据结构
文章平均质量分 80
islands_
IT 弱菜
展开
-
UVA 11468 Ac自动机+dp
题目意思:给出k个模式串,然后随机生成一个长度为L字符串,每个字符被选中的概率为pi 。 问构造出来的字符串不包含任何模式串的概率。分析:显然这是一个模式串的母串的匹配,显然需要先构建一个AC自动机。我们用dp[i][j] 表示当前正在构造第i个字符,fail指针在j节点上能构造成功的概率。那么我们可以顺着fail指针向后面的状态。 注意只能扩展有效状态,也即不包含任何模式串的状态。 也即原创 2015-01-29 09:34:06 · 546 阅读 · 0 评论 -
bzoj [NOI2007]货币兑换Cash (cdq分治+斜率优化 )
1492: [NOI2007]货币兑换CashTime Limit: 5 Sec Memory Limit: 64 MBSubmit: 2454 Solved: 1078[Submit][Status][Discuss]DescriptionInput第一行两个正整数N、S,分别表示小Y 能预知的天数以及初始时拥有的钱数。 接下来N 行,第K 行三个实数AK原创 2015-08-04 19:59:27 · 699 阅读 · 0 评论 -
hdu 3746 (kmp)
主要是理解好kmp的next数组。如果 i%(next[i]-i)==0,就会出现循环串。主要思想是枚举长度I.n/i*i-next[n/i*i]=i必须成立。然后根据next数组判断多出来的那一段是不是属于循环串里面 。#include#include#include#include#include#include#include#include#include#inclu原创 2015-07-19 21:23:33 · 507 阅读 · 0 评论 -
scu oj 4441 Necklace 2015年四川省赛F题(dp+数据结构)
思路:y的可能性很少,只有10种类,枚举y的位子,然后X和Z分别是一个上升和下降序列,可以分处理处正向递减,逆向递增的最大权值和。然后枚举断点求最大值即可。可以用数状数组处理。#include#include#include#include#include#include#include#include#includeusing namespace std;const原创 2015-06-15 17:20:12 · 1521 阅读 · 0 评论 -
2维线段树
#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int mod=99999997;const double eps=1e-8;const double pi原创 2015-01-28 11:28:26 · 466 阅读 · 0 评论 -
hdu 5274 数链剖分 /dfs+数状数组
注意 第一:点权为0.。。。 第 2:杭电扩展啊。。。 #pragma comment(linker, "/STACK:1024000000,1024000000")#include #include#include#include#include#includeusing namespace std;const int mmax = 100010;const int inf原创 2015-06-21 08:25:14 · 812 阅读 · 1 评论 -
SPOJ - QTREE (树链剖分)
基础的树链剖分题目,不过是边权,可以向下映射成点权或者按边剖分。VIEW CODE#include #include#include#include#include#includeusing namespace std;const int mmax=10010;const int inf=0x3fffffff;struct edge{ int st,en,cos原创 2015-04-05 16:07:25 · 629 阅读 · 0 评论 -
poj 3882(Stammering Aliens) 后缀数组 或者 hash
后缀数组: 构建后缀数组,注意要在字符串莫末尾加上一个没出现过的字符。然后可以2分或者直接扫描,直接扫描需要用单调队列来维护VIEW CODE#include#include#include#include#include#include#include#include#include#include#include#include#includeusing n原创 2015-03-27 18:56:18 · 710 阅读 · 0 评论 -
poj 3294(Life Forms) 2分+ 后缀数组
我曾用字符串hash写,但是超时了。只能用后最数组了。大致思路:用不同的符号吧字符串连接起来,构建后缀数组,然后2分答案,依次扫描后缀数组,看是否瞒住条件。VIEW CODE#include#include#include#include#include#include#include#include#includeusing namespace std;const i原创 2015-03-27 15:11:19 · 670 阅读 · 0 评论 -
UVA - 12206 Stammering Aliens (hash)
这题其实很容易想到2分长度,关键是2分后,怎么判断出现最多次的串是否》=m次了。这里需要用到hash来处理。 对于一个字符串 H[i] =H[i+1]*131+s[i] ;其中 H[n]=0;那么对于一个长度为L的串 ,hanh[i,l]=H[i]-H[i+L]*x^L ; 这样记录每个字符串的hash值,然后再处理起来就比较简单了。VIEW CODE#include#includ原创 2015-02-05 16:11:54 · 619 阅读 · 0 评论 -
Codeforces Round #285 (Div. 1) problem B. Misha and Permutations Summation 康拓展开。
题目地址 http://codeforces.com/contest/504/problem/B 这道题目让我更深入的了解了康拓展开。以前只是在做8数码的时候接触了康拓展开了。在比赛的时候想到了康拓展开,但是不知道怎么逆展开,所以没做出来。先介绍一下康拓展开。康拓展开:把一个排列展开成如下形式:X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i原创 2015-01-14 16:16:13 · 562 阅读 · 0 评论 -
acdream 1116 Gao the string!
分析:实际上,我们用next[i]表示 T[i-n] 和T[1-n]的最长公共前缀,那么a[i]=next[i] +next[i+1]...... +next[n]; 最长公共前缀(lcp)有3种方法 : 扩展kmp ,hash 和后缀数组 。方法一 :扩展kmp //#pragma comment(linker, "/STACK:102400000,102400000")原创 2015-01-30 19:43:25 · 800 阅读 · 0 评论 -
hdu 5244 inverse (上海大都会赛) (分治算法)
nverseTime Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 110 Accepted Submission(s): 44Problem DescriptionMike has got a huge ar原创 2015-08-17 20:36:54 · 1402 阅读 · 0 评论