青少年编程知识记录 codecoming

NOIP/CSP-J复赛历年考点

2000计算器的改良税收与补贴乘积最大单词接龙模拟、字符串模拟字符串、动态规划广度优先bfs、字符串2001数的计数最大公约数与最小公倍数求先序排列装箱问题模拟模拟、函数二叉树贪心2002级数求和选数产生数过河卒模拟模拟、素数、DFS、组合高精度深搜(dfs)2003乒乓球数字游戏栈麦森数模拟、字符串DFS、DP栈素数、高精度2004不高兴的津津花生采摘FBI树火星人模拟、数组贪心二叉树全排列、STL2005淘淘摘苹果校门外的树采药循环模拟、数组模拟,数组贪心高精度、数学、数论、递推2006明明
作者:亿万年的星光 分类:C++知识 浏览:

2021CSP-J/S全国晋级二轮分数线公布

普及组CSP-J

序号省市CSP-J人数CSP-J晋级晋级比例最高分晋级最低分
1甘肃

13413399.25%8615
2宁夏10310198.06%6524
3天津46345197.41%8615.5
4云南40237894.03%79.517
5湖北68063292.94%89.526
6海南18617091.40%73.529
7陕西49344790.67%

93.528
8广西79568085.53%8628
9山西77362881.24%95.530
10贵州44733174.05%7130
11吉林45433273.13%9133
12河南111479871.63%

88.534.5
13内蒙古564071.43%58

34.5
14黑龙江35420557.91%8224.5
15新疆42523856.00%81.539
16江西48524750.93%86.636.5
17辽宁4752350.32%90

40
18湖南152874448.69%93.515
19香港723548.61%10045.5
20河北112251846.17%

93.540
21

澳门1033937.86%8231
22重庆143054137.83%9451.5
23上海2841100735.45%94.552.5
24安徽4731155832.93%98.534
25北京339794127.70%

96.553
26四川302870423.25%98.517
27江苏417273717.67%98.538
28广东562798617.52%95.558.5
29浙江606794615.59%9866
30山东11450132611.58%9815



山东普及组分数线55

小学组43





作者:亿万年的星光 分类:C++知识 浏览:

如何估算时间复杂度

首先:

  常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)

时间复杂度可以简单理解为最多执行次数。



一、O(1)

一般情况下没有其他循环和递归调用,时间复杂度一般都是O(1)。比如下面这样的代码

#include<iostream>  using namespace std;  int main(){  	int a=0,b=0,x=0,y=0;  	cin>>a>>b;  	x=a+b;  	y=a-b;  	if(x>y){  	 cout<<x;  	}else{  	 cout<<y;  	}  	return 0;  }

二、O(n)

一般情况下,一个循环的时间复杂度是O(n),多个循环并列也是取循环次数最多的那个作为时间复杂度。当数据量增大n倍,耗时增大n倍。

#include<iostream>  using namespace std;  int main(){  	int a=n;  	cin>>n;  	for(int i=0;i<n;i++){  	    cout<<i;  	}  	return 0;  }



三、O(n2)、O(n*m)

双重循环嵌套一般就是O(n2)。当数据量增大n倍,耗时增大n方倍。

#include<iostream>  using namespace std;  int main(){  	int n=0;  	cin>>n;  	for(int i=0;i<n;i++){  	    for(int j=0;j<n;j++){  	        cout<<i;  	    }  	}  	return 0;  }

如果循环嵌套外层循环是n,内层循环是m。

#include<iostream>  using namespace std;  int main(){  	int n=0,m=0;  	cin>>n>>m;  	for(int i=0;i<n;i++){  	    for(int j=0;j<m;j++){  	        cout<<i;  	    }  	}  	return 0;  }

这个时候的时间复杂度是O(n*m)。



四、O(logn)

当数据增大n倍时,耗时增大logn倍。

#include<iostream>  using namespace std;  int main(){  	int n=0;  	cin>>n;  	for(int i=0;i<n;i++){  	   i*=2;  	   cout<<i;  	}  	return 0;  }

本来循环次数是n,现在i*=2了。那么答案是log(2)(n)。

反着想也可以,原来循环n次,现在每次i变成原来的2倍,也就是2的k次方等于n。那么正好就是log(2)(n),即O(log n)



或者下面这样:

#include<iostream>using namespace std;  int main(){  int n=0;  cin>>n;  while((n=n/2)>0){      cout<<n;  }   return 0;  }

时间复杂度也是O(logn)



五、O(nlogn)

一般归并排序和堆排序是O(nlogn)。 

常见的是外层循环的时间复杂度是n,内层循环的时间复杂度是logn。

比如下面这样:

for(int i=1; i<=n; i++)  {  	for(int j=1; j<=n; j+=i)  	{  		.....   //复杂度为O(1);  	}  }

注意:外层循环是n,内层循环j每次都增加i。

作者:亿万年的星光 分类:C++知识 浏览:

指针(三):指针与函数

1.交换的例子#include<iostream> #include<cstdio> #include<cstring> using namespace std; void swap(int x, int y){ int a=x; x=y; y=a; cout<<"函数内部"<<x<<" &q
作者:亿万年的星光 分类:C++知识 浏览:

指针(二):指针与数组

1.指针与数组的关系    指向数组的指针变量称为数组指针变量。“数组是内存上一块连续的空间”。数组名就是这块连续空间的首地址。2.指针指向数组    一开始的数组定义与输出:#include<iostream> #include<cstdio> using namespace std; int main(){ int a[10]; for(int 
作者:亿万年的星光 分类:C++知识 浏览:

指针(一):基础用法

1.定义什么是指针,简单来说:“指针就是地址”。2.指针变量的定义指针变量定义形式:  类型说明符  *变量名其中,*号表示指针变量。变量名即为定义的指针变量名,类型说明符表示该指针变量所指向的变量的数据类型。普通变量:int a=5;解释:定义了变量a,是int型的,值为5。内存中有一块内存空间是放a的值。对a的存取操作就是直接到这个内存空间存取。内存空间的位置叫地址,存放5的地址可以用取地址操作。用“&”符号运算得到。即&a;指针变量:int *p=NUL
作者:亿万年的星光 分类:C++知识 浏览:

【python】如何利用python生成二维码

0.前言二维码在我们的生活中可以说是必不可少的,不单单是手机支付、其它很多地方也都需要扫描二维码。那么下面我们就来看看如何使用python来生成二维码、以及识别二维码。关于二维码,我们来说一下它的结构。从图中我们可以看出二维码结构整体划分为功能图形和编码区两大部分,功能图形又细分为:空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形,而编码区细分为:格式信息、版本信息、数据和纠错码字,来简单了解一下每一部分的功能:空白区:留白,不需要做任何处理位置探测图形:协助扫描软件定位二维码码位置
作者:亿万年的星光 分类:python知识 浏览:

【题解】母牛的故事

【题目描述】

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

【输入描述】

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。

n=0表示输入数据的结束,不做处理。

【输出描述】

对于每个测试实例,输出在第n年的时候母牛的数量。

每个输出占一行

【样例输入】

2  4  5  0

【样例输出】

2  4  6
作者:亿万年的星光 分类:题解目录 浏览:

C++报错:[Error] ld returned 1 exit status

一般遇到[Error] ld returned 1 exit status报错。原因一般有两个,第一个,main函数写错,main写mian的很多。改正即可。第二个,你的DEVC++已经运行了一个exe程序,现在想运行第二个,也会报这个错错误。解决办法就是把运行的exe关掉即可。
作者:亿万年的星光 分类:常见报错 浏览: