《算法竞赛入门经典》学习笔记+代码

目录第一章 入门例题&笔记习题 第二章 循环例题&笔记习题第三章 数组字符串例题&笔记习题第一章 入门例题&笔记整/整=整;整/浮=浮/浮=浮 printf("%03d\n", )不足补0 ;printf("%3d\n", )不足补空格; printf("\\n");输出\n const double pi = ...
摘要由CSDN通过智能技术生成

目录

第一章 入门

例题&笔记

习题 

第二章 循环

例题&笔记

习题

第三章 数组字符串

例题&笔记

习题



第一章 入门

例题&笔记

  • 整/整=整;整/浮=浮/浮=浮
  • printf("%03d\n", )不足补0 ;printf("%3d\n", )不足补空格;
  • printf("\\n");输出\n
  • const double pi = acos(-1.0); //尽量用const声明常数

习题 

1-1

#include<stdio.h>
//求三个数的平均数保留三位 
int main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%.3lf",(a+b+c)/3.0); //整/浮=浮/浮=浮
	return 0;
}

 1-2

#include<stdio.h>
//连续和 
int main(){
	int n;
	scanf("%d",&n);
	printf("%d",(n+1)*n/2); //目标是解决问题 
	return 0;
}

 1-4

#include<stdio.h>
#include<math.h> 
#define PI 3.14159265
//sin/cos
int main(){
	int n;
	double val = PI / 180;    //度数要转化为弧度!!! 
	scanf("%d",&n);
	printf("sin=%.3lf,cos=%.3lf",sin(n*val),cos(n*val)); 
	return 0;
}

 1-5

#include<stdio.h>
//打折 
int main(){
	int x;
	double y;
	scanf("%d",&x);
	y=95*x;
	if(y>=300)
	    y*=0.85;
	printf("%.2lf",y); 
	return 0;
}

1-6

#include<stdio.h>
//三角形 
int main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	//排序 
	if(b>a){
		int t=a;
		a=b;
		b=t;
	}
	if(c>a){
	    int t=a;
		a=c;
		c=t;	
	}
	if(c>b){
		int t=b;
		b=c;
		c=t;
	}
	
	if((c+b)>a){
		if(a*a==b*b+c*c)    printf("yes");
		else    printf("no");
	}
	else    printf("not a tri");
	return 0;
}

1-7

#include<stdio.h>
//年份 
int main(){
	int n;
	scanf("%d",&n);
	if((n%4==0&&n%100!=0)||n%400==0)    printf("yes");
	else    printf("no"); 
	return 0;
}

 

第二章 循环

例题&笔记

  • 判断x是否为整数:x==floor(x+0.5) //考虑浮点运算误差
  • 多次 + - * 后对n取余,可每步取余
  • 多组数据注意共用变量的重置
  • 嵌套代码块有同名变量,内层屏蔽外层
  • continue//直接进行下一次循环 ; break//直接跳出循环
  • 在循环体中定义的变量,每次执行循环体会重新声明和初始化

int c [-231,231-1];
long long c [-263,263-1];
1e-6 //10-6

  • 计时器:

#include<time.h>
time = (double)clock()/CLOCKS_PER_SEC//单位秒,结束时使用

管道echo 20|abc //Windows命令行
重定向(区别于I/O流)的比赛代码(2-10)
while(scanf(“%d”,&x)==1){循环体};//输入结束:Enter Ctrl+Z Enter(win)/Ctrl+D(Linux)

习题

2-1

#include<stdio.h>
//水仙花 
int main(){
	for(int i=100;i<1000;i++){
		int a=i/100;
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
时间复杂度(渐近时间复杂度的严格定义,NP问题,时间复杂度的分析方法,主定理)   排序算法(平方排序算法的应用,Shell排序,快速排序,归并排序,时间复杂度下界,三种线性时间排  序,外部排序)   数论(整除,集合论,关系,素数,进位制,辗转相除,扩展的辗转相除,同余运算,解线性同余方程,中国剩余定理) 指针(链表,搜索判重,邻接表,开散列,二叉树的表示,多叉树的表示) 按位运算(and,or,xor,shl,shr,一些应用) 图论(图论模型的建立,平面图,欧拉公式与五色定理,求强连通分量,求割点和桥,欧拉回路,AOV问题,AOE问题,最小生成树的三种算法,最短路的三种算法,标号法,差分约束系统,验证二分图,Konig定理,匈牙利算法,KM算法,稳定婚姻系统,最大流算法,最小割最大流定理,最小费用最大流算法) 计算几何(平面解几及其应用,向量,点积及其应用,叉积及其应用,半平面相交,求点集的凸包,最近点对问题,凸多边形的交,离散化与扫描) 数据结构(广度优先搜索,验证括号匹配,表达式计算,递归的编译,Hash表,分段Hash,并查集,Tarjan算法,二叉堆,左偏树,二斜堆,二项堆,二叉查找树,红黑树,AVL平衡树,Treap,Splay,静态二叉查找树,2-d树,线段树,二维线段树,矩形树,Trie树,块状链表) 组合数学(排列与组合,鸽笼原理,容斥原理,递推,Fibonacci数列,Catalan数列,Stirling数,差分序列,生成函数,置换,Polya原理) 概率论(简单概率,条件概率,Bayes定理,期望值) 矩阵(矩阵的概念和运算,二分求解线性递推方程,多米诺骨牌棋盘覆盖方案数,高斯消元) 字符串处理(KMP,后缀树,有限状态自动机,Huffman编码,简单密码学) 动态规划(单调队列,凸完全单调性,树型动规,多叉转二叉,状态压缩类动规,四边形不等式) 博奕论(Nim取子游戏,博弈树,Shannon开关游戏) 搜索(A*,ID,IDA*,随机调整,遗传算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值