- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 hdu1221
求矩形和圆是否相交或相切。#include #include #define judge(x,y) x<y||fabs(x-y)<0.00000001double dis(int x,int y,int a,int b){ return (x-a)*(x-a)+(y-b)*(y-b);}int main(){ int T; scanf(
2014-04-29 20:10:40 1546
原创 hdu1214
居然没有想出来,唉。归正传。这题就是在求一串数在每次只能对调相邻两位时,要得到其逆序最少要移动多少次。在直线上移动很简单,类似于冒泡排序的方法,一个数不断向上冒,直到最终位置。不难得到其需要移动的次数公式为n*(n-1)/2。其中n为总点数。那么在圆环上移动又会如何呢?应该会不一样这是我们直观的感受。事实也是如此,移动的过程是将圆环分为两段,分别移动。那么又在何处分段呢?答案是尽量
2014-04-27 18:28:07 1067
原创 hdu1211
RSA is one of the most powerful methods to encrypt data. The RSA algorithm is described as follow:> choose two large prime integer p, q> calculate n = p × q, calculate F(n) = (p - 1) × (q - 1)
2014-04-27 16:55:07 765
原创 hdu1210
Eddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1,2,3..n,n+1,..2n。这也是最初的牌的顺序。通过一次洗牌可以把牌的序列变为n+1,1,n+2,2,n+3,3,n+4,4..2n,n。那么可以证明,对于任意自然数N,都可以在经过M次洗牌后第一次重新得到初始的顺序。编程对于小于100000的自然数N,求出M的值。
2014-04-27 15:59:48 754
原创 hdu1164
水题,因式分解#include #include int num=0;int prime[10000];int judge(int n){ int i; for(i=2; i<=sqrt((double)n)+0.5; i++) if(n%i==0)return 0; return 1;}void init(){
2014-04-27 14:11:28 636
原创 hdu1152
题意很简单,给你奇数个点,中间一个点为中心点,也可以说是原点,这样,就有了四个象限,左上,右下象限的点的个数为O的得分,右上,左下象限的点的个数为S的得分,最后输出得分就可以了。连排序都不需要。。。 #include#includeusing namespace std;int main(){ int i,n,point[200005][2]; whil
2014-04-25 16:19:11 556
原创 hdu1143
3*N 的矩阵可以由 1*2 的小矩阵组成,问你有多少种情况。首先来讲,如果n为奇数,必然无解。 当n为偶数时,一个比较直观的思路就是把大矩形用竖线切出左边一部分,然后递归求解,就像UVA_10359那样,直接考虑最左边一个小矩形是如何构成的我们就可以递归得到f(n)递推式。 虽然这个题目乍看上去小矩形似乎拼法比较多,而且要拼出一个不能再用竖线切分的小矩形似乎拼的方法也并不直
2014-04-24 22:36:16 1380 1
原创 hdu1141
//求n! < 2^m最大的n,其中m为计算机位数。//两边对数:log(1) + log(2) +...+ log(n) < m* log(2)。#include #include int main(){ int t, n, i; double r; while (~scanf("%d", &t), t) { n = (t - 1960) / 10 +
2014-04-24 21:00:53 770
原创 hdu1102
prim算法的模板题。唯一区别就是对已经存在的路,路径长度设为0。#include #include #include #define MAX 0x3f3f3f3fusing namespace std;int n,m,vis[105],low[105],dis[105][105];int prim(){ int i,ans=0,pos=1; m
2014-04-24 15:31:42 911
原创 hdu1110
判断后面的矩形(x,y)能否放入前面的矩形(a,b)。#include #include #include using namespace std;double a,b,x,y;bool judge(){ if(a*b<=x*y)return false; if(a>x&&b>y)return true; if(b<=y)return fa
2014-04-24 15:01:19 1235
原创 hdu1100
给你二叉树树的标号,画出这颗二叉树。如2号树应该画成x(x)思想:dfs(m,n)表示m个节点的第n棵树。然后递归下去做。直到dfs(1,1),直接输出X #include #include #include using namespace std;int ct[19]= {1,1,2,5,14,42,132,429,1430,4862,16796,58786,20
2014-04-24 14:09:32 1150
原创 hdu1099
#include #include long long gcd(long long a,long long b){ if(b==0) return a; return gcd(b,a%b);}int leng(long long x){ int num=0; while(x!=0) { x
2014-04-22 21:28:53 875
原创 hdu1066
求N!的非零末尾位(吉大ACM模板)#include #include #define MAXN 10000int lastdigit(char* buf){ const int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; int len=strlen(buf),a[MAXN],i,c,ret=1;
2014-04-22 19:45:12 1283
原创 并查集(两个优化—按秩合并、路径压缩) poj2492
并查集有两个优化。一、按秩合并描述:就是在对两个不同子集连接时,按照rank来连,也就是rank低的连在rank高的下面。rank高的做父亲节点。作用,这样类似维护了一棵树,树是rank高的在上。二、路径压缩描述:假如fa数组已经嵌套了N层,那么传统的做法去找祖先要做N次,当N很大时,这种做法很没效率。这是朴素查找的代码,适合数据量不大的情况:int findx(i
2014-04-20 23:00:53 1951
原创 线段树 体积并——hdu3255
#include #include #include #include #define LL __int64 using std::sort; const int nsize=33333; struct Matrix { int x1,x2,y1,y2,s
2014-04-07 16:04:48 587
原创 线段树 矩形并
http://www.cnblogs.com/ka200812/archive/2011/11/13/2247064.html给定一个矩形的左下角坐标和右上角坐标分别为:(x1,y1)、(x2,y2),对这样的一个矩形,我们构造两条线段,一条定位在x1,它在y坐标的区间是[y1,y2],并且给定一个cover域值为1;另一条线段定位在x2,区间一样是[y1,y2],给定它一个cover值为
2014-04-07 16:02:24 619
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人