自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yp_2013的博客

毕竟玩物而已

  • 博客(19)
  • 收藏
  • 关注

原创 splay几个小模板

bzoj 1269 文本编辑器, 主要类型是字符串,有区间插入和删除,含有光标/* ***********************************************Author :kuangbinCreated Time :2013/8/26 22:47:15File Name :F:\2013ACM练习\专题学习\splay_tree_2\文本编辑器ed

2016-06-26 09:49:24 266

原创 AC自动机精讲

http://www.cnblogs.com/Booble/archive/2010/12/05/1897121.html

2016-06-22 11:09:18 350

原创 kmp单片自动机

#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;int nxt[maxn];// find s in tint kmp(char *s, char *t) { int ret = 0; int m = strlen(s); nxt[0] = -1; for (int i

2016-06-22 10:59:25 306

原创 手写堆

#include <bits/stdc++.h>using namespace std;const int MAX_N = 1e3 + 10;struct Heap { int heap[MAX_N]; int pos[MAX_N]; int size; void init() { size = 0; } void push(in

2016-06-22 10:41:58 1043

原创 AC自动机

http://www.cnblogs.com/Booble/archive/2010/12/05/1897121.html//hdu2222//ACauto//构造失败指针:设当前节点上的字母为C,沿着他父亲的失败指针走,直到走到一个节点,他的儿子中也有字母为C的。然后把当前节点的失败指针指向那个字母也为C的儿子。如果一直走到了root都没找到,那就把失败指针指向root。//匹配(1)当前字

2016-06-21 08:41:51 275

原创 hdu 5468 容斥加树形dp

容斥,num统计树中含有因子i的结点有多少个,然后用总结点数减去就可以了,注意now-pre,因为肯定要减,因为当从一个子树到另一个子树的时候,也就是另一个子树的num值还没加进来的时候,num值统计的是全局的,所以要把子树外面的值给减掉~#include<iostream>#include<algorithm>#include<string>#include<map>//int dx[4]=

2016-06-17 10:07:43 402

原创 hdu 5458 树链剖分模板

题意:给出一张N个点,M条边的无向图,有两个操作:1.删除(u, v)间的一条边2.如果删除(u, v)间的一条边可使其不连通,找出这样的边的个数,就是找(u, v)间桥的个数思路:首先离线这些操作,时光倒流从最终状态逆着加边加回原图,可以考虑用并查集建树,然后以树作为最终状态,再树链剖分预处理下,建一颗线段树维护区间和(叶子值为1代表当前边为桥),如果有边(u, v)要加入,那就将(u, v)

2016-06-15 20:34:23 382 1

原创 RMQ模板hdu 5452

题意:有一棵生成树,有n个点,给出m-n+1条边,截断一条生成树上的边后,再截断至少多少条边才能使图不连通, 问截断总边数?解题思路:  因为只能在生成树上截断一条边(u, v),所以只需要统计以v为根节点的子生成树里的节点与子生成树外的节点的边数就可以了。对于新加入的边(u’, v’)来说,只影响以LCA(u, v)为根节点的子树里面的节点。统计所有答案,扫一遍输出最小即可   dp值记录的是以

2016-06-15 19:58:16 383

原创 hdu 5444 继续二叉查找树

/************************************************************************* 这是一个二叉查找树,实现了以下操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继。上述所有操作时间复杂度 均为o(h),其中h是树的高度 注释很详细,具体内容就看代码吧***********

2016-06-13 20:08:34 363

原创 hdu 4122 单调队列或线段树

/**hdu 4122 单调队列题目大意:给定n个时刻,在每一个时刻都要生产ai个月饼。给出m个可以生产的时刻,每个时刻单个生产费用为bi,单个月饼可储存T时间,单位时间费用为S 问如何安排生产花费最少解题思路:用单调队列维护一个点之前所有点的最小花费(为生产费+储存费)特别注意:n个时刻可能有重复的*/#include <string.h>#include <alg

2016-06-10 16:43:32 338

原创 hdu 4123 rmq与树的直径

#include <bits/stdc++.h>using namespace std;#define ll long longconst int inf = 0x7f7f7f7f;const int maxn = 5e4 + 10;deque<int> Max, Min;struct node{ int v, w; node(){} node(int _v, i

2016-06-10 16:41:32 351

原创 hdu 4125 二叉搜索树建立与kmp

#include <set>#include <map>#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>#include <limits.h>#include <string.h>#include <string>#i

2016-06-10 16:38:38 301

原创 codeforces 679 B

只有2种情况,一直搜索下去就行了 ,一个是剩余的数,一个是答案一,即block,一个是增加的用到的答案#include <bits/stdc++.h>using namespace std;#define ll long longconst int maxn=1e5+10;ll fac[maxn];ll bcnt , bsum;void dfs(ll remain , ll cnt , l

2016-06-09 15:26:31 672

原创 codeforces 679 C

发现其实变量的命名,空格的书写方式以及花括号的打否非常关键,直接影响到心情~#include <iostream>#include <fstream>#include <set>#include <map>#include <string>#include <vector>#include <bitset>#include <algorithm>#include <cstring>

2016-06-09 15:18:34 626

原创 hdu 5682

注意不能只是判断根节点的minn,maxx值大小,而是要判断所有节点的该值大小,有一个不合法就得返回是0,否则就wrong,也就是中间那句if(!dfs()) 特别重要! 正着反着都要去想一想#include<iostream>#include<cstdio>#include<string.h>#include<vector>#include<algorithm>#include<cma

2016-06-08 21:52:04 281

原创 hdu 5676 ztr loves lucky numbers

首先记录下来,然后二分。注意暴longlong的坑点#include<bits/stdc++.h>using namespace std;#define ll long longint t ,cnt;const int maxn=1e6+10;ll a[maxn];ll n;void dfs(ll num,int sa,int sb){ if(sa+sb>=20) return

2016-06-07 23:09:07 266

原创 hdu 5677 ztr loves substring

暴力字符串统计,然后多重背包即可,可以二进制优化。#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <cmath>#include <set>#include <map>#include <vector>#include <iostream>#include <queu

2016-06-07 23:07:05 377

原创 hdu 5402 Travelling Salesman Problem

原来那道模拟题是这样的,因为我走的奇偶决定了我现在是在左还是在右,我刚开始想的是要走到断点的上一层或本层, 但实际上应该固定每次只走两行,这样每次都是从左边开始了,然后我只需要考虑从左边去把空格绕了就行,然后就是从右边下来了,然后就反着走就可以了~还是需要加强对这种 思维题目的练习~#pragma comment(linker, "/STACK:1024000000,1024000000") #i

2016-06-01 18:22:55 295

原创 hdu 5396 Expression

区间dp 调一调出样例就过了#include<bits/stdc++.h>using namespace std;#define ll long longconst ll mod=1e9+7;const int maxn=1e2+10;ll dp[maxn][maxn];int n;int a[maxn];char str[maxn];ll A[maxn];ll c[maxn][ma

2016-06-01 10:54:51 324

空空如也

空空如也

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

TA关注的人

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