倍增算法
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
求自然数幂和的各种方法(还有坑)
求∑i=1n1imodp\sum_{i=1}^{n}{i^k}\mod p 高斯消元 一个定理,k次方和一定可以由0~k-1次方和表示出来,设方程组接出来就好了。 O(k^3) 倍增 我们设f(n,k)=∑i=1nikf(n,k)=\sum_{i=1}^{n}i^k 怎么算呢? 我们采用分治思想。 如果n是奇数那么 f(n,k)=f(n−1,k)+nk原创 2016-03-18 19:00:45 · 1375 阅读 · 0 评论 -
【NOIP2012提高组】开车旅行
Description现在有n个城市,每个城市有它的高度HiH_i,保证每个HiH_i互不相同。我们定义两个城市之间的距离disi,j=|Hi−Hj|dis_{i,j}=|H_i-H_j|,并且只能从编号小的城市去到编号大的城市。现在有两个人,小A和小B要开车(雾)去旅行。小A先开一天,小B再开一天。每一天都可以从一个开到另一个城市。小A会选择去离当前城市第二近的城市,小B会选择去离当前城市最近的那原创 2016-03-14 20:47:01 · 3573 阅读 · 0 评论 -
SA模板
sa模板(pascal倍增)for i:=1 to n do begin s[i]:=t[i];x[i]:=ord(s[i]); if x[i]>max then max:=x[i]; inc(ws[x[i]]); end; for i:=1 to max do inc(ws[i],ws[i-1]); for i:=n原创 2016-03-25 21:38:11 · 927 阅读 · 0 评论 -
Street
Description给出n个点,m条有权边,现对于每一条边,你需要回答出包含这条边的最小生成树的总边权值。 n,m<=2*10^5Solution题解和题意一样简洁系列。 首先求出mst,然后对于每一条不在mst里面的边,相当于把它和mst中的一条边替换。 若是(x,y)这条边,那么就是在生成树中x到y的路径上选择一条边权最大的边替换。 倍增最大值即可。Code#include<cstdi原创 2016-07-08 15:45:10 · 735 阅读 · 0 评论 -
[UOJ#245][UER#7B]天路
Description给出n个数,对于每个k(2<=k<=n),求出最大的一个ans,使得存在一个连续的长度为k的区间中最大值和最小值的差为ans。 答案与标准答案的误差不超过5%即为正确 n<=10^5,ai<=10^6Solution什么鬼?UER都出近似算法了? 这还真NOIP~~ 好吧,其实这并不是什么高级的近似算法,什么不等式乱搞的东西。。。 你只需要对答案划分一下阶段。。。原创 2016-10-21 20:27:06 · 754 阅读 · 0 评论 -
[CF 702E]Analysis of Pathes in Functional Graph
Description给出一张n个点,n条边的有向图。每个点的出度均为1,每条边有边权。 求:从每个点出发走k条边,所有方案中的边权和和最小值。 n<=10^5,k<=10^10Solution由于最近颓总在刷一些C、D题,今天闲着没事干随便找了道E题来刷~~ 然而这道E题不是水题吗? 我才不会说我找了道通过人数三位数的E题呢 看到k这么大,肯定想到有一些神奇的log算法辣== 然后发现原创 2016-10-14 20:20:37 · 566 阅读 · 0 评论 -
【NOIP2016提高A组五校联考1】排队
Description给出一棵n个节点以1为根的树,和m次操作。 每次操作把x个人扔进这棵树。 每个人会选择当前节点中一个没有人且编号最大的节点走过去。 问最后一个人停在哪个节点。 或者把x这个节点的人删除,把它上面的所有人往下移一格,问移动了多少人。 n,m<=10^5Solution你有木有觉得这个走的方法很像dfs序的遍历? 那么我们可以构造出这个特殊的dfs序,不过每次我们选择编原创 2016-10-04 20:52:50 · 869 阅读 · 0 评论