04 2016 档案

摘要:这里先推荐两道练习的裸题 首先是求点 【codevs4605】 LCA 就是求两个点的公共祖先,每次询问xor上上一个询问的答案。 先是两遍DFS: dfs1:把dep、siz、son求出来 dfs2:求出top和w siz[v]表示以v为根的子树的节点数 dep[v]表示v的深度(根深度为1) t 阅读全文
posted @ 2016-04-18 21:41 Yangjiyuan 阅读(806) 评论(2) 推荐(1)
摘要:读入优化(int) 读入优化(long long) 读入优化(string,char) 输出优化 阅读全文
posted @ 2016-04-13 15:03 Yangjiyuan 阅读(188) 评论(0) 推荐(0)
摘要:1.求树的直径: 先随便取一个点,一遍dfs找到离它最远的点l1,再以l1为起点做一遍dfs,找到离l1最远的点l2 那么l1到l2的距离即为直径 2. 求出有多少条边在这棵树的所有直径上: 两个结论: 1)这些边一定在同一条直径上 2)它们一定是连续的 因此,只需要处理第一问求出的直径,从l2到l 阅读全文
posted @ 2016-04-13 14:58 Yangjiyuan 阅读(324) 评论(0) 推荐(0)
摘要:KMP裸题 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 #define N 200010 10 11 char a[N],b[N]; 12 int p[N],cnt[N]; 13 14 int l1,l2,t; 15 int x; ... 阅读全文
posted @ 2016-04-12 20:56 Yangjiyuan 阅读(143) 评论(0) 推荐(0)
摘要:floyed水题 阅读全文
posted @ 2016-04-11 22:09 Yangjiyuan 阅读(178) 评论(0) 推荐(0)
摘要:求字符串内的非空子串的数量 后缀数组!!! 阅读全文
posted @ 2016-04-10 22:28 Yangjiyuan 阅读(138) 评论(0) 推荐(0)
摘要:题意:给一棵树,并给定各个点权的值,然后有3种操作:I C1 C2 K: 把C1与C2的路径上的所有点权值加上KD C1 C2 K:把C1与C2的路径上的所有点权值减去KQ C:查询节点编号为C的权值 裸裸的树剖 阅读全文
posted @ 2016-04-10 20:54 Yangjiyuan 阅读(217) 评论(0) 推荐(0)
摘要:题意:找出一个字符串中至少重复出现两次的字串的个数(重复出现时不能重叠)。 后缀数组 枚举字串长度h,对于每一次的h,利用height数组,找出连续的height大于等于h的里面最左端和最右端得为之l和r。如果l+h-1<r的话,说明没有重叠,答案加1. 阅读全文
posted @ 2016-04-09 17:48 Yangjiyuan 阅读(183) 评论(0) 推荐(0)
摘要:只要求sa 1 #include<algorithm> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cstdio> 5 #include<cmath> 6 using namespace std; 7 8 #define N 200010 9 阅读全文
posted @ 2016-04-08 21:28 Yangjiyuan 阅读(146) 评论(0) 推荐(0)
摘要:后缀数组模板题 阅读全文
posted @ 2016-04-08 21:23 Yangjiyuan 阅读(168) 评论(0) 推荐(0)
摘要:用个分隔符将两个字符串连接起来,再用后缀数组求出height数组的值,找出一个height值最大并且i与i-1的sa值分别在两串字符中就好 阅读全文
posted @ 2016-04-08 16:15 Yangjiyuan 阅读(192) 评论(0) 推荐(0)
摘要:第K大也就是第n-K+1小,所以就可以的二分答案了 (江哥讲过一道类似题) 二分答案找出比当前答案小的数的位置的坐标,判断一下是否可以选出满足不在同一行同一列的n-K+1个数,然后就可以跑匈牙利了,对于一个坐标(x,y)如果满足a[x][y]≤a[x][y]当前答案,就把第x行向第y列连边,然后跑匈 阅读全文
posted @ 2016-04-07 21:54 Yangjiyuan 阅读(393) 评论(0) 推荐(0)
摘要:1.randomDescription 给定4个参数A0,N,c,p,你需要按下式构造A1~AN: A[i]=(A[i-1]2+c)mod p 之后,你需要求出A1~AN中,第K大的数值。Input 一行五个正整数A0,N,c,p,K。Output 一行一个整数,描述答案。Sample Input 阅读全文
posted @ 2016-04-06 22:31 Yangjiyuan 阅读(228) 评论(0) 推荐(0)
摘要:可以算出合并多少次。 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 using namespace s 阅读全文
posted @ 2016-04-06 20:09 Yangjiyuan 阅读(302) 评论(0) 推荐(0)
摘要:距离一个点最远的点一定是直径的一个端点。考虑运用这个原理,每次维护一下直径端点即可。 阅读全文
posted @ 2016-04-06 20:06 Yangjiyuan 阅读(181) 评论(0) 推荐(0)
摘要:1 toad1.1 题目描述 有 n 个石子, A B 两人博弈, A 先手。 A 首先取若干个石子(至少一个,不能取完),然后B和A 再轮流取石子,每次取的石子不能超过 axb ( x 表示上次取的石子数, a, b 是两个正整数参数),且至少取一个,无法操作的人输。求 n 满足什么条件时先手必胜 阅读全文
posted @ 2016-04-05 22:12 Yangjiyuan 阅读(205) 评论(0) 推荐(0)
摘要:1 xlk1.1 题目描述 给定一棵大小为 n 的无根树,求满足以下条件的四元组 (a, b, c, d) 的个数: 1. 1 ≤ a < b ≤ n 2. 1 ≤ c < d ≤ n 3. 不存在一个点,使得这个点同时在点 a 到点 b 的最短路和点 c 到点 d 的最短路上。1.2 输入格式 第 阅读全文
posted @ 2016-04-05 22:02 Yangjiyuan 阅读(320) 评论(0) 推荐(0)
摘要:Description 设P(n)为从(0,0)移动到点(n,0)的不同路径数目,移动的方式有以下三种:(x,y)->(x+1,y-1),(x,y)->(x+1,y),(x+y)->(x+1,y+1),并且路径不能和第四象限有交集。求P(n),并对10^9+7取模。 Input 第一行一个整数T,表 阅读全文
posted @ 2016-04-03 20:51 Yangjiyuan 阅读(264) 评论(0) 推荐(0)
摘要:给一块n*m的巧克力,Alice只能垂直切,切成A*m和B*m,并且A+B=n,Bob只能横切,只能切成A*n和B*n,并且A+B=m。 对于n*n的这种巧克力,谁先切了第一刀,就直接让对方有切两刀的机会,所以Alice不可能去切这种巧克力,可以直接无视这种。 后一人会尽量选前一人切后小的一块切。 阅读全文
posted @ 2016-04-03 17:31 Yangjiyuan 阅读(278) 评论(1) 推荐(0)
摘要:今天写写cf上以前的水题,找找自信 A. Olesya and Rodion 此题要求一个能被t整除的n位数,直接t为开始,后面全部为0. 当然,需要排除位数为1但t=10的情况。 B. Kolya and Tanya 给你一个环,环上有3n个点,每个点的权值可以是1-3,然后问你满足a[i]+a[ 阅读全文
posted @ 2016-04-02 21:49 Yangjiyuan 阅读(145) 评论(0) 推荐(0)