语法基础
1. scanf
- 空白字符: 指的是空格、回车和制表符
- 基本原理: 从缓冲区读入字符
- 对于整数和字符串:忽略前面的空白字符 读入后不读入空白字符 默认以空白字符作为各变量之间的分割
- 对于字符:没有分割 空白字符会被读入
2. 字符串
- 任何封装好的函数传入的是一个指针 指针默认指向0
- 如果要从1开始读入 那么就要把头指针++
- gets 的读入忽略空格但不忽略回车
3 .bitset
bitset<N> s //开N位bitset
s.count() // 返回1的数目
s.set(k,v)//第k位返回v
| & ^ >> << ~ == != //支持运算
s[k]
s.set() //全部变成 1
s.reset()//全部变成0
4.sort的cmp
bool cmp(int x,int y)
{
if( (x&1)&&!(y&1) ) return 0;
if( !(x&1)&&(y&1)) return 1;
return x>y;
}
表示的含义是 如果cmp的值为1, 那么就把x放到y的前面.
默认的cmp函数是
return x<y;
5. 语法易错
-
pow()//是一个浮点函数
-
数字开longlong要写成\(114ll\)
-
部分oj在开空间过大的时候可能会返回RE
-
多组数据都用memeset赋值的时候可能会TLE 要分析时间复杂度 建议使用fill
6.模板
模板函数:
template <typename T>
T read()
{
T x=0,f=0,c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return f?-x:x;
}
n=read<int>()//调用
模板类
template <typename T1,typename T2>
class pair
{
T1 a; T2 b;
};
pair<int,int> p;//调用

浙公网安备 33010602011771号