zz错误与个人提醒

1.数据范围超过long long可以考虑unsigned long long,不一定要高精度…
2.如果把初始化的部分写在一个单独的函数里,一定一定一定要记得在主函数里进行调用!!!
3.对于任意整数n,n&-n可求出二进制下其最末尾的1(求出的结果形如1000000000);
4.模板题错了十有八九是哪里写错了…不用怀疑编译器或者数据或者算法本身的问题错误
5.并查集的par[x]数组一定要记得初始化!!!!
6.typedef long long ll; #define ll long long !!! 两个用法中的先后顺序要分清!!!!
7.一般而言题目如果有多组数据并且当输入的n,m都为0时结束程序,判定条件最好写成
while(cin>>n>>m&&(n+m))或者是while(cin>>n>>m&&(n||m)),如果写成&&n&&m,还是有机会遇到n=1,m=0这样的数据然后挂掉的。
8.如果要初始化longlong为无穷大,不能用long long n=1<<60的形式,因为右边1会默认为int类型,<<60后变成0。必须弄成(long long)1<<60,才行。或者直接初始化为0x7f7f7f7f7f7f7f7f这样的形式也行。
9.嵌套的max,min一定要小心!!!!嵌套的里面一定要记得加上min或者max,不然…
这里写图片描述
这样的错可以让你气急败坏….
10.floyd在初始化的时候如果是无穷大一定只能用0x3f….0x7f一加就爆了…..
11.使用upper_bound之类查找结构体中第一个大于指定数据类型的数时,返回的是该结构体的地址….??这点存疑
12.这里写图片描述
13.进制问题:默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。
如果要输出大写的16进制数,输出格式为cout<<setiosflags(ios::uppercase)<<hex<<x<<endl;
14.LCA的根不能随便选…..
15.关于unique函数:
这里写图片描述
16.很多时候并查集合并以后如果要查询祖先要再find一下…否则很可能出现路径未压缩导致答案错误的情况…
17.string 在使用>,>=,<,<=这些操作符的时候是根据“当前字符特性”将字符按字典顺序进行逐一得 比较。字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。同时,string (“aaaa”)

猜你喜欢

转载自blog.csdn.net/humveea6/article/details/79439200
zz
今日推荐