- 博客(4)
- 资源 (5)
- 收藏
- 关注
原创 hdu1075 字典树
就是单词查找对应的单词 一开始用数组写的字典树结果超内存,运行时错误,数组已经到极限,不能扩大了,代码如下: #include #include const int maxnode=15000; const int sigma_size=27; char c[10000][15]; struct Trie{ int ch[maxnode][sigma_size]; int v
2014-12-04 20:06:53 346
原创 hdu 1358 kmp算法
题意:一段字符串,求它每个前缀的最短循环环节。输出所有的。 解法:先用kmp算法预先求出f[i],根据后缀数组定义,“错位部分“的长度为i-f[i]。如果这i个字符组成一个周期串,那么错位部分恰好是一个循环节,因此k(i-f[i)=i。 #include const int maxn=1000010; char a[maxn]; int f[maxn]; int main() {
2014-12-02 20:19:45 361
原创 poj3646
简单的贪心,经典水题。 题意:有n条恶龙,雇佣骑士把它杀死,能力值为x的骑士能杀死直径不超过x的恶龙的头,但需要花费x金币,砍掉所有恶龙的头,怎样金币最少? 解法:直接对恶龙的头和勇士的能力值排序,然后遍历一遍比较一下就能解决啦。 #include #include using namespace std; int a[20010],b[20010]; int ma
2014-12-01 21:04:14 313
原创 poj2528离散化+线段树
题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报 这题如果不离散化,最大值10000000,数组会超内存,所以应该把每一张海报的左右边进行存储更新,然后排序,把这些边离散化到1~m的线段树中,就不会超内存,因为输入数据的个数的最大值为10000。 这题就做法就是先离散化,然后用二分查找找到每次输入的左边界和右边界在数组中的位置,然后利用线段树更新,最后利用线段树查询一下即可
2014-12-01 17:22:35 357
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人