备忘

//#define LOCAL

#include<bits/stdc++.h>

#define int        long long
#define yes        cout<<"YES"<<'\n'
#define no         cout<<"NO"<<'\n'
#define print(x)   cout<<(x)<<'\n'
#define forn(i,n)  for(long long i=0; i<n; i++)

#define sum(a)     ( accumulate ((a).begin(), (a).end(), 0ll))
#define mine(a)    (*min_element((a).begin(), (a).end()))
#define maxe(a)    (*max_element((a).begin(), (a).end()))
#define mini(a)    ( min_element((a).begin(), (a).end()) - (a).begin())
#define maxi(a)    ( max_element((a).begin(), (a).end()) - (a).begin())
#define lowb(a, x) ( lower_bound((a).begin(), (a).end(), (x)) - (a).begin())
#define uppb(a, x) ( upper_bound((a).begin(), (a).end(), (x)) - (a).begin())

using namespace std;
const int inf = 0x3f3f3f3f3f3f3f3f;
const double EPS = 1e-4;
const double PI = acos(-1);
const int MAXN=1e4+5;

signed main() {
#ifdef LOCAL
    freopen("output.txt", "w", stdout);
    freopen("input.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
}

输入输出

2.1 格式化占位符

格式化字符串中的占位符用于指明输出的参数值如何格式化。

格式化占位符(format placeholder),语法是:

%[flags][field width][.precision][length]type

Flags可为0个或多个:

Field Width给出显示数值的最小宽度,典型用于制表输出时填充固定宽度的表目。实际输出字符的个数不足域宽,则根据左对齐或右对齐进行填充。实际输出字符的个数超过域宽并不引起数值截断,而是显示全部。宽度值的前导0被解释为0填充标志,如上述;前导的负值被解释为其绝对值,负号解释为左对齐标志。如果域宽值为*,则由对应的函数参数的值为当前域宽。

Precision通常指明输出的_最大_长度,依赖于特定的格式化类型。对于d、i、u、x、o的整型数值,是指最小数字位数,不足的位要在左侧补0,如果超过也不截断,缺省值为1。对于a,A,e,E,f,F的浮点数值,是指小数点右边显示的数字位数,必要时四舍五入;缺省值为6。对于g,G的浮点数值,是指有效数字的最大位数。对于s的字符串类型,是指输出的字节的上限,超出限制的其它字符将被截断。如果域宽为*,则由对应的函数参数的值为当前域宽。如果仅给出了小数点,则域宽为0。

Length指出浮点型参数或整型参数的长度。可以忽略。

2.2 类型

Type,也称转换说明(conversion specification/specifier),可以是:

规定符

  • %d 十进制有符号整数

  • %u 十进制无符号整数

  • %f 浮点数

  • %s 字符串

  • %c 单个字符

  • %p 指针的值

  • %e 指数形式的浮点数

  • %x, %X 无符号以十六进制表示的整数

  • %o 无符号以八进制表示的整数

  • %g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出

  • %p 输出地址符

  • %lu 32位无符号整数

  • %llu 64位无符号整数

  • %% 输出百分号字符本身。

  • %-10s:左对齐并占用宽度为 10 的字符串;

  • %5.2f:右对齐并占用宽度为 5,保留两位小数的浮点数;

  • %#x:输出带有 0x 前缀的十六进制数。

python format

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。此外我们可以使用大括号 {} 来转义大括号。

求集合运算

set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
		     _InputIterator2 __first2, _InputIterator2 __last2,
		     inserter(dest, dest.begin()))
set_union(_InputIterator1 __first1, _InputIterator1 __last1,
		     _InputIterator2 __first2, _InputIterator2 __last2,
		     inserter(dest, dest.begin()))
set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
		     _InputIterator2 __first2, _InputIterator2 __last2,
		     inserter(dest, dest.begin()))
set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
		     _InputIterator2 __first2, _InputIterator2 __last2,
		     inserter(dest, dest.begin()))
x & y
x | y
y - x
x ^ y

最后更新于