自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 C++ 大数操作类

<br />class BigNum;istream& operator>>(istream&, BigNum&);ostream& operator<<(ostream&, BigNum&);#define MAXN 9999#define MAXSIZE 1000#define DLEN 4class BigNum{public: int a[MAXSIZE]; int len;public: BigNum(){len = 1;memset(a,0,s

2011-05-12 09:59:00 1940

原创 KMP算法模板+POJ3461实现

<br />void preKmp(char *src, int m, int *rule){ int i=0,j=-1; rule[0]=j; while(i<m){ while(j!=-1 && src[j] != src[i]) j=rule[j]; i++,j++; if(j>=m) rule[i]=rule[j-1]; else rule[i]=j; }}void kmp(char *src, int m

2011-05-11 11:19:00 599

原创 STL map的使用 POJ2503

<br />BabelfishTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 18487 Accepted: 7978<br />DescriptionYou have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a

2011-04-27 11:11:00 453

原创 求组合个数 POJ2249 以及一种组合的输出方法

DescriptionIn how many ways can you choose k elements out of n elements, not taking order into account? Write a program to compute this number.InputThe input will contain one or more test cases. Each test case consists of one line containing two integers n

2011-04-27 09:42:00 589

原创 快速输出指定范围所有素数

<br /> #include<stdio.h>#include<string.h>bool flag[2000000];int main(){ int N; //freopen("E://input.txt","r",stdin); for(int i=2;i<=1415;i++) if(!flag[i]) for(int j=i<<1;j<=2000000;j+=i) flag[j]=true; while(true) { sca

2011-04-27 09:05:00 414

原创 POJ1611 The Suspects 并查集求解

<br />The SuspectsTime Limit: 1000MS Memory Limit: 20000KTotal Submissions: 10780 Accepted: 5110<br />DescriptionSevere acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized as a global threat in mid-March 2003. To m

2011-04-25 10:40:00 339

转载 整数划分问题的解决-POJ1664

<br /> 放苹果Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 17189 Accepted: 10849<br />Description把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。<br />Input第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。<br />Output对

2011-04-25 09:07:00 1226 1

原创 求大数阶乘位数方法

<br />//斯特林公式<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include <math.h>using namespace std;#define PI 3.1415926double e=2.7182818284;int main(){ int t,n; freopen("E://input.txt","r",stdi

2011-04-22 15:52:00 457

原创 使用一维数组的LCS解法

<br />回文字符串时间限制:3000 ms  |  内存限制:65535 KB难度:4描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出整数N(0<N<100)<br />接下来的N行,每行一个字符串,每个字符串长度不超过1000.输出每行输出所需添加的最少字符数样例输入1Ab3bd样

2011-04-22 09:56:00 1247

原创 Dijkstra/Floyd-Warshall 最短路径算法

描述南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱。现在已知在任意两个城市之间的路行军所需的时间,你作为南将军麾下最厉害的程序员,请你编写一个程序来告诉南将军第一个分队到达叛乱城市所需的时间。注意,两个城市之间可能不只一条路。 输入第一行输入一个整数T,表示测试数据的组数。(T每组测试数据的第一行是四个整数N,M,P,Q(1随后

2011-04-16 10:54:00 1278

原创 求大数余数方法

<br />例:  除数为10003<br /> <br /> #include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;char matrix[1000001];int main(){ int t,i,ssave,len; //freopen("E://input.txt","r",stdin); cin>>t; w

2011-04-16 09:59:00 1062

原创 矩形嵌套的单调递增子序列解决

<br />矩形嵌套时间限制:3000 ms  |  内存限制:65535 KB难度:5描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。输入第一行是一个正正数N(0<N<10),表示测试数据组数,<br />每组测试数据的第一行是一个正正数

2011-04-16 09:54:00 1764

原创 康托展开及其逆运算

<br />一、康托展开<br /><br />(1)找出45231在这个排列中的顺序<br />比4小的数有3个<br />比5小的数有4个但4已经在之前出现过了所以是3个<br />比2小的数有1个<br />比3小的数有两个但2已经在之前出现过了所以是1个<br />比1小的数有0个<br />二、康托展开的逆运算<br /><br />(1)找出第96个数<br />首先用96-1得到95<br />用95去除4! 得到3余23<br />用23去除3! 得到3余5<br />用5去除2!得到2余1

2011-04-16 09:46:00 1119

原创 Bitset简单应用

<br />找球号(二)时间限制:1000 ms  |  内存限制:65535 KB难度:5描述在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是"ADD",表示向空箱子里放m(0<m<=100)个球,另一种是"QUERY”,表示说出M(0<M<=100)个随机整数ki(0<=ki<=100000100),分别判断编号为ki 的球是否在这个空箱子中(存在为"YES",否则为"NO"),先答出者

2011-04-16 09:42:00 554

原创 方程整数解条件

<br />二元一次不定方程的一般形式为ax+by=c。其中 a,b,c 是整数,ab ≠ 0。此方程有整数解的充分必要条件是a、b的最大公约数整除c

2011-04-16 09:40:00 1126

原创 求大数对9余数方法

<br />一个自然数除以9的余数,等于这个自然数各个数位上数字和除以9的余数。

2011-04-16 09:36:00 617

原创 RMQ算法求最大最小差值

<br />士兵杀敌(三)时间限制:2000 ms  |  内存限制:65535 KB难度:5描述<br />南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果。<br />所以,南将军经常问军师小工第i号士兵到第j号士兵中,杀敌数最高的人与杀敌数最低的人之间军功差值是多少。<br />现在,请你写一个程序,帮小工回答南将军每次的询问吧。<

2011-04-16 09:30:00 747

原创 树状数组运用

<br />士兵杀敌(二)时间限制:1000 ms  |  内存限制:65535 KB难度:5描述<br />南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。<br />小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。<br />南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。<br /> 输入只有一组测试数据<br />第一行是两个整数N,M,其中N表示士兵的个数(1<N<1000000),M表示

2011-04-16 09:28:00 424

原创 判定两线顺时针方向/逆时针

<br />两线向量叉乘,小于零为顺时针

2011-04-16 09:27:00 603

原创 过桥问题求解

<br />  如果给定N个(速度不同)的旅行者,根据结论九我们知道有一个最佳方案,在最初的4步里用模式一或模式二把最慢的两个旅行者移动到彼岸,于是问题被约化成N-2个旅行者的形式。问题在于应该选择哪一种模式。继续假设A、B为走得最快和次快的旅行者,过桥所需时间分别为a、b;而Z、Y为走得最慢和次慢的旅行者,过桥所需时间分别为z、y。<br />  在第六节中我们发现使用模式一移动Z和Y到彼岸所需的时间为:<br />    z + a + y + a<br />使用模式二移动Z和Y到彼岸所需的时间为:<b

2011-04-12 10:53:00 469

原创 求逆序数

<br />如 5 8 10 | 3 4两个有序序列,5>3,则8>3,10>3<br />核心 归并排序<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;int iMatrix[1000005];int CompactMatrix[1000005];__int64 fnum;void Merge(int a1,int a2,int b1,int b2)

2011-04-12 09:34:00 236

原创 大数相加

#include #define MaxLen 50char *BigNumPlus(char *a,char *b){ int i,t; char fa[MaxLen],fb[MaxLen],ret[MaxLen]; int lena=strlen(a),lenb=strlen(b); memset(ret,0,sizeof(ret)); if (lenb>lena) { strcpy(&fa[MaxLen-1-lenb],b); strcpy(&fb

2011-04-11 16:35:00 227

原创 最少需要数字个数

<br /> 描述Consider the natural numbers from 1 to N. By associating to each number a sign (+ or -) and calculating the value of this expression we obtain a sum S. The problem is to determine for a given sum S the minimum number N for which we can obtain S by

2011-04-11 15:05:00 552

原创 C++ ModPow 次方求模

<br />GCC编译器将__int64转为long long即可<br /> <br />int ModPow(__int64 a,__int64 k,__int64 m){ __int64 b=1; while(k>=1) { if(k%2==1) b=a*b%m; a=a*a%m; k=k/2; } return b;}

2011-04-11 09:25:00 1309

原创 最少乘法次数

最少乘法次数时间限制:3000 ms  |  内存限制:65535 KB 难度:3描述 <br />给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;<br />               输入 第一行m表示有m(1<=m<=100)组测试数据;<br />每一组测试数据有一整数n(0<n<=10000); 输出 输出每组测试数据所需次数s; 样例输入 3234样例输出 1

2011-04-11 08:42:00 2159 3

原创 约瑟夫环顺序输出方法及最终值计算

#includeint main() { int n, i, m, p; scanf("%d%d", &n, &m); i = 1; while (i n) p = p - n + (p - n - 1) / (m - 1); printf("%d/n", p); i++; } return 0;}

2011-04-09 15:18:00 822

原创 求连线数问题 Game of connections

<br />This is a small but ancient game. You are supposed to write down the numbers 1, 2, 3, . . . , 2n - 1, 2n consecutively in clockwise order on the ground to form a circle, and then, to draw some straight line segments to connect them into number pairs.

2011-04-09 15:00:00 433

原创 台阶问题求解

<br /> <br />有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?<br /> <br /> <br />此问题中,从第四级之后,f(n)=f(n-1)+f(n-1)<br /> <br /> #include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;int max(int a,int b){ return (a>b)?a:b;}

2011-03-16 21:04:00 363

原创 求最大公约数,最小公倍数

<br />设a为大数,b为小数<br />开始后a/b,将b放入a,得到余数放入b,继续此过程,余数为零时b中即为最大公约数<br />最小公倍数为a*b/最大公约数

2011-03-16 21:02:00 320

原创 最大连续子串和

<br />连续查找累加,并连续记录最大值,当前值,如当前值为负数则弃掉数据,跳到之后继续查找<br /> <br /> #include <stdio.h>#include <stdlib.h>int main(){ int t,ti,n,ni,*num,maxnum=-200,tempsum=0,startp; scanf("%d",&t); for (ti=0;ti<t;ti++) { scanf("%d",&n); num=new int[n];

2011-03-16 21:00:00 1498

原创 C++ String的替换,查找及gets使用 OJ113

#include #include #include #include using namespace std;int main(){ char temp[1100]; string sinput; while(gets(temp)!=NULL) { if (temp[0]=='/0'||temp[0]==EOF) { break; } sinput=temp; int pos=sinput.find("you"); whi

2011-03-16 17:37:00 1125

空空如也

空空如也

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

TA关注的人

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