- 博客(145)
- 资源 (3)
- 收藏
- 关注
原创 POJ 3468 A Simple Problem with Integers
由于Rotate中pushdown(x)和pushdown(y)的顺序搞反了导致答案一直不对。应该是xianjiang
2014-08-02 15:42:00 562
原创 HDU 1754 I Hate It
水题,Splay做下。 #include #include #include #include using namespace std; #define N 200005 #define mod 20140518 const int inf = (1 << 29); typedef long long LL; int n, m; int pre[N], key[N], ch[N][2],
2014-08-01 16:47:41 498
原创 最长回文子串
O(n)算法 #include #include #include #include using namespace std; #define N 1000005 #define mod 20140518 #define inf 1 << 29; typedef long long LL; int n, m; char a[N]; char b[N << 1]; int p[N << 1
2014-07-07 14:55:30 449
原创 [NOI2004]郁闷的出纳员
SBT第一题。代码照抄cxlove。 #include #include #include #include #include using namespace std; #define N 200005 typedef long long LL; struct SBT{ int lson, rson, sz, key; void Init(){ lson = rson = ke
2014-04-28 22:27:04 565
原创 POJ 1625 Censored!
自动机 #include #include #include #include #include #include using namespace std; #define N 2005 #define INF 1000000009 typedef long long LL; int n; int letter[300]; struct Trie { Trie *fail; Tr
2014-04-19 21:47:17 465
原创 HDU 2243 考研路茫茫――单词情结
ACzid #include #include #include #include #include #include using namespace std; #define N 20005 #define INF 1000000009 typedef long long LL; struct Trie { Trie *fail; Trie *next[27]; int
2014-04-14 21:58:24 565
原创 HDU 3065 病毒侵袭持续中
AC自动机模板题。感觉数据略水。从2896改过来的 #include #include #include #include #include #include using namespace std; #define N 2000005 char a[1005][55]; char b[N]; int n, m; int sum; struct Trie { Trie *fail;
2014-04-02 21:46:38 490
原创 HDU 2896 病毒侵袭
AC自动机模板题。重新学习,熟悉下。 #include #include #include #include #include #include using namespace std; #define N 100005 char a[205]; char b[10005]; int ans[20]; int n, m; int idx; struct Trie { Trie *fail
2014-04-02 20:59:57 465
原创 POJ 3167 Cow Patterns
kmp + 树状数组。树状数组动态更新排名。明白了方法以后,细节方面调了半天。。。想吐了。。。逗b的地方也不想改了。注意代码中注释的地方。 真的要想清楚再写,不然很浪费时间。 #include #include #include #include #include #include using namespace std; typedef long long LL; #define
2014-03-29 16:51:28 449
原创 POJ 2185 Milking Grid
利用next数组求最小重复覆盖字串长度,即x = len - next[len]。先求每行最小长度再求每行最小公倍数,纵横相乘可过。 PS:以上是错误思路,仅为理解next数组。目测这篇文章是正解:http://blog.sina.com.cn/s/blog_69c3f0410100tyjl.html #include #include #include #include using
2014-03-28 20:00:24 420
原创 POJ 1226 Substrings
简单kmp,将以第一个串的所有字串为模式串。已经做过,再做一次,复习下kmp. #include #include #include #include #include #include using namespace std; typedef long long LL; #define lson l, m, rt << 1 #define rson m + 1, r, rt <<
2014-03-28 10:31:44 387
原创 POJ 2541 Binary Witch
比较水的一题,正解觉得是状压,但是第一眼看去就觉得是hash,其实本题hash状压是一样的。 #include //hash #include #include #include #include #include using namespace std; typedef long long LL; #define lson l, m, rt << 1 #define rson m +
2014-03-27 21:01:23 482
原创 安大oj 673 聪明的输入法
字典树模板题,表示很简单,只是看不懂题。。。 #include #include #include #include using namespace std; typedef long long LL; #define N 100005 char a[N][15]; int n; int ptr; struct Node { int son[27]; int ex; in
2014-03-26 23:29:06 757
原创 HDU 4731 Minimum palindrome
学会了打表找规律。m >= 3时abc循环最小,m=2时打表找规律即可。 ps:m>=3时,n%3,即多出来的数加在后面,加前面会令回文从3增加到4或5 #include using namespace std; int n, m; int main(){ int t; int num = 1; scanf("%d", &t); while(t--){
2014-03-26 10:04:54 437
原创 HDU 4734 F(x)
数位dp,写的非常挫。ul为超出部分,fu为缺少部分。当前数位超出或缺少部分大于一定数值可直接返回 #include #include #include #include #include #include using namespace std; typedef long long LL; #define lson l, m, rt << 1 #define rson m + 1,
2014-03-25 21:53:38 388
原创 HDU 4737 A Bit Fun
水过。不知道是dp还是什么,懒得想了。直接n^2过。 #include #include #include #include #include #include using namespace std; typedef long long LL; #define lson l, m, rt << 1 #define rson m + 1, r, rt << 1 | 1 #define
2014-03-25 15:08:25 387
原创 SPOJ 2815. Increasing Subsequences
dp,开50棵线段树,每棵存到当前位置连续长为k的序列总数。注意代码中有一需要注意的地方,即当前数为最小数时,前一棵树的总和必然为0,不能通过求p - 1的总和数来求,此时p - 1 为-1会导致出错。另外,没离散化1e5超时,离散化1e4过了,spoj真是卡常数。。。 #include #include #include #include #include #include usi
2014-03-25 14:42:23 792
原创 SPOJ 3408 DNA Sequences
求最长公共子序列,且每一连续子段的长度不小于k。用sum数组记录前面有多少连续的序列。sum[i][j] 只能由sum[i - 1][j - 1]转移而来。sum数组的转移与dp数组的转移独立开来。当sum[i][j] > k时,可以选择从前一位连过来,也可以从前k位连过来。[i,j]序列还是表示当前位置的状态好点,若表示[i - 1, j - 1]的状态则最后会略纠结。 #include #
2014-03-22 14:55:06 817
原创 CF 10D LCIS
最长公共递增子序列。o(n*m)做法。只在cf上过了。。。poj,zoj都wa出翔了。。。记录路径要开二维数组否则会wa。 #include #include #include #include #include #include using namespace std; typedef long long LL; #define INF 1000000007 #define N 5
2014-03-19 20:45:30 684
原创 CF 402D Upgrading Array
暴力搞过。。。处理出从1 到 i的公约数。从右往左开始判断,如果公约数的值小于零直接约掉。然后计算总和即可。注意处理素数大于sqrt(1e9)的情况。当给出素数中存在大于素数表最大值的素数时,加入素数表。v记录是否为坏素数。当除以约数结束时,判断剩下的值是否存在于素数表中,存在则根据v数组的记录判断加或减,否则加1. #include #include #include #include
2014-03-18 22:13:28 529
原创 湘潭大学oj 1191 Hard Wuxing
矩阵乘法求解。非常卡时间。因为转移矩阵固定,直接处理出快速幂中所有转移矩阵的幂。还有因为没用longlongRE了一发 #include #include #include #include #include #include using namespace std; typedef long long LL; #define INF 1000000007 #define N 5 s
2014-03-18 21:03:23 893
原创 ustc 1233 Gift
一开始想先选出送出的物品,再乘以临界点的种类。但是求组合数超时。先枚举临界点,再乘以所有可能(2的幂)即可。 #include #include #include #include #include #include using namespace std; typedef long long LL; #define INF 100007 #define N 10005 int a[
2014-03-16 21:38:09 422
原创 合工大oj 1307 散步
13年安徽省赛题目。bfs处理出所有点到n,m点的最短距离,再dfs一次即可。 ps:在bfs时,加入v数组若i,j点已经在栈中则不必入栈,更新距离即可。避免重复入栈导致超时。 #include #include #include #include using namespace std; #define N 100 #define INF 1000000000 typedef lon
2014-03-15 17:13:40 1330
原创 POJ 1947 Rebuilding Roads
树形dp。dp[i][j],表示以第i个节点为根节点,形成含有j个节点的子树最少去掉的边。最后计算答案时除根节点外,其余节点的答案都要+1,因为与父节点有条边。状态由下一层转移过来时dp[i][j] = min(dp[i][j], dp[tmp][x] + dp[i][j - x] - 1);减1是减掉下层与当前节点连接的边。 ps:因为必然有答案,所以转移状态时不需要特判。必须从sum[rt]
2014-03-15 10:47:20 503
原创 HDU 1561 The more, The Better
树形dp。卡了下。一开始是在一条链上做dp,当1为根节点,2,3都是其子节点时,我的做法无法同时选1,2,3。dp第一位代表节点,第二维代表用掉数目,由下一层节点递归上来。ps:改掉了波神吐槽的指针。。。 #include #include #include #include #include #include using namespace std; typedef long lo
2014-03-13 21:46:02 434
原创 POJ 3140 Contestants Division
树形dp,水。 求将一棵节点有权值的树分成两块,两块总权值差最小值。 ps:注意本题要用longlong,第一次应该wa在这里,然后换了种写法,导致tot和mv未初始化,再wa一发。这类题目初始化问题需要格外注意。 #include #include #include #include #include #include using namespace std; typedef l
2014-03-12 16:22:35 502
原创 POJ 1655 Balancing Act
树形dp,水。 平衡值是去掉当前节点后剩下的树中节点数最大的树的节点数,求最小平衡值。多个答案任意输出一组。把2378的代码稍微改改就行了。。。 ps:双向存边时,边数应至少为节点的两倍,否则会RE. #include #include #include #include #include #include using namespace std; typedef long lon
2014-03-12 15:28:39 435
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人