- 博客(170)
- 收藏
- 关注

原创 自我介绍
大家好,我是来自常州外国语学校的初一学生BYF,我从五年级下学期开始学习编程,平时喜欢下围棋。希望通过这个博客,写一些自己做题的心得,和大家一起讨论问题,如能对你有帮助我很开心。欢迎光临敝人博客!不足之处,敬请批评指正!Hello,the fascinating and cruel programming world !...
2018-06-16 10:57:08
267
原创 【POJ 1845】 Sumdiv
【题目链接】 点击打开链接【算法】 不妨先将A分解质因数 A = p1^q1p2^p2p3^p3..pn^qn 那么,A^B = p1^q1Bp2^q2B...pn^qnB 根据约数和定理,A^B的约数和就是 : (p1^0 + p1^1 + .. p1^q1B)(p2^0 + p2^1 + ... ...
2018-06-27 12:15:29
147
原创 6月16日省中集训题解
Problem A Pailindrome【题目大意】 求在k进制下n位回文数的和,结果用十进制输出 n <= 10^18 k <= 10^6 对于20%的数据,n <= 16,k <= 20 对于50%的数据,n <= 10^4,k <= 10^3 ...
2018-06-17 18:07:21
193
原创 【TJOI 2018】数学计算
【题目链接】 点击打开链接【算法】 线段树维护区间乘积【代码】 #include<bits/stdc++.h>using namespace std;#define MAXQ 100010struct SegmentTree{ int l,r; long long sum;} Tree[MAXQ&...
2018-06-16 19:15:40
204
原创 【POJ 1275】 Cashier Employment
【题目链接】 点击打开链接【算法】 设Ti为第i小时有多少个出纳员开始工作,Vi表示第i小时有多少个来应聘的出纳员 那么,有 : 1. 0 <= Ti <= Vi 2. Ti + Ti-1 + Ti-2 + Ti-3 + Ti-4 + Ti-5 + Ti-6 + Ti-7 >= Ri ...
2018-06-16 10:51:23
178
原创 【SCOI 2011】 糖果
【题目链接】 点击打开链接【算法】 当x = 1时,连边(a,b,0)和(b,a,0) 当x = 2时,连边(a,b,1) 当x = 3时,连边(b,a,0) 当x = 4时,连边(b,a,1) 当x = 5时,连边(a,b,0) 建立超级源点(Super Source),将这个点与所有点连一条...
2018-06-15 22:35:56
124
原创 【POJ 3159】 Candies
【题目链接】 点击打开链接【算法】 差分约束系统【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include <cmath>...
2018-06-15 21:36:08
148
原创 【POJ 1716】 Integer Intervals
【题目链接】 点击打开链接【算法】 差分约束系统【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include <cmat...
2018-06-15 21:18:09
87
原创 【POJ 2983】 Is the information reliable?
【题目链接】 点击打开链接【算法】 差分约束系统,SPFA判负环【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include &l...
2018-06-15 20:39:03
98
原创 【POJ 1364】 King
【题目链接】 点击打开链接【算法】 差分约束系统【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include <cma...
2018-06-15 20:11:03
97
原创 【POJ 1201】 Intervals
【题目链接】 点击打开链接【算法】 令sum(n)表示区间[1,n]中选了几个点 那么,显然有以下不等式 : 1. sum(n)- sum(n - 1) >= 0 2. sum(n) - sum(n - 1) <= 1 3. sum(bi) - sum(ai-1)...
2018-06-14 22:32:47
115
原创 6月10日省中提高组题解
【题目链接】 点击打开链接Problem A group 我们发现,如果存在三个人互相不认识的情况,则输出“no”,否则输出“yes”Problem B flyer Part A : 部分分算法 1.1 对于30%的数据,Max(Ci)≤10000,N≤1000,那么,暴力模拟即可 1.2 20%数据满足Ai=Ci,那么,只需用stl库里...
2018-06-12 19:31:03
132
原创 【POJ 3352】 Road Construction
【题目链接】 点击打开链接【算法】 tarjan算法求边双联通分量【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include &...
2018-06-12 18:47:48
189
原创 【POJ 1144】 Network
【题目链接】 点击打开链接【算法】 Tarjan算法求割点【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include <...
2018-06-10 10:42:56
87
原创 【POJ 1679】 The Unique MST
【题目链接】 点击打开链接【算法】 先求出图的最小生成树 枚举不在最小生成树上的边,若加入这条边,则形成了一个环,如果在环上且在最小生成树上的权值最大的边等于 这条边的权值,那么,显然最小生成树不唯一 树上倍增可以解决这个问题【代码】 #include <algorit...
2018-06-09 22:46:21
176
原创 【POI 2010】 Pilots
【题目链接】 点击打开链接【算法】 单调队列【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 3000010int n,k,i,ans,pos;deque< int > q1,q2;int a[MAXN];int main() ...
2018-06-08 21:17:36
159
原创 【HAOI 2007】 理想的正方形
【题目链接】 点击打开链接【算法】 单调队列【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 1010const int INF = 2e9;int i,j,a,b,n,ans = INF;deque<int> q1,q2;int va...
2018-06-08 20:33:52
110
原创 【Beijing 2010】 次小生成树
【题目链接】 点击打开链接【算法】 首先,有一个结论 : 一定有一棵严格次小生成树是在最小生成树的基础上去掉一条边,再加上一条边 这个结论的正确性是显然的 我们先用kruskal算法求出最小生成树,然后,枚举不在最小生成树上的边,我们发现若加上这条边, 则形成了一个环,用最小生成树的权值和加上这条...
2018-06-06 21:26:52
108
原创 【BZOJ 5165】 树上倍增
【题目链接】 点击打开链接【算法】 树上倍增,时间复杂度 : O(qklog(n))【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 3000010#define MAXLOG 18const int INF = 1e8;int T,tot = 1...
2018-06-05 19:09:46
310
原创 【BZOJ 3732】 Network
【题目链接】 点击打开链接【算法】 求出这个图的最小生成树,对于每次询问,用倍增法求出最近公共祖先,查询最小生成树上两点路径上的最大值 算法的正确性? 假设x和y在最小生成树中路径上的最长边为p,那么,根据kruskal算法的执行过程,我们发现p合并 了x和y所在的集合 假设有一条...
2018-06-04 22:28:13
93
原创 【BJOI 2018】 求和
【题目链接】 点击打开链接【算法】 预处理i^k的前缀和,对于每次询问,树上倍增即可 时间复杂度 : O(nk + mlog(n))【代码】 #include<bits/stdc++.h>using namespace std;#define MAXK 55#define MAXN 300010#de...
2018-06-04 22:19:18
178
原创 【HDU 1005】 Number Sequence
【题目链接】 点击打开链接【算法】 矩阵乘法快速幂,即可【代码】 #include<bits/stdc++.h>using namespace std;int a,b,n;struct Matrix{ int mat[3][3];} ans;inline void multipy(Matrix &a...
2018-06-04 22:16:37
74
原创 【HDU 3652】 B-numbers
【题目链接】 点击打开链接【算法】 数位DP f[i][j][k][l]表示i位数,第一位为j,除以13的余数为k,是/否包括子串“13”的方案数【代码】 #include<bits/stdc++.h>using namespace std;#define MAXL 13int i,n;int a[M...
2018-06-04 22:15:17
92
原创 【SCOI 2007】 降雨量
【题目链接】 点击打开链接【算法】 线段树 此题细节很多,写程序时要细心!【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 50010struct Node{ int l,r,mx;} Tree[MAXN<&l...
2018-06-02 22:08:39
144
原创 【BZOJ 3211&3038】 花神游历各国 & 上帝造题的七分钟2
【题目链接】 点击打开链接【算法】 线段树 开根操作直接开到叶子节点,注意当区间中所有数都是0或1时,不需要开根【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 100010int i,n,m,opt,l,r;long lo...
2018-06-02 09:33:37
95
原创 【BZOJ 4353】 Play with tree
【题目链接】 点击打开链接【算法】 树链剖分 对于线段树的每个节点,记录这段区间的最小值,最小值的个数,值为0的个数,此外,还要维护两个懒惰标记【代码】 本题细节很多,写程序时要认真严谨!#include<bits/stdc++.h>using namespace std;#define MAXN 10001...
2018-06-01 22:56:52
111
原创 【USACO 2010FEB】 slowdown
【题目链接】 点击打开链接【算法】 dfs序 + 线段树 树链剖分同样可以解决这个问题【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 100010int i,n,p,a,b,timer;int tag[MAXN<&l...
2018-06-01 19:20:33
140
原创 【LNOI 2014】 LCA
【题目链接】 点击打开链接【算法】 考虑求lca(x,y)的深度 我们可以将从根到x路径上的点都打上标记,然后,询问y到根上路径的权值和 那么,求sigma(lca(i,z))(l <= i <= r ),我们可以将区间[l,r]中的点依次打上标记,然后,询问点z到根路径 上的权值和 ...
2018-05-31 19:29:35
400
原创 【JSOI 2011】 分特产
【题目链接】 点击打开链接【算法】 考虑求每个人可以不分的方案 那么,对于每件物品,我们把它分成n份,每一份对应分给每一个人,有C(a[i]+n-1,m-1)种方案,而总方案数就是每种 物品方案数的乘积 然后,根据容斥原理,ans = C(m,0)*至少0人没分到特产 - C(m,1) * 至少1人...
2018-05-29 21:02:37
249
原创 【HDU 5698】 瞬间移动
【题目链接】 点击打开链接【算法】 用f[i][j]表示走到(i,j)这个位置有多少种方案,因为走到(i,j)这个位置,上一步一定在它左上角的矩形中,所以, f(i,j) = sigma( f(x,y) ) ( (x,y)在左上角的矩形中) 我们尝试将它画出来,发现是斜着的杨辉三角 然后,通过找规律,我们...
2018-05-27 22:40:16
308
原创 【USACO 2008FEB】 旅馆
【题目链接】 点击打开链接【算法】 线段树 对于一个节点,记录它从左端点延伸的最多的空房间的个数,从右端点延伸的最多的空房间个数,和该区间最多的连续 空房间个数【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 50010...
2018-05-26 23:00:51
106
原创 【HDU 4547】 CD操作
【题目链接】 点击打开链接【算法】 分四种情况讨论 : 1. 当前目录和目标目录是同一目录,不需要变换,答案为0 2. 当前目录是目标目录的祖先,答案为当前目录的深度 - 目标目录的深度 3. 当前目录是目标目录的孩子,答案为1 4. 当前目录和目标目录有最近公共祖先,答案为当前目录的深度 ...
2018-05-26 21:04:44
251
原创 【POJ 1470】 Closest Common Ancestors
【题目链接】 点击打开链接【算法】 离线tarjan求最近公共祖先【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include <...
2018-05-26 20:07:25
128
原创 【POJ 1330】 Nearest Common Ancestors
【题目链接】 点击打开链接【算法】 倍增法求最近公共祖先【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include <cmat...
2018-05-26 11:25:09
91
原创 【SDOI 2008】 递归数列
【题目链接】 点击打开链接【算法】 矩阵乘法优化递推 由于本博客不支持数学公式,所以不能将矩阵画出来,请谅解!【代码】 #include<bits/stdc++.h>using namespace std;#define MAXK 18struct Matrix { long long mat[MAXK...
2018-05-26 10:42:53
428
原创 5月19日省中提高组题解
【Problem A】 Square【题意】 给一个n * n的01矩阵,要求一个最大的全1正方形 N <= 1000 【题解】 朴素的做法是先求二维前缀和,然后暴力找最大的正方形子矩阵,时间复杂度 : O(n^3) 期望得分 : 80 考虑优化,我们发现如果有边长为n的正方形,就一定有边长为(n - 1)的正方形,因此,可以先二分边长d,...
2018-05-25 22:28:14
117
原创 【HDU 1588】 Gauss Fibonacci
【题目链接】 点击打开链接【算法】 要求 f(g(0)) + f(g(1)) + f(g(2)) + ... + f(g(n-1)) 因为g(i) = k * i + b 所以原式 = f(b) + f(k+b) + f(2k+b) + .... + f((n-1)k+b) 令矩阵...
2018-05-25 21:00:10
175
原创 【POJ 3233】Matrix Power Series
【题目链接】 点击打开链接【算法】 要求 A^1 + A^2 + A^3 + ... + A^k 考虑通过二分来计算这个式子 : 令calc(k) = A^1 + A^2 + A ^ 3 + ... + A^k 那么,当k为奇数时,calc(k) = calc(k-1) + A ^ k ...
2018-05-24 22:23:01
79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人