自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ACdreamer

欢迎关注知乎:https://www.zhihu.com/people/acdreamers/activities

  • 博客(27)
  • 资源 (3)
  • 收藏
  • 关注

原创 pollard_rho大数分解Java版

代码:import java.math.BigInteger;import java.security.SecureRandom; class PollardRho{ private final static BigInteger ZERO = new BigInteger("0"); private final static BigInteger ONE

2013-07-31 19:05:12 2034

原创 任意给4条边求形成四边形面积最大值

题目:任意给4条边求形成四边形面积最大值。结论:形成的四边形的四个顶点都在它的外接圆上,面积S满足:其中这也即是圆内接四边形的面积公式。证明过程:首先我们把四边形的四个顶点和四条边顺次分别记为:A,B,C,D和a,b,c,d,角B和D分别记为,设面积为S这样就可以写推导过程了:,亦即   (1)

2013-07-29 13:19:31 14468 3

原创 HDU4382(特殊的矩阵连乘)

题目:Harry Potter and Cyber Sequence Generator题意,有两个容器C1,C2,初始的时候C1中有一个数的值为V,给你K个操作,每次都重复这K个操作N遍,最后问你C2中的数是     多少。N1:循环操作的次数巨大,敏感的想到这是矩阵连乘的题目。2:K个操作可以得出一个矩阵,N个K操作就是这个矩阵的N次方3:最后再乘以初始矩阵

2013-07-29 09:21:35 1505

原创 连分数

对于连分数,我们可以表示为:对于无理数,ai一定是无穷数列,反之,对于有理数,ai一定是有穷数列。对于上式中的p与q,有递推式:而对于sqrt(n)来说,ai中的首项为一个单独的整数,除了它后面的都会循环。下面我们来分析一个关于连分数的题目。题目:连分数题意:给两个整数n和k,n分子分母对1000000007取

2013-07-27 19:11:50 4607

原创 x^A=B(mod C)的解 (离散对数与原根)

题目:Broot题意:给出k,m,newx的值,求方程x^k(mod m)=newx的解,其中m为素数。解法步骤:(1)先暴力求m的原根g(2)大步小步求g^t1(mod m)=newx(3)则g^(t1+n*t2)(mod m)=newx,t2=p-1(4)x=g^y(mod m),x^k=(g^y)^k=g^(yk)=g^(t1+n*t2)那么就是求

2013-07-26 20:49:17 6946 1

原创 高次同余方程式的解数及解法

定理一:若是k个两两互质的正整数,,则同余式                                  (1)与同余式组         (i=1,2,3,...,k)          (2)等价,并且若用表示对模的解数,T表示(1)式对模m的解数,则:所以求多项式的解可以用上述方法,先分解分别求出各个解再合并。定理二:p是

2013-07-26 18:41:15 13699

原创 各种排序的原理

1.选择排序:  首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换;  再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换;  重复上述操作,共进行n-1趟排序后,排序结束。void Selesort(int *Array,int n){ int i,j,k,tmp; for(i=0;i<n-1;i

2013-07-26 11:10:33 3164

原创 HDU4611(找循环节)

题目:Balls Rearrangement#include #include #include using namespace std;typedef long long LL;LL n,a,b,x,y,s,t;LL gcd(LL a,LL b){ return b? gcd(b,a%b):a;}int main(){ int T;

2013-07-25 10:52:09 1773

转载 HDU4604(双端队列与DP)

题目:Deque #include #include #include #include #include #include #define maxn 100010using namespace std;int val[maxn];int N;void DP(int num[],int dp[],int same[]){ int

2013-07-24 12:45:10 1495

原创 HDU4607(求树中的最长链)

题目:Park Visit题意:给定一棵树,从树中的任意选一个顶点出发,遍历K个点的最短距离是多少?(每条边的长度为1)解析:就是求树的最长链,假设求出的树的最长链所包含的点数为m,那么如果K#include #include #include using namespace std;const int N=200010;int head[N],

2013-07-23 18:24:45 4390

原创 NEFU709(第K个圆的半径)

题目:The Kth Circle 题意:平面上给定n个点的坐标,我们可以选其中3点构成一个圆,当然也就有3段弧,我们定义第K个圆满足条件:(1)除了已选的3个点,剩下的n-3个点中有K个点在圆内,有n-K-1个点在圆外(2)保证所有的点在圆的三条弧中其中一条弧的一侧解析:本题实际上就是得到这样一个结论,满足条件的圆其中有两点一定在这些点的凸包上,并且这两点相邻,这样我

2013-07-22 20:00:16 1152

原创 BZOJ3231(矩阵连乘,稍有点复杂)

题目:3231: [Sdoi2008]递归数列 题意:一个由自然数组成的数列按下式定义: 对于i :ai = bi对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k其中bj和cj (1)是给定的自然数。写一个程序,给定自然数m <=n, 计算am +am+1 + am+2 + ... + an,并输出它除以给定自

2013-07-22 15:45:17 2035

原创 最小覆盖圆的增量算法

题意:给出平面上的一些点,要求用一个最小的圆,把所有的点包围起来。最小覆盖圆, 增量法:假设圆O是前i-1个点得最小覆盖圆,加入第i个点,如果在圆内或边上则什么也不做。否,新得到的最小覆盖圆肯定经过第i个点。然后以第i个点为基础(半径为0),重复以上过程依次加入第j个点,若第j个点在圆外,则最小覆盖圆必经过第j个点。重复以上步骤(因为最多需要三个点来确定这个最小覆盖圆,

2013-07-22 11:33:33 7976

原创 hdu3007(最小覆盖圆问题)

题目:Buried memory 最小圆覆盖,很经典的问题。题目大概是,平面上n个点,求一个半径最小的圆,能够覆盖所有的点。 如果要求一个最小覆盖圆,这个圆至少要由三个点确定。有一种算法就是任意取三个点作圆,然后判断距离圆心最远的点是否在圆内,若在,则完成;若不在则用最远点更新这个圆。这里不仔细介绍。 这里介绍的算法是,先任意选取两个点,以这两个点的连线为直径作圆。

2013-07-22 11:17:02 3805

原创 HDU4367(线段相交与斐波那契数列)

题目:The war of virtual world 题意:在平面内给n个点的坐标,n小于等于200,在这n个点中先选两个点a,b,有(n-1)*n/2种,对于每一种情况,分别求出Ki,Ki等于选定的a,b直线与剩下的点的交点数,求表达式:的值。 #include #include #include #include using namespace s

2013-07-21 21:04:55 1276

原创 HDU4364(模拟矩阵乘法)

题目:Matrix operation 本题就是直接模拟矩阵乘法即可,主要是这里对十六进制的处理有技巧。#include #include #include using namespace std;int a[4][4];int ans[4][4];int x[4][4]={ 0x2,0x3,0x1,0x1, 0x1,0x2,0x

2013-07-21 19:16:38 1156

原创 素数与线性筛选法初级版

题目:不可摸数 题意:s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何数m,s(m)都不等于n,则称n为不可摸数.包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数,如果n是不可摸数,输出yes,否则输出no#include #include #include #in

2013-07-21 10:45:12 2143

转载 HDU4357(数学思维题)

题目:String change 把26个字母看成0~25对应的数字,当数慢慢增大时就对26取模,则字符串有一个总和s1,要使其变为末状态的总和s2;那么每交换一次s1要加2,故,s1+s2必须为偶数。两个字母单独处理,两个以上时,以三个数字为例,(a,b,c)为三个数,则有(a,b,c)->(a,c+1,b+1)->(c+2,,a+1,b+1)->(c再分别和a,b各交换12次,

2013-07-20 14:41:01 1940

原创 HDU4099(斐波那契数列与字典树)

题目:Revenge of Fibonacci 题意:给出斐波那契数列的前k位,k不超过40,找出最小的正整数n,满足F(n)的前k位与给定数的前k位相同,斐波那契数列的项数不超过100000。 解析:本题可以分为两步:第一步就是预处理出100000项斐波那契数列的前40位,插入到字典树中。第二步就是查询匹配求最小的n。对于第一步,我们可以把斐波那契数列精确到50多位,

2013-07-20 13:08:11 3172

原创 HDU4353(找一个三角形面积与它里面包含点的比值最小)

题目:Finding Mine 题意:给你n个点,m个金矿点,找一个多边形,使得多边形的面积除以这个多边形内的金矿点个数的比值最小。思路:其实就是找一个比值最小的三角形就行了,因为其他的三角形的比值都比它大,组合成多边形后势必会将比值变大。可以简短的证明的。#include #include #include #include #include using

2013-07-19 21:12:43 1540

原创 HDU4389(数位DP)

题目:X mod f(x) 题意:问在区间[A,B]之间,有多少个数满足,x%f(x)=0,f(x)代表x的各位数字之和。 解析:本题一是可以通过打表来计算,二是可以通过数位DP来求解。我们先来说打表吧。。。对于打表,当然我们不能直接打,这里有技巧。我们可以这样:每隔100000我们统计一次,这样在10^9范围内,我们得到10000个数。然后就很好解决了。。。#in

2013-07-13 15:15:12 20014 1

原创 HDU4324(强连通的Tarjan算法)

题目:Triangle LOVE 题意:给一个图,问是否存在三个点构成的环。只需求出极大连通分量,判断它的顶点是否大于等于3,如果是存在,否则不存在。#include #include #include using namespace std;const int N=2005;int head[N],low[N],dfn[N],stack[N];

2013-07-10 20:29:58 1900

原创 POJ1734(floyd求最小环的路径)

题目:Sightseeing trip 题意:求一个图中最小环,输出路径。#include #include #include using namespace std;const int N=105;const int INF=9999999;int map[N][N],dist[N][N];int road[N][N],path[N];in

2013-07-10 16:16:21 2939

原创 (HDU4324)判断一个图中是否存在两点的出度相同

本问题很简单,对于图中我们先用一个数组统计每个点的出度大小,然后排序,然后就可以看是否存在相邻的两个数组值是否相等就行了。#include #include #include #include using namespace std;const int N=2500;int out[N];char str[N][N];int main(){

2013-07-10 14:29:43 1568

原创 HDU4321(位运算二进制1的统计)

题目:Arcane Numbers 2 #include #include #include using namespace std;typedef long long LL;void Solve(LL a,LL b,LL n){ LL cnt=0; LL max=b+a*n; for(LL i=0;i<64;i++)

2013-07-10 14:01:11 1816 1

原创 大数开方(Java版)

题目:大数开方 Java代码:适合被开方数不超过1000位的。import java.util.*;import java.math.*;public class Main{ public static void main(String[] args) { Scanner cin=new Scanner(

2013-07-09 20:34:48 4164

原创 HDU3929(容斥原理)

题目:Big Coefficients 题意:F(x) = (1+x)^a1 + (1+x)^a2 + ... + (1+x)^am,求系数是奇数的项的个数。容斥原理:递归形式dfs(int beg,set S,int sym){ ans+=num(S)*sym; for(int i=beg;i<=n;i++) dfs(i,S∩A[i

2013-07-09 13:02:50 1966

Fibonacci数列与矩阵连乘

适合ACM-ICPC竞赛中关于Fibonacci数列和矩阵连乘的学习

2014-01-19

计算几何 旋转卡壳

计算几何中旋转卡壳的好资料,讲解清晰易懂,讨论了旋转卡壳中的很多经典问题

2013-06-27

ACM数论概论好书

本书是对于ACM编程数论的好书,有很大帮助哦!

2013-05-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除