虽然可能没机会参加NOIP2017的复赛了
但是这份模板我还是会在比赛前完成它的,
作为对我过去一年的反馈。
因为技能树点歪,,所以我会弃坑重新来点,
辣么,,模板题的理解就很重要,他直接决定了其他的题目你写不写的来。。
所以,这里的许多东西也许没办法在OJ上直接验证正确性(这也是打模板的痛苦之处)
不过我会尽力去找的,并且也会把自编的数据存放下来。
就酱紫。
frame
//这个项目提供了程序基本的代码框架
//头文件模板
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<iomanip>
#include<sstream>
#include<cmath>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<list>
//命名空间
using namespace std;
//声明与宏定义
typedef long long LL;
typedef long double LD;
#define fst first
#define sec second
#define mp make_pair
//常量定义
const int N = 1e5, inf = 1e9; //代替define的写法 & e计数法的使用
//输入输出优化
int readint(){ //readint好简单啊为什么。。。
int x=0, op=1; char ch = getchar(); //一定要赋初始值
while(ch < '0' || ch > '9'){ if(ch=='-')op=-1; ch = getchar(); }
while(ch >= '0' && ch <= '9'){ x=x*10+ch-'0'; ch = getchar(); }
return x*op;
}
int main(){
cout<<"Hello World"<<endl;
return 0;
}
STL
//这个项目提供了STL的范例
//NOIP前第一轮模板 2017.10.5
//顺序容器:vector, deque, list
//关联容器:set, map,
//适配容器:stack, queue, priority_queue
#include<iostream>
#include<set> //基于红黑树
#include<map> //基于平衡二叉树
#include<vector> //时间换空间(逃
#include<string> //各种黑科技
#include<bitset>
using namespace std;
//操作整理:声明,插入,删除,查找,遍历
//用法整理:你自己想啊
void setting(){
set<int>myset; //声明int类型的集合(突然发现重名好像不会炸233333)
//1. 基本操作
myset.insert(233); //往里面添加元素(重复插入无效)
myset.erase(233); //删除里面的某个元素(如果不存在该元素则不操作)(这里也可以用迭代器删除区间)
myset.count(233); //查询集合中是否存在某个元素
myset.clear(); //清空集合
//2. 迭代器
myset.insert(233); myset.insert(322);
set<int>::iterator it; //如果重名声明迭代器的时候会炸掉
set<int>::reverse_iterator rit; //反向迭代器
for(it = myset.begin(); it != myset.end(); it++){
cout<<*it<<" ";
}
cout<<"
";
for(rit = myset.rbegin(); rit != myset.rend(); rit++){
cout<<*rit<<" ";
}
cout<<"
";
//3. 熟练搞事
cout<< (myset.find(233)==myset.begin()) <<"
"; //查找键值的位置并返回迭代器
cout<< *myset.lower_bound(234)<<"
"; //返回第一个>=key的元素的迭代器
cout<< *myset.upper_bound(233)<<"
"; //返回第一个>key的元素的迭代器
}
void maping(){
map<int,int>mymap; //左键右值
//1. 基本操作,,同为关联容器,基本和set差不多吧
mymap[5] = 7; //添加元素(注意 "mymap[0];" 同样往map中添加了元素,只是没有赋值而已)
//2. 迭代器
map<int,int>::iterator it = mymap.begin();
cout<<(it->first)<<" "<<(it->second)<<"
"; //map遍历时访问的是pair类型
//3.
}
void bitsetting(){
}
void stringing(){
string str = "123456789"; char ch[110]="233";
//构造函数
str = string(ch); //用c语言字符串s初始化
str = string(5,'c'); //用5个字符c初始化
string s1 = str; //赋值操作
//基本特性
str.size(); //返回大小
//各种操作
str.substr(0, 2); //返回子串,返回0开始的由两个字符组成的字符串
}
int main(){
stringing();
cout<<"Hello World"<<endl;
return 0;
}