摘要: /* 先初始化,再一个一个来;注意i,j,k范围的变化;参考大牛资料母函数(Generating function)详解 — TankyWoo*/#include using namespace std; int a[10005],b[10005]; int main() { int num1,num2,num3; while(cin>>num1>>num2>>num3) { if(num1==0&&num2==0&&num3==0) { break; } int sum = num1*1 + num2*2 + num3*5; 阅读全文
posted @ 2013-03-02 14:02 简洁是智慧的灵魂 阅读(182) 评论(0) 推荐(0)
摘要: /*初学母函数,练练手;*/母函数解:/* 求整数n的整数拆分方法; 题目理解为:将数字1、2、3、……n;每个数字可以选取无限次,求能组成n的情况总数 函数 (1+x+x^2+x^3……)(1+x^2+x^4……)(1+x^3+x^6+x^9……) …… 第一项的意义是:取0个1,取1个1、2个1,3个1……第二项的意义是:取0个2,取1个2…… 以此类推 ; 每个括号为一个大项,我们先将第一大项和第二大项乘起来,得到结果和第三项相乘…… 以此类推; */ #include using namespace std; int a[200],b[200]; //a[]存放... 阅读全文
posted @ 2013-03-01 20:37 简洁是智慧的灵魂 阅读(166) 评论(0) 推荐(0)
摘要: http://codeforces.com/contest/278/problem/B/**题目:字符串数目n 1≤n≤30,每个字符串的长度不超过20*含有两个字符的字符串有676种,大于600,*所以不是它的子串的字符串在两位中就产生了*多谢大牛指点。。。*/#include #include #include #include using namespace std; char str[22]; bool s[26],ss[26][26]; //存放结果为一个字母、两个字母的情况 int main() { int n; cin>>n; while(n--) { ... 阅读全文
posted @ 2013-03-01 18:11 简洁是智慧的灵魂 阅读(126) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1133查看维基百科,对卡特兰数公式证明是这样的:http://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0令1表示进栈,0表示出栈,则可转化为求一个2n位、含n个1、n个0的二进制数,满足从左往右扫描到任意一位时,经过的0数不多于1数。显然含n个1、n个0的2n位二进制数共有个,下面考虑不满足要求的数目。考虑一个含n个1、n个0的2n位二进制数,扫描到第2m+1位上时有m+1个0和m个1(容易证明一定存在这样的情况),则后面的0-1排列中 阅读全文
posted @ 2013-01-14 15:12 简洁是智慧的灵魂 阅读(150) 评论(0) 推荐(0)
摘要: /*Cn = C(2n,n) / (n+1)或者 Cn = (4*n - 2 ) *C(n-1)/(n+1);或者 Cn = C(zn,n)-C(2n,n+1);以下代码是将大数处理为一位一位的数,比如12345存储为a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 4;*/#include #include #include using namespace std; int a[103][105]; //大数卡特兰数 int b[103]; //卡特兰数的长度 void catalan() //求卡特兰数根据公式... 阅读全文
posted @ 2013-01-13 16:54 简洁是智慧的灵魂 阅读(198) 评论(0) 推荐(0)
摘要: /*按照大整数的模版来;这个类型的斐波纳数列是前四项和,那么我们就讲其称为s1,s2,s3,s4,那么四项和即为s1+s2与s3+s4的和;运用一个知识点,就是二维数组str[n][m] 的第i行的起始地址为str[i];代码如下:*/#include #include int F[7061][550],c[550]; //7060时位数为2012 const int Base=10000; //万进制 int 最大,如果只用 +,-,可加大Base=1000000000 int ONE[]={1,1}; //大整数 1 int ZERO[]={1,0}; //大整数 0 int comp.. 阅读全文
posted @ 2013-01-10 21:19 简洁是智慧的灵魂 阅读(349) 评论(0) 推荐(0)
摘要: 其实大整数的问题都是在像我们打草稿的时候列竖式一样的,不要告诉我你不知道什么叫竖式~!其实我开始也不知道它叫这个名字;所谓竖式,就是你打草稿算算术的方法,小学知识;比如你写 11+9:11+ 9----------20数A,B,求和,求差;数的长度不超过1000;贴个代码,先输入一个数,代表数据的组数n,然后输入n组A B#include using namespace std; #define base 4 #define M 10000 char s1[1000],s2[1000]; int A[251],B[251],sum[251]; int max(int a,int b) { .. 阅读全文
posted @ 2013-01-10 17:29 简洁是智慧的灵魂 阅读(261) 评论(0) 推荐(0)
摘要: /*陈彧 论文 信息学竞赛思维方法算法自己还没学太多,皮毛;写这篇只是读后总结,不是自己的经验阅读总结;*/当拿到一个题目时,首先我们会去找这个题目符合那个模型,不符合,然后是不是和哪个模型相似;纵向看,我们划分为:实验猜想及归纳、模块化(划归);横向:分类及分治、类比;所谓猜想及归纳,就是自己的灵感,当然我们不能胡思乱想一通,那你要从你的茫茫想法中捞出这么一个能够解决这个问题的思想谈何容易;猜想,首先如果我们个人知识、经验丰富。智商还挺高,那么你应该能多向搜索结合自己的知识储备来解决它,那么,如果你不满足这些特点呢;你是不是努力尝试着想把它缩小规模,找出规律看看,这就是试验思维;模块化,那就 阅读全文
posted @ 2013-01-09 16:34 简洁是智慧的灵魂 阅读(385) 评论(0) 推荐(0)
摘要: 头文件:string.hint strlen(const char* a) 字符串的长度int strcmp(char* a,char* b) 比较字符串int strncmp(char * a,char *b,int n)比较字符串的前n个字符int strcpy(char* a,char* b) 将b复制到aint strncpy(char* a,char* b,intn) 将b的前n个字符复制到aint strcat(char* a,char* b) 将b连接到a后面。int strncat(char* a,char* b,intn) 将b的前n个字符连接到a后面。char* strst 阅读全文
posted @ 2013-01-09 13:02 简洁是智慧的灵魂 阅读(140) 评论(0) 推荐(0)
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1720题目:http://acm.hdu.edu.cn/showproblem.php?pid=2057代码是同一个:简单的想哭。。。想了好复杂;#include int main() { int a,b; while(scanf("%x%x",&a,&b)!=EOF) { printf("%d\n",a+b); } return 0; }2057要用%I64X;在这里 你要明白的是 计算机存入的数据是二进制 0 1 所以scanf("% 阅读全文
posted @ 2012-12-05 22:49 简洁是智慧的灵魂 阅读(829) 评论(0) 推荐(0)