- 博客(81)
- 收藏
- 关注
原创 LightOJ - 1234 Harmonic Number 分块打表的方法
题意:略思路:分块打表的方式(还可以用调和级数的规律算)1e8 的表有点大,没法直接打表 ( a[i] 表示 1/i 的前 i 项和)所以没隔100个数往表中存一次,这样表的大小只有 1e6,多出来的直接枚举就好了#include#include#include#include#include#include#include#inclu
2017-11-30 17:22:27 235
原创 LightOJ - 1220 Mysterious Bacteria 唯一分解定理
题意:给定 n, 求满足条件 x ^p = n 的最大的p的值;思路:还是考虑n的素因子,对n进行唯一分解以后(pi 为素因子, ni为个数) 得到 (p1 ^n1) * (p2 ^n2) * (p3 ^n3)...... = n;要是n为正数的话,直接对 n1,n2,n3.....求 gcd 后就是 最大的p;如果n为负数的话,要先对(-n)唯一分解,求得p,
2017-11-30 16:27:50 300
原创 LightOJ - 1236 Pairs Forming LCM 唯一分解定理与LCM
题意:略思路:由 唯一分解定理和 lcm 的关系,推出每个素因子的出现的可能种数,所有质因子之间种类数是相互乘的#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define
2017-11-30 13:57:49 263
原创 LightOJ - 1213 Fantasy of a Summation 推快速幂
题意:略思路:根据给定的循环推出每个元素出现的次数,是一个快速幂,,后面就简单了,,带详细更新#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in f
2017-11-29 18:21:34 214
原创 LightOJ - 1197 Help Hanzo 较大数的区间素数筛法
题意:给定 a,b ,求 [a, b] 之间素数的个数,思路:由于a,b比较大,直接暴力判素数也不行,我们可能会想到筛法,但是会遇到没法用数组存的问题,这样的话可以用 0 ~ (b-a)大小的数组存;给定了大小 1e6先打素数表,每次把a b之间的非素数筛掉,还有可能的是a-b之间的第一个prim i 的倍数恰好是这个素数要判一下,a 等于 1 的时候也要判一下
2017-11-28 22:47:34 234
原创 LightOJ - 1163 Bank Robbery 简单数学公式
题意:原来有个数A,去掉他的最后一位 x 后,得到 AA,然后 A - AA = B;给定 B ,要求 A;思路:根据条件可以得到:A - (A / 10)= B; 这个 A/10 是计算机算法,推出: A * 10 - (A / 10)* 10 = B * 10;并且: A - (A / 10)* 10 = x;最后推得: A * 10
2017-11-28 20:18:56 273
原创 LightOJ - 1098 A New Function 因子贡献
题意:略思路:每一个数直接求肯定是不行的,我们知道前n个数会有好多的重复的因子,我们可以利用算因子的贡献值的方法求得全部的和;算下复杂度的话,我们可以知道 √n 的复杂度是可以接受的;正好,就像求某一个的所有因子一样,我们枚举 2 — sqrt(n),题解中的 t1 就是 i 的倍数的个数,也就是i贡献的个数;还要考虑一个问题就是,某个数 除了 i 这个因子,
2017-11-28 15:35:50 409
原创 POJ - 1990 MooFest 树状数组
题意:又是农夫约翰和他的牛,给定n个牛,每个牛有个听力下限,和位置,他们之间互相说话会有一个 值 = max(听力下限)* 距离思路:用两个树状数组,分别维护 (前面比他位置小的数和比他大的数的 个数) 和 (所有位置的和)详见题解#include#include#include#include#include#include#include
2017-11-27 22:12:27 171
原创 SGU - 444 Headstrong Student 模拟+循环节
题意:求 a / b 的小数点后的循环节的开始点和循环节长度至于整数,循环节长度为0,开始位置就是整除完了的后一位思路:直接模拟,出现重复的余数,说明出现了循环节,如果被整除了的话直接输出本来看错数据大小了,用的 map 记录余数的位置,748ms 卡过,后来发现只有1e6 的数据,用数组记录就好了;#include#include#include#i
2017-11-27 20:07:37 200
原创 Codeforces Round #448 (Div. 2) B. XK Segments 排序+二分
题意:问某种 i-j 对的个数; i-j 对满足枚举 i j ,当 ai 思路:我们可以知道,朴素算法就是枚举 ij 这里明显超时,我们要注意到这里的限制条件: ai 排序后,对每个 a[i] ,我们就会想,另一个满足条件边界是啥? 然后解法就来了,我们根据 恰好k个 x的倍数,然后可以知道满足条件的右边界的大小范围这样的话 可用lower_bound (lo
2017-11-27 18:04:54 483 2
原创 Codeforces Round #448 (Div. 2) A. Pizza Separation 前缀和
题意:给定n个披萨块,分成两部分 分别连续的,使得两个部分角度和之差最小思路:明显的前缀和问题,枚举其中一部分的连续的长度,然后记录最小的差值可能#include#include#include#include#include#include#include#include#include#include#include#define PI acos(
2017-11-27 16:35:10 395
原创 SGU - 443 Everlasting...? 素因子分解
题意:略思路:打素数表,素因子分解#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define o
2017-11-27 16:11:38 238
原创 SGU - 449 Dendrograms 并查集+贪心构造
题意:比较难理解,直到我看题解之前,都没能得出明确的题意。总结题意后得到: 给出m个集合,每个集合中的元素必须挨着,因为原题说 首先要保证结构清晰,也就是说集合之间不能有交叉的连线;思路:虽然我没能弄清具体的题意,但是也想到了从最下面对集合进行并查集操作,每个集合保证字典序最小即可,从下往上实现并查集操作可以达到结构清晰的目的,不会出现相交的情况,(其实也会有某个元素同时在多个
2017-11-27 13:55:52 331
原创 HYSBZ - 1303 中位数图 伪前缀和,区间问题
题意:给定 1-n 的排列,找到以 b 为中位数的区间(奇数长度)个数;思路:这个区间要包含 b,可能是b及其左边的一段区间,或者b及其右边的一段区间,或者左右两边的区间组合;开始没有看见 1-n 的排列组合,以为是任意的数,那样不容易搞,后来发现1-n这个排列以后就很简单了,这是这个区间满足b是中位数这个条件的话,那大于他的数的个数等于小于他的数到个数;左右两边分别计数,
2017-11-24 22:24:58 325
原创 Educational Codeforces Round 33 (Rated for Div. 2) C - Rumor
并查集 合并的同时,确定这个集合的最小花费#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out
2017-11-24 22:18:34 226
原创 Educational Codeforces Round 33 (Rated for Div. 2) B - Beautiful Divisors
枚举K#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt"
2017-11-24 22:16:41 190
原创 Educational Codeforces Round 33 (Rated for Div. 2) A - Chess For Three
手动模拟#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt
2017-11-24 22:15:39 178
原创 Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 推规律+证明
题意:略; 这个题我是没推出来,想了好久也没想明白,看了题解才会做的,而且我对这个题的想法跟题解一点关系都没有,也就是说思路根本不存在;那就证明一下这个题的正确性吧理解:首先是不存在的这种情况,我们知道,要是 n , m 奇偶性不同,并且 k = -1 是的情况是不存在的因为: 假设 n 为偶数,m 为奇数,对于每一行合法的话,那么每一行有且只能有奇数个-1,那么-1的
2017-11-22 22:51:21 212
原创 Codeforces Round #447 (Div. 2) A. QAQ 暴力
题意:给定字符串,问其中有多少个 “QAQ”,可以不按顺序;思路:“A” 是关键点,找到每个“A”构成的 “QAQ”就是答案;扫字符串,每遇到一个A,他左边的“Q”的个数 * 他右边的“Q”的个数,就是这个“A”组成的个数#include#include#include#include#include#include#include#include#
2017-11-21 21:48:44 269
原创 Codeforces Round #447 (Div. 2) C. Marco and GCD Sequence 构造
题意:有一段序列,对他的所有的子序列的gcd放入set里面,然后把这个set给你,问是否合法,若合法,把原序列构造出来思路:开始我想错了,以为任意的连续子序列的gcd一定存在于set中,其实不然,例如原序列(2,12,2,18)-》(2,12,18)但是我们能确定的是,对于给定的set,只要最小的那个数是所有数的因子,那么我们就可以构造一个满足条件的序列也就是原序列;把最小的那
2017-11-21 21:22:28 250
原创 CodeForces - 615D Multipliers 组合数学-素因子与因子
题意:给你n个素数,有重复,把这n个数乘起来得到 N,然后找到他所有的因子,把这些因子再乘起来,对 1e9+7 取模思路:我们可以知道N的所有因子都是由给定的n个素数其中的一些相乘得到,所以我们又可以想到 答案就是n的所有子集相乘取模的结果,但是也难以实现继续想,可以推出每个素数pi 给N的所有因子的贡献,也就是其中有多少个pi,根据排列组合可以推一下#incl
2017-11-21 20:37:15 314
原创 Codeforces Round #446 (Div. 2) E. Envy 最小生成树(kruscal原理)(离线查询)
题意:给定一个无向联通带权图,和 q 个查询,每个查询给定若干条边,问这若干条边是否在某一个最小生成树中思路:我首先想到的是对于每个查询中的边进行并查集操作,然后另外的边用kruscal方法生成最小生成树,但是这样的复杂度能达到 n²,不可行(然后就不会做了)后来也是看了题解才知道的做法:(待更。。。)#include#include#include#inc
2017-11-21 13:22:01 305
原创 LightOJ - 1245 Harmonic Number (II) (思路讲解)
题意:略思路:对于这个题我先想到的是找到给定的 n 的因子,相邻两个因子 i, j 之间的数,用n除以这个数得到的是 n/j 的到的数,事实上这样想是错的但是也能提醒我们,某一段数,用n除完后,得到的结果是一样的;建议读者手动把 24 所有的数 用24除完以后得到的数写出来会发现一个规律:我们还是枚举 1~sqrt(n);对于1 和 2:n/1 = 24,
2017-11-20 21:29:18 430
原创 LightOJ - 1259 Goldbach`s Conjecture 素数打表+暴力(我见过的最快的打表姿势)
题意:给定n,找到两个素数,想加得到n,问有多少中方法;思路:筛法打个素数表,枚举小于等于(n/2)的所有素数prim[ i ],判(n - prim[ i ])是不是素数#include#include#include#include#include#include#include#include#include#include#include#de
2017-11-20 20:23:44 267
原创 Codeforces Round #446 (Div. 2) D. Gluttony 找规律
题意:给定一个所有数不同的序列,用这些数构造另一个序列,使之对应区间的和不同,当时没能看清这一点,也是因为自己没太做过D题,比较送没能好好想想思路:其实这个题挺简单,因为所有的数都是不同的,而且要求的又是给定的区间,把每一个数换成序列中比这个数小(或者全换成比之大的,那样边界另行考虑)的数,那对应的区间的和一定是不同的,然后把最小的数换成最大的数。这样唯一需要考虑的是 假设跟最
2017-11-20 19:51:23 262
原创 PTA 7-2 是否完全二叉搜索树(30 分)
建树输出,并检查#includeusing namespace std;const int maxn = 2220000 + 7;int n, m, f;int a[maxn], b[maxn];void build1() { memset(a, -1, sizeof a); for(int i = 0; i < n; ++i) {
2017-11-20 15:22:13 2248 1
原创 PTA 7-1 是否同一棵二叉搜索树(25 分) 建树比较
利用二叉树性质建树,比较#includeusing namespace std;const int maxn = 1024 + 7;int n, m;int a[maxn], b[maxn];void build1() { memset(a, -1, sizeof a); for(int i = 0; i < n; ++i) { in
2017-11-20 15:10:18 1544 1
原创 Codeforces Round #446 (Div. 2) C Pride
推规律#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt"
2017-11-18 11:58:52 304
原创 Codeforces Round #446 (Div. 2) B Wrath
更新往前击杀最大值,,On#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen
2017-11-18 11:57:27 203
原创 Codeforces Round #446 (Div. 2) A Greed
#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt", "w", st
2017-11-18 11:54:40 193
原创 Codeforces Round #374 (Div. 2) 721C Journey DAG上DP
DAG 上动态规划跑一遍dfs 转移状态,记录路径#includeusing namespace std;const int maxn = 5007, INF = 0x7f7f7f7f;int n, m, len;int edge[maxn][3];int f[maxn][maxn];int g[maxn][maxn];int route[maxn];in
2017-11-17 19:34:56 300
原创 LightOJ - 1214 Large Division 大数取模
==java取模应用// package program;// by lxkimport java.util.*;import java.math.*;import java.io.*;public class Main { public static void main(String[] args) { Scanner in = new Scanner(S
2017-11-16 21:07:43 256
原创 LightOJ - 1215 Finding LCM 推关系(lcm和因子关系)
题意:对于 a, b, c, 以及它们的最小公倍数 L, 给定 a,b,L 求 最小的 c思路:我们知道 L = lcm( lcm(a,b), c );我们首先求得 a b 的 lcm1,然后根据 lcm1 和 L 的关系求 c ,手推一下会发现:c 存在的条件是 L 是 lcm1 的倍数; 然后就是求 c ,我们可以理解为,t = L / lcm1 这一部分是 c 提供
2017-11-16 20:19:53 414
原创 LightOJ - 1138 Trailing Zeroes (III) N!中包含因子x的个数
题意:问是否存在N,其阶乘结果尾是否恰好有n个0;思路:很容易想到,就是要找n的阶乘含有因子10的个数,也就是找因子 2, 5 的个数,又因为 2 的个数多于 5,我们只需要查找5的个数就好了这里包含了 求n的阶乘含有因子5的个数 的方法#include#include#include#include#include#include#include#inc
2017-11-15 21:51:46 196
原创 LightOJ - 1109 False Ordering 因子个数
水数学#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt"
2017-11-15 20:23:13 211
原创 LightOJ - 1278 Sum of Consecutive Integers 素质因子
题意:求连续的一段数字和是给定的n 的组合种数思路:自己推一下就可以知道, n 的奇数因子都能提供一个组合方式那样就转化为求 n 的素质因子的组合方式#include#include#include#include#include#include#include#include#include#include#include#define PI a
2017-11-14 22:51:39 299
原创 HDU - 1754 I Hate It 分块入门(分块思想)
题意:给定一段序列,更新某个点的值,查询某个区间的最大值;思路:首先,这个题的很好的做法应该是线段树,线段树是维护区间最值的很好的数据结构,这里作为分块算法的入门题,学习一下;分块 听说很牛逼,还有分块的思想也是很好的,是把问题根据某个条件分割,然后对某一部分进行暴力; 有点类似于哈希对于这个题,更新和查询的复杂度都是 sqrt() 级别的,#include
2017-11-14 11:58:25 322
原创 LightOJ - 1090 Trailing Zeroes (II) 质因子分解
题意:求 a = C(n, r) * ( p^q ) 这个数字末尾有多少个 0 思路:问题可以转化成 a 对10 进行分解,可以分解的次数,即 对2分解 对5分解,两个中的较小值预处理每个 1 - 1e6 的每个数字的对2分解,对5分解的次数,,然后还要保存下前缀和,作为 n的阶乘中分别包含的次数,#include#include#include#i
2017-11-13 20:24:22 264
原创 LightOJ - 1077 How Many Points? 最大公约数(线段经过整点个数与gcd 证明)
题意:给定两个整点,求这段线段之间跨过的整点的个数思路:1,再纸上画一下就可以猜到了2,证明一下:设线段的两个端点为 (x1, y1) 和 (x2, y2)我们都知道,要是这个线段经过某个整点(a,b)的话,我令 dx = (a - x1), dy = (b - y1);必定有 dy / dx = (x2 - x1) / (y2 - y1) ①, 因为要满足相同的
2017-11-13 19:35:57 646
原创 LightOJ - 1067 Combinations 大组合数取模(费马小定理与逆元)
题意:求组合数 C(n,m)思路:我们知道 C(n,m) = (n!) / (m! * (n-m)!)但是这里的 n m 都很大,而且需要对 mod 取模,所以需要用到 逆元处理分数取模问题求逆元可以用扩展欧几里得算法或者费马小定理(快速幂)算法;这里是用到的是 有费马小定理推出来 运用快速幂:费马小定理: a ^ (m - 1) % ( m ) 恒等于 1 可
2017-11-13 18:03:11 272
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人