- 博客(15)
- 资源 (7)
- 收藏
- 关注
原创 大素数模板
求[1,n]的质数有多少个 (n代码一:复杂度大概O(n^(3/4))#include #define ll long long using namespace std; ll f[340000],g[340000],n; void init(){ ll i,j,m; for(m=1;m*m<=n;++m)f[m]=
2018-01-31 11:31:29 122
原创 LA2678 最短子序列 ( 从O(n^3)到O(n) )
小白书49页题意: 给你一个正整数序列,问你在里面找到一个最短的子序列,要求子序列的和大于等于k,输出序列长度。1:很容易想到n三方的暴力,枚举序列左右端点,然后算和。2:我们可以预处理前缀和,然后程序复杂度就变为O(n^2)3:我们可以枚举右端点,然后二分左端点,然后复杂度变为O(nlogn)#include #include #include #incl
2018-01-31 10:56:45 573
原创 LightOJ - 1282 (log取前3位)
题意:求n的k次方的前3位和后三位。后三位直接用快速幂取下模。前三位需要用到log维护,记得去年某个比赛就见到类似的用log保精度的问题,紫书上也遇到过,暑假的训练也碰到斐波那契前n位的问题,然后一直没看,最终区域赛热身赛也遇到这类问题,然后凉凉~~,今天又碰到了终于弄明白了QAQ。首先任意一个数字n都可以写成(10^a)(a为浮点数);那么(n^k)就可化为(n^(ak)),我们知道
2018-01-30 15:12:13 189
原创 LightOJ - 1341 (因数分解)
题意:求区间[a,b]中b的因数对数有几个,[x,y]和[y,x]算一对。因为x和y的范围是1e12,那么我们根据唯一分解定理,只需要求1到1e6范围内的质因数即可。然后根据乘法原理:ans=ans*(质因数指数+1);最后ans除以2,就是b的所有因数对数。然后用ans减去,小于a的对数就是我们要求的答案。#include #include #include #includ
2018-01-30 11:31:58 289
原创 POJ - 2115 Looooops(扩展欧几里得)
求解Cx+pow(2,k)y=(B-A) 是否存在解,如果存在输出最小正整数解x类似于poj1061,直接用扩展欧几里得即可#include #include #include #include #include using namespace std;typedef long long ll;void gcd(ll a,ll b,ll &d,ll &x,ll &y){ i
2018-01-29 17:37:04 150
原创 POJ - 1061 青蛙的约会 (扩展欧几里得)
求解方程(m-n)*a+l*b=(y-x) 是否有解,如果有解求a大于0的最小解为多少。#include #include #include #include using namespace std;typedef long long ll;void gcd(ll a,ll b,ll &d,ll &x,ll &y){ if(!b) {d=a;x=1;y=0;} else
2018-01-29 17:09:35 140
原创 HYSBZ - 2243 染色 (树链剖分)
题意:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“ 112221 ” 由3段组成:11 、222 和1 。区间更新,区间查询。很容易写错,开始cnt忘记清零找了一小时。r不小心写成l又找半小时。。。一定要细心,这种题出错很难找。#include #include #include using
2018-01-28 12:27:28 172
原创 LightOJ - 1348 Aladdin and the Return Journey(树链剖分)
题意:给一个树和树上点的权值,两个操作0 a b 查询a到b的权值和1 a b 把点a修改为b/*题意:给一个树和树上点的权值,两个操作,一个是将点的权值修改,一个是询问u到v的点权和*/#include #include #include #include using namespace std;#define maxn 300050int dep[maxn],
2018-01-27 14:20:19 147
原创 HYSBZ - 1036 (树链剖分单点更新,区间求和and最大值)
题意:n个点的树CHANGE u t : 把结点u的权值改为t QMAX u v: 询问从点u到点v的路径上的节点的最大权值 QSUM u v: 询问从点u到点v的路径上的节点的权值和基础树剖#include #include #include #include using namespace std;/*一些操作: I. CHANGE u t : 把结点u的权值
2018-01-26 16:41:29 184
原创 HDU - 5115 (经典区间dp)
题意:n头狼,杀死第i头狼会受到b[i-1]+b[i+1]+a[i]的伤害,问杀死所有狼受到的最小伤害值。因为无论怎么选,a值都只需要加一遍,所以先把a的和算出来,最后加到答案上就行了。我们可以在两边加一头a值和b值都为0的狼,dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+b[i]+b[j]);答案为dp[0][n+1].#include #in
2018-01-26 10:58:52 332
原创 FZU - 2082 过路费(树链剖分)
n个点,n-1条边,m次查询。1 a b 代表查询 a点到b点路径权值和。0 a b代表把第a条边权值更新为b单点查询,区间更新,树剖裸题。树剖代码量太大,写错一个变量可能就要就要查半天注意用long long#include #include #include #include #include #include using namespace std;/*0
2018-01-25 16:38:46 234
原创 hdu 4497 GCD and LCM
求满足gcd(x,y,z)=n,lcm(x,y,z)=m的不同三元组的个数。易得lcm(x,y,z)/gcd(x,y,z)=p1^a1*p2^a2*p3^a3*...pk^ak.(pi为素数)x/gcd=p1^b1*p2^b2*...*pk^(bk)y/gcd=p1^c1*p2^c2*...*pk^(ck)z/gcd=p1^d1*p2^d2*...*pk^(dk)由lcm及gc
2018-01-24 19:11:08 133
原创 poj 2763 Housewife Wind 【修改边,查询区间】
树链剖分第二题,因为建树的一些错误debug了一天。可以用下节点表示边,n个节点去掉根节点正好有n-1条边。/*第一行三个整数n,q和s表示点数,操作数和当前位置,之后n-1行每行三个整数a b c表示a,b之间有一条权值为c的边,最后q行每行一个操作 0查询 1修改边 */#include #include #include #include using
2018-01-23 12:14:56 122
原创 HDU 3966 Aragorn's Story(树链剖分,区间修改,单点查询)
区间修改,单点查询,很容易想到线段树,树形结构的线段树可以用树链剖分。#include #include #include #include #include using namespace std;#define maxn 50005int val_pre[maxn],val[maxn],siz[maxn],son[maxn],id[maxn],fa[maxn];int to
2018-01-21 11:40:47 224
原创 树链剖分
学习树剖之前要先有线段树,还有dfs序这两个前置技能。我们知道对于线性结构的区间更新,单点查询这类题目需要用到树形结构,然而如果对一个树形结构区间更新,单点查询该怎么办呢,而树链剖分就是把树形结构哈希成线性结构,然后套用线段树求解。树剖的基本概念:重链:链接当前节点son数组的链。dep:当前节点的深度siz:当前节点的所有子节点个数son:当前节点的子节点中size最大的
2018-01-21 11:30:09 103
javaee网盘项目
2019-02-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人