ACM脚印
网络二师兄
这个作者很懒,什么都没留下…
展开
-
140724暑期培训.txt
1、同余定理 (a+b)%c==(a%c+b%c)%c (a*b)%c==[(a%c)*(b%c)]%c 因为有的数在int范围内,但是两个的乘积却超过了int范围,这样可以避免运算过程中超过int范围 2、gcd函数(即最大公约数) int gcd(int a,int b) { return !b?a:gcd(b,a%b); }原创 2014-07-25 09:22:09 · 588 阅读 · 0 评论 -
140820暑期培训.txt
1、 在调用函数的时候,没有办法返回一个字符串。 如果想要通过函数调用得到一串字符串,那就只能用void,没有返回值。原创 2014-08-21 15:22:58 · 519 阅读 · 0 评论 -
140807暑期培训.txt
克鲁斯卡尔算法(Kruskal's algorithm)是两个经典的最小生成树算法的较为简单理解的一个。这里面充分体现了贪心算法的精髓。大致的流程可以用一个图来表示。这里的图的选择借用了Wikipedia上的那个。非常清晰且直观。 首先第一步,我们有一张图,有若干点和边 如下图所示: . . . . . . 第一步我们要做的事情就是将所有的边的长度排序,用排序的结果作为我们选择边原创 2014-08-06 21:28:33 · 540 阅读 · 0 评论 -
140819暑期培训.txt
1、对于判断是否可以组成三角形 两边之和大于第三边&&两边之差小于第三边 (需要同时满足) 2、 1>r*r 2>r 这两种形式,第二种要比第一种用的时间少。原创 2014-08-20 19:50:24 · 439 阅读 · 0 评论 -
140809暑期培训
1、用sort对结构体中字符串进行二级排序 #include #include using namespace std; struct s { int d; char c[10]; }ss[15]; bool cmp(s a,s b) { if(strcmp(a.c,b.c)!=0)原创 2014-08-11 05:47:30 · 811 阅读 · 0 评论 -
140811暑期培训.txt
1、printf常用的输出格式 标志 意义 1> - 输出结果左对齐,右边填空格;如果没有的话,则输出结果右对齐,左边填空格 2> + 输出符号(正号或负号) 3> 空格 输出值为正值是冠以空格,为负时冠以负号 4> # 对o类,在输出时加前缀0;对x类,在输出时加前缀0x 5> 0 对数值格式,原创 2014-08-12 11:33:02 · 526 阅读 · 0 评论 -
140813暑期培训.txt
1、 int a=4; //a为普通的整型变量 int &b=a; //b是a的引用变量 这里说明b变量是变量a的引用,b也等于4,之后这两个变量同步改变。 当a改变时b也同步改变,同样,当b改变时a也同步改变。 引用常用于函数形参中,采用引用型形参时,在函数调用时将形参的改变回传给实参,例如,有如下函数(其中的形参均为引用型形参): v原创 2014-08-14 08:31:01 · 611 阅读 · 0 评论 -
140815暑期培训.txt
1、1>对于强制转换类型 double型变为int型 (int)6.17 ==6.1 (int)6.91 ==6 强制转换的时候,他不会进行四舍五入,只会保留小数点前面的整数部分 2>若用%.nlf的话,比如: double d=6.74821; printf("%.2lf\n",d);原创 2014-08-15 21:36:35 · 393 阅读 · 0 评论 -
动态规划(1)-01背包
问题描述 有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是C[ i ],得到 的价值是W[ i ]。求解将哪些物品装入背包可使价值总和最大。 基本思路 每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即F[i,v]表示前i件物品恰放入一个容量为v的背包可以 获得的最大价值。则其状态转移方程便是:原创 2014-11-17 11:20:29 · 502 阅读 · 0 评论 -
150725培训心得(vector)
vector(不定长数组) 在C语言中,数组定义必须给定长度,但是有的时候太浪费空间,可以利用STL中vector函数来解决这个问题。 1 基本操作 (1)头文件#include (2)创建vector对象,vector vec; (3)尾部插入数字:vec.push_back(a); 尾部删除数字:vec.pop_ba原创 2015-07-25 11:46:45 · 563 阅读 · 0 评论 -
150727培训心得(Stack)
栈(statck) 这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。 在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。下面就给出栈的函数列表和VS原创 2015-07-27 18:13:55 · 641 阅读 · 0 评论 -
150720培训心得
1、大数运算 大数运算(即高精度运算),也就是指那些超过规定范围的数值运算(int范围为-22亿--+22亿),要利用数组来进行运算, 数组一位存储数值的一位,然后对应位数直接进行运算。 例如两数相加,输入的两个数值是用字符串形式,然后将其逆序转化为int型,然后顺序进行对位直接运算,然后再顺序判断数组 每一位的值是否需要进位并进位,然后逆序输出,输出的原创 2015-07-21 08:03:26 · 617 阅读 · 0 评论 -
150721培训心得(字典树)
字典树: 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 #define MAX 26 struct Trie { Trie *next[MAX];原创 2015-07-22 10:27:01 · 454 阅读 · 0 评论 -
140808暑期培训.txt
1、绝对值函数 abs()仅对整型求绝对值 对浮点数求绝对值使用fabs()函数。 2、连接字符串函数-----strcat(a,b) 将字符串b连接在字符串a后面 注意:字符串a的大小要足以容纳a+b 3、 void f(int a) { int i,j,k; for(i=1;i*i fo原创 2014-08-09 08:19:17 · 563 阅读 · 0 评论 -
140731暑期培训.txt
1、多边形面积的求法 /*解题思路: 对于求多边形的面积,关键是对叉乘的运用 将各个点连成环进行叉乘 多边形面积 = (相邻点之间叉乘和 )*0.5 注意首尾为同一个点,组成环 | | | | | | |原创 2014-07-31 21:28:45 · 538 阅读 · 0 评论 -
140806暑期培训.txt
1、结构体中字符串的qsort方法 struct In { int data; char str[100]; }s[100]; //按照结构体中字符串str的字典顺序排序 int cmp ( const void *a , const void *b ) {原创 2014-08-06 21:31:31 · 449 阅读 · 0 评论 -
140723暑期培训
1、若需要输入字符,千万记得加上 getchar(); --吸收换行符 2、判断素数 #include #include int main() { int i,n; scanf("%d",&n); if(n==0||n==1) printf("NO\原创 2014-07-23 23:52:06 · 411 阅读 · 0 评论 -
140722暑期培训
1、结构体数组 例: struct jiqi { int shijian; int shuiping; }str1[100500],str2[100500]; int main() { ... for(i=0;i scanf("%d%d",&s原创 2014-07-22 23:11:29 · 431 阅读 · 0 评论 -
140726暑期培训.txt
1、 输入多组数据的时候 while(scanf("%s",s)!=EOF) while(gets(s)!=NULL) 用gets和scanf不一样,要注意 2、 输入字符串的时候 scanf("%s",s); scanf遇到空格会自动停止输入原创 2014-07-28 08:13:55 · 656 阅读 · 0 评论 -
140721暑期培训
1. Runtime Error(RE) 找数组,一般是因为数组开小了 2. EOF三种形式 1》while(scanf("%d",&n)!=EOF) 2》while(scanf("%d",&n)==1) 若输入n个数据,则后面 ==n 3》while(~scanf("%d",&n)) 3.逗号运算符 (a++,b++)==b, 结果是最后一个原创 2014-07-22 23:02:17 · 321 阅读 · 0 评论 -
140801暑期培训.txt
1、N!的求法(大菲波数类似) #include #include int s[110000]; int main() { int n; int i,j,k,l,m; while(scanf("%d",&n)!=EOF) { memset(s,0,sizeof(s)); l=1; //控制位数 s[0]=1; for(i=1;i {原创 2014-08-01 21:38:52 · 621 阅读 · 0 评论 -
140725暑期培训.txt
1、若需要使用64位int 定义 __64int 类型 %I64d 2、Fibbonacci 数列 采用递归的方法 int F(int n) { if(n==1||n==2) return 1; else return F(n-1)+F(n-2); } void main(原创 2014-07-25 21:19:24 · 546 阅读 · 0 评论 -
140728暑期培训.txt
1、#include int main() { int s[2]; 1> int s[2]={0}; 只能在刚定义的时候用用这种方法初始化 int i; s[2]={0}; //不能这样对数组初始化 2> memset(s,0,sizeof(s)原创 2014-07-29 08:38:30 · 514 阅读 · 0 评论 -
140802暑期培训.txt
1、pow函数 #include pow(x,y)用来计算以x 为底的 y 次方值,然后将结果返回。 注意:pow函数返回值为double型 printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) ); (他也可以计算小数的小数次方) 2、动态规划: 动态规划过程是:每次决策依赖于当前状态,原创 2014-08-04 16:00:56 · 567 阅读 · 0 评论 -
140729暑期培训.txt
1、对于题目给出的已知数据是一个开始时间和一个结束时间的题 第一反应会是将开始时间进行排序 但这样做比较麻烦 做题应该多换几个角度和思维 将这类题按结束时间进行排序会简单的多 2、结构体 struct move //struct是结构体函数 { int a; //结构体成员 dou原创 2014-07-29 21:28:01 · 541 阅读 · 0 评论 -
140805暑期培训.txt
1、scanf("%s",s); //for(i=0;i //scanf("%d",s[i]); 输入数字的时候,每个数字之间必须隔一个空格电脑才能识别和分辨 若输入连续的11个数字,计算机会认为他是一个数字 只有1 8 3 3 6 8 6 3 0 9 9,计算机才能认为这是11个 所以用字符串 2、若题目给出了一个数学公式,让你求第 N项的值原创 2014-08-06 08:20:44 · 494 阅读 · 0 评论 -
140730暑期培训.txt
1、大数加减法 思路分析: 1、将数据当做字符串输入(gets(s)) 2、将字符型转换为整型,逆着存 char?int i=0,j=len-1, int[i++]=char[j--] 3、从首位开始相加, 若sum>9,int[i]=sum%10,int[i+1]+=sum/10原创 2014-07-31 10:52:31 · 569 阅读 · 0 评论 -
140804暑期培训.txt
1、母函数 母函数,顾名思义,就是母亲,那就说明,在这个函数里面还有儿子,即子函数。说白了,就是子函数可以看作是母函数的一个子集。 而如何把这些子函数用一个母函数来表示呢?即所谓的通项公式。 通俗理解为:母函数就是一个多项式前面的系数的一个整体的集合,而子函数就是这个多项式每一项前面的系数。 母函数有普通型的,也有指数型的。而我们通常在做题当中碰到的大多是普通型的,原创 2014-08-05 20:17:29 · 453 阅读 · 0 评论 -
150723培训心得(queue)
queue(STL中函数,就是指队列) #include #include using namespace std; //这几个头文件必不可少 int main() { queue q; //使用前需定义一个queue变量,且定义时已经初始化 while(!q.empty()) q.pop(); //重复使用时,用这个初始化(空则返回1,不空原创 2015-07-24 18:05:34 · 644 阅读 · 0 评论