@994495jj
2017-07-20T01:44:33.000000Z
字数 3854
阅读 1401
201707 (ACM)数据结构
#include<vector>vector<int> vec;vec.push_back(a);cout<<vec[0]<<endl;,下标是从0开始的。
vector<int>::iterator it;for(it=vec.begin();it!=vec.end();it++)cout<<*it<<endl;
vec.insert(vec.begin()+i,a); 在第i+1个元素前面插入a;vec.erase(vec.begin()+2); 删除第3个元素vec.erase(vec.begin()+i,vec.end()+j); 删除区间[i,j-1];区间从0开始cout<<vec.size()<<endl;vec.clear();#include<algorithm> reverse(vec.begin(),vec.end());#include<algorithm> sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
bool Comp(const int &a,const int &b){return a>b;}sort(vec.begin(),vec.end(),Comp);
uva 10935(简单模拟)uva 101(简单模拟) uva 514(火车进站) uva 673(括号序列)
void selection_sort(int array[], int N){for (int i=0; i<N; ++i) // N改為N-1更精準{// 從尚未排序的數字當中,找出最小的數字。// (它也是全部數字當中第i小的數字。)int min_index = i;for (int j=i+1; j<N; ++j)if (array[j] < array[min_index])min_index = j;// 把第i小的數字,放在第i個位置。swap(array[i], array[min_index]);}}
void bubble_sort(int array[], int N){for (int i=0; i<N; ++i) // N改為N-1更精準for (int j=0; j<N-i-1; ++j)if (array[j] > array[j+1])swap(array[j], array[j+1]);}
void bubble_sort(int array[], int N){for (int i=0; i<N; ++i) // N改為N-1更精準{bool sorted = true;for (int j=0; i<N-j-1; ++j)if (array[j] > array[j+1]){swap(array[j], array[j+1]);sorted = false;}if (sorted) return;}}
void insertion_sort(int array[], int N){for (int i=2; i<N; ++i){int pivot = array[i];int j;for (j=i-1; j>=0; --j)if (pivot < array[j])array[j+1] = array[j]; // 先行往右挪elsebreak;array[j+1] = pivot; // 插入}}
uva 10810(逆序数)uva 755uva 484 uva 11462
void counting_sort(int array[], int N){// 歸類並標記int count[10000] = {0};for (int i=0; i<N; ++i)count[ array[i] ]++;// 計數陣列的索引值大小順序,正是元素大小順序。for (int i=0, k=0; k<N; ++i)while (count[i]--)array[k++] = i;}
struct Data {int key, data;};void counting_sort(Data* array[], int N){// 歸類並標記vector<Data*> count[10000];for (int i=0; i<N; ++i)count[ array[i]->key ].push_back( array[i] );// 索引值的大小順序,剛好也是元素的大小順序。for (int i=0, k=0; k<N; ++i)for (int j=0; j<count[i].size(); ++j)array[k++] = count[i][j];}
uva 482
struct Node {int a,b;bool operator < (const Node &tmp) const {if(a==tmp.a) return b<tmp.b;return a<tmp.a;}}
uva 12192(二维矩阵中查找一个数) uva 10041 uva 496(判断集合间关系) uva 11218uva 10158 uva 10583 uva 10608 uva 11987
int pre[N];void init() {for(int i=0;i<N;++i) pre[i]=i;}int find(int x) {if(x==pre[x]) return x;return pre[x]=find(pre[x]);}void join(int x,int y) {int fx=find(x);int fy=find(y);pre[fx]=fy;}
POJ 2485 cfgym 101252C
#include<queue>priority_queue<int> q;for(int i=0;i<N;++i) {q.push_back(a[i]);cout<<q.top()<<endl;//输出堆中最大的元素}q.pop();//弹出堆中最大的元素
foj 1327 uva 501 uva 11997