经历了这次初赛,我不仅懂得了不少知识与经验,也看清了与别人之间的差距。在这次初赛,我也遇到了自己比较迷的内容,我归纳了以下几点:
1.dp(不解释(学信奥的人大多都死这儿了)(第二道门槛))
2.图论(在我心目中的第一道门槛)
3.归并(不知道为什么快排懂了这个没懂)
4.指针及链表(已晕)
······
虽然这么多条看上去有点晕,实际上把它分开了更晕
dp:
1.最长不上升序列
2.最长不下降序列
3.最长上升序列
4.最长下降序列
5.0/1背包
6.完全背包
7.多重背包
······
······(突然发现,我好蒟蒻)
不过,我相信我能在信奥这条路上浪下去~
在列一下我会的和我不会的基本算法(实在不知道写什么,就当凑点字数,显得好看一点)
已会:
1.高精(除法除外)
2.快排(qsort)
3.递归
4.递推
5.贪心(贪婪)
(一眼望去,哇····················好少)
不会:
1.高精除
2.归并
3.回溯
4.搜索(bfs、dfs我并一起了)
5.分治
6.动态规划
······
(一眼望去,哇····················好多(省略号表示还有好多,自己脑补))
不过c++里还是有良(keng)心(die)的东西的,比如说:STL(至少能帮我解决stack和queue(睁着眼睛说瞎话的我))(还是sort良心点)
最后,送上一段我自己手写的快排代码(我没试过,帮我试一下能不能通过)//所以大家还是用内置sort吧,速度还快~
#include<bits/stdc++.h>
using namespace std;
int i,j,mid,t,a[10001];
void qsort(int l,int r)
{
i=l;j=r;
mid=a[(i+j)/2];
do
{
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j)
{
t=a[i];a[i]=a[j];a[j]=t;i++;j--;
}
}
while(i<=j);
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
}
int main()
{
int n,k;
cin>>n;
for(k=1;k<=n;k++) cin>>a[k];
qsort(1,n);
for(k=1;k<=n;k++) cout<<a[k]<<' ';
return 0;
}