摘要: 1 namespace Hash 2 { 3 const ll N=50000; 4 const ll H=999979; 5 struct adj 6 { 7 ll nxt,v,num,val; 8 }e[N]; 9 ll head[H],ecnt=0; 10 void init() 11 { 12 ... 阅读全文
posted @ 2017-11-29 17:49 MSPqwq 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 题目: 给你A,B,K 求最小的x满足Ax=B (mod K) 题解: 如果A,C互质请参考上一篇博客 将 Ax≡B(mod C) 看作是Ax+Cy=B方便叙述与处理. 我们将方程一直除去A,C的最大公约数进行变形,最终使得A和C互质. 将方程同除d1=gcd(A,C),得到B1=A/d1*Ax-1 阅读全文
posted @ 2017-11-29 17:25 MSPqwq 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目: 给出A,B,C 求最小的x使得Ax=B (mod C) 题解: bsgs算法的模板题 bsgs 全称:Baby-step giant-step 把这种问题的规模降低到了sqrt(n)级别 首先B的种类数不超过C种,结合鸽巢原理,所以Ax具有的周期性显然不超过C 所以一般的枚举算法可以O(C) 阅读全文
posted @ 2017-11-29 15:57 MSPqwq 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题面就是让你求两个超级大整数,求GCD 题解: 题目本意应该是出题人想考考高精度取膜 但是可以通过一种神奇的Stein算法来做 由J. Stein 1961年提出的Stein算法很好的解决了欧几里德算法中的这个缺陷,Stein算法只有整数的移位和加减法,为了说明Stein算法的正确性,首先必须注意到 阅读全文
posted @ 2017-11-28 17:21 MSPqwq 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题面就是让你解同余方程组(模数不互质) 题解: 先考虑一下两个方程 x=r1 mod(m1) x=r2 mod (m2) 去掉mod x=r1+m1y1 ......1 x=r2+m2y2 ......2 1-2可以得到 m1y1-m2y2=r1-r2 形同ax+by=c形式,可以判无解或者解出一个 阅读全文
posted @ 2017-11-28 15:15 MSPqwq 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题目: 人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。 通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。 然后再给出一个起始日期,要求从这一天开始,算出 阅读全文
posted @ 2017-11-27 20:03 MSPqwq 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目 给出一个循环for(int i=A;i!=B;i+=C) 在mod (1<<k) 下是否可以退出循环 是,输出时间,否输出FORVEER 题解: 题意可以变换成 A+Cx=B (mod 1<<k) 去掉mod之后变成 Cx=(B-A)+(1<<K)*y 是否有整数解 令 a=C,b=(1<<K 阅读全文
posted @ 2017-11-27 17:34 MSPqwq 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目: 求ax+by=c的一组解,使得abs(x)+abs(y)尽量小,满足前面前提下abs(ax)+abs(by)尽量小 题解: exgcd之后,分别求出让x尽量小和y尽量小的解,取min即可 阅读全文
posted @ 2017-11-27 16:53 MSPqwq 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 各种数论的模板 阅读全文
posted @ 2017-11-26 14:27 MSPqwq 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 题解: 要求s+px=t+qx (mod L) 移项 (p-q)x=t-s (mod L) 等价于 (p-q)x+Ly=t-s 即ax+by=c的方程最小非负根 exGcd后乘个C 阅读全文
posted @ 2017-11-26 14:26 MSPqwq 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目: 给一个n,n的网格,点可以遮挡视线,问从0,0看能看到多少点 题解: 根据对称性,我们可以把网格按y=x为对称轴划分成两半,求一半的就可以了,可以想到的是应该每种斜率只能看到一个点 因为斜率表达式k=y/x,所以直线上的点都满足这个关系,那么显然当gcd(x,y)==1的时候这个点是直线上的 阅读全文
posted @ 2017-11-26 13:37 MSPqwq 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个x,求最长的排列满足开头是1,结尾是x,前一个数是后一个数的因子 输出长度和这样序列的个数 题解: 把x分解质因数,质因数个数就是答案,接下来考虑怎么求个数 显然这是一个可重集合全排列问题,设有n个元素 答案就是n!/每个元素出现次数的阶乘 阅读全文
posted @ 2017-11-26 13:10 MSPqwq 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 原题链接 对于以u为根的子树,后代节点的dfn显然比他的dfn大,我们可以记录一下回溯到u的dfn,显然这两个dfn构成了一个连续区间,代表u及u的子树 剩下的就和树剖一样了 阅读全文
posted @ 2017-11-24 19:53 MSPqwq 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 原题链接 肯定是树链剖分的题啦 树剖怎么做可以看我上一篇博客 如果我们已经剖完了: 然后考虑怎么维护重链和查询 用线段树维护的时候当前区间的区间颜色个数应该等于左儿子+右儿子,但是当左儿子的右端点和右儿子的左端点颜色一样,显然区间数要减1 所以每个节点存一下左端点的右端点颜色正常维护即可 考虑查询, 阅读全文
posted @ 2017-11-24 15:05 MSPqwq 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 原题链接 树链剖分的模板题:在点带权树树上维护路径和,最大值和单点修改 这里给出几个定义 以任意点为根,然后记 size (u ) 为以 u 为根的子树的结点个数,令 v 为 u 所有儿子中 size 值最大的一个儿子,则 ( u , v ) 为重边, v 称为 u 的重儿子。 u 到其余儿子的边为 阅读全文
posted @ 2017-11-23 19:01 MSPqwq 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题面: 给一个序列,求最长的合法区间,合法被定义为这个序列的gcd=区间最小值 输出最长合法区间个数,r-l长度 接下来输出每个合法区间的左端点 题解: 由于区间gcd满足单调性,所以我们可以二分区间长度,用st表维护区间最小值和gcd即可 阅读全文
posted @ 2017-11-22 19:09 MSPqwq 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 题意: 求区间max-min st表模板 阅读全文
posted @ 2017-11-22 17:26 MSPqwq 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题面: 给出一群牛,每个牛牛有一个坐标和val,每两对牛牛之间的w被定义为 dis(x[i],x[j])*max(val[i],val[j]) 求w的和 题解: 我们如果按val排序,对于i来说,和他构成的权值乘的是val[i]的显然是1~i-1的牛牛 设有a个牛在他前面,b个牛在他后面 公式变成v 阅读全文
posted @ 2017-11-22 16:46 MSPqwq 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 #define N 40010 5 using namespace std; 6 int t[N],n,x,y,sum[N]; 7 void modify(int x) 8 { 9 while (x0) 16 ret+=t[x],x-=x&-x; 17 return ret; 18 }... 阅读全文
posted @ 2017-11-22 14:57 MSPqwq 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给坐标轴1~n的点,每个点有一个权值,从一个点走到下一个点需要1s,如果当前时间是权值的倍数就要多花1s 给出q组操作,C表示单点修改权值,A表示询问0时刻x出发到y的时间 题解:因为权值只有2,3,4,5,6,所以60是一个周期,我们维护一颗线段树,维护0到59时刻出发从l到r+1用的 阅读全文
posted @ 2017-11-21 15:50 MSPqwq 阅读(148) 评论(0) 推荐(0) 编辑