- 博客(8)
- 收藏
- 关注
原创 Substrings HDU - 1238
点击打开链接二分长度 然后枚举第一个串的所有子串 用kmp判断其是否为其他所有串的子串#include <bits/stdc++.h>using namespace std;const int maxn=1e2+10;char ch[maxn][maxn];int len[maxn],nxtt[maxn];char t[maxn];int n;void...
2018-01-31 10:39:11 241
原创 剪花布条 HDU - 2087
点击打开链接kmp存模板求出现次数 不可重叠 (可重叠见注释)推荐博客点击打开链接#include <bits/stdc++.h>using namespace std;const int maxn=1e3+10;int nxtt[maxn],nxts[maxn];char ch1[maxn],ch2[maxn];void kmp(char *t,int...
2018-01-29 11:04:08 234
原创 Aragorn's Story HDU - 3966 + Query on a tree SPOJ - QTREE
树链剖分模板题点击打开链接基于点权 链修改单点查询点击打开链接基于边权 单点修改链查询#include <bits/stdc++.h>using namespace std;const int maxn=5e4+10;struct node{ int v,next;};node edge[2*maxn];int tree[4*maxn];i...
2018-01-28 11:40:58 216
原创 Ferry Lanes POJ - 3377
点击打开链接一开始直接spfa T了。。再看这个图发现有猫腻 2e6个点分列两侧 且只与东西两点还有河对岸的点有边 那起点 p 到任意一个点 i 的最短路径(默认 i 在p东边)只有两种情况1 从p一直向东 途中可能纵向过几次河 但横向方向不变2 从p先向西再向东 通过迂回路线来回避一些耗时高的路段 且最多迂回一次 多了必定走重复路线为了保证满足第二种情况 首先从p向西...
2018-01-27 16:17:34 260
原创 Mosaic HDU - 4819
点击打开链接二维线段树模板题 二维与一维线段树都是一个道理 即把大的区域或区间分成更小的部分 难在理解二维中大区域和小区域之间的关系可以当作树套树来想 二维中每个小区间都代表一棵一维线段树 确定二维中每一个小区间就是确定了一个区域有哪些行 再确定对应一维线段树中某个区间 就是确定了一个区域有哪些列 #include <stdio.h>#include <cst...
2018-01-25 17:46:55 207
原创 Matrix POJ - 2155
点击打开链接二维线段树模版题这篇博客的染色和翻转问题说的很明白点击打开链接 之前一直没有考虑这么细· #include <cstdio>#include <cstring>#include <algorithm>using namespace std;int tree[4010][4010];int n,ans;void upd...
2018-01-22 09:45:54 186
原创 Queue HDU - 5493
点击打开链接 每个人只记得前边或者后边有多少人比自己高 对于最高的人来说比他高的人不存在 次高的人最多有一个比他高 次次高的人最多有两个比他高。。。以此类推 只要有人超出这个范围就是impossible 而只要每个人都不超出这个范围 那这个队列一定存在(每个人都不超范围<=>队列存在)因为题目给的条件是比某人高的人在其前或后有多少 且每个人的高度是唯一的 所以我们要按身高从...
2018-01-21 17:37:43 231
原创 Assign the task HDU - 3974
点击打开链接利用dfs序将多叉树映射到线段树上对于任意一个节点 在先序序列中每个子节点都在其后 而在后序序列中每个子节点都在其前 这样就确定了多叉树的一棵子树在线段树中的左右区间 #include <bits/stdc++.h>using namespace std;struct node1{ int l; int r; int laz...
2018-01-20 11:52:42 203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人