复制 //#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 () , 0 ll ))
#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 = 0x 3f3f3f3f3f3f3f3f ;
const double EPS = 1 e- 4 ;
const double PI = acos ( - 1 );
const int MAXN = 1 e 4 + 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),可以是:
规定符
%g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出
%5.2f:右对齐并占用宽度为 5,保留两位小数的浮点数;
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