1. 关于精度:

取整

  • 除法取整:

    • (除数为正)被除数为正时系统除法为向下取整,被除数为负时系统除法为向上取整。
    • 向上取整(被除数非负,除数为正):

      一般写法(有bug):
int cal(int x,int y)
{
return (x-1)/y+1;
}

上述写法只适用于x为正的情况,x为0时有错误。

正确写法:

int cal(int x,int y)
{
return x/y+(x%y!=0);
}

int cal(int x,int y)
{
return (x+y-1)/y;
}
  • 库函数(cmath库)



    (返回值为double)

    向上取整:ceil(x);

    向下取整:floor(x);
  • 四舍五入:
LL cal(double x)
{
return (x>=0.0)?(LL)(x+0.5):(LL)(x-0.5);
}
  • 除数为正通用:

    • 向上取整:
    int cal(int x,int y)
    {
    return (x>=0)?(x+y-1)/y:x/y;
    }
    • 向下取整:
     int cal(int x,int y)
    {
    return (x>=0)?x/y:(x-(y-1))/y;
    }

赋值

  • 科学计数法:
LL inf=1e18+7;

上述写法有错,因为科学计数法为double型,由于精度问题,inf实际被赋值为1e18.

正确写法:

LL inf=1000000000000000007LL;
  • double:
 double x=0.0;
x=-x;
cout<<x;

控制台输出为:\(-0\)

溢出

  • 位运算左移:
cout<<(1<<31);

控制台输出:\(-2147483648\)

正确写法:

 cout<<(1LL<<31);

注意,以下写法还是会溢出:

cout<<(1<<31LL);
  • 循环:

    因为int型变量溢出,以下循环无法退出:
for(int i=0;i<=2147483647;i++)if(i<0)cout<<"overflow";

2. 关于字符串:

读入:

  int x=1;
char s[1];
scanf("%s",&s);
cout<<x;

输入:a

控制台输出:0

这是因为读入a之后还读入了一个换行符,覆盖了x的内存。所以,字符数组最好不压边界开(除非用getchar)。

3. 关于编译器:

报错:

  • id returned 1:

    • 一种情况是该源文件其可执行文件正在运行
    • 另一种情况是主函数名拼错了:
    int mian()
    {
    return 0;
    }

运行:

int main()
{
// \
cout<<"hello world";
return 0;
}

控制台无输出。

在注释后“\”这样写会跳过该行的下一行语句

算法竞赛中c++一些需要注意的错误的更多相关文章

  1. 算法竞赛中G++编译器的编译指令简单说明

    算法竞赛使用的在线判题平台在FAQ会给出提交的代码是通过什么指令进行编译的.比如hustoj给出的c++编译指令通常是: C++: g++ Main.cc -o Main -fno-asm -O2 - ...

  2. LeetCode初级算法--排序和搜索01:第一个错误的版本

    LeetCode初级算法--排序和搜索01:第一个错误的版本 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.cs ...

  3. Kaggle大牛小姐姐自述:我是怎么成为竞赛中Top 0.3%的 | 干货攻略

    天天跟数据打交道的研究人员,都有一个成为Kaggle顶级大师(Grandmaster)的梦想. 但每年的Kaggle参赛团队众多,通常一个项目都有数千人至上万人报名,如何在其中脱颖而出? 最近,自动化 ...

  4. 单源最短路径(1):Dijkstra 算法

    一:背景 Dijkstra 算法(中文名:迪杰斯特拉算法)是由荷兰计算机科学家 Edsger Wybe Dijkstra 提出.该算法常用于路由算法或者作为其他图算法的一个子模块.举例来说,如果图中的 ...

  5. 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?(转)

    摘自https://blog.csdn.net/jiange_zh/article/details/50198097 在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具 ...

  6. 算法竞赛入门经典——读书笔记day1

    1-1:整数值用%d输出,实数用%f输出. 1-2:整数/整数=整数,浮点数/浮点数=浮点数. 1-3:scanf中的占位符和变量的数据类型应一一对应,且每个变量前需要加&符号. 1-4:在算 ...

  7. [知识点]字符串Hash

    1.前言 字符串的几大主要算法都多少提及过,现在来讲讲一个称不上什么算法, 但是非常常用的东西——字符串Hash. 2.Hash的概念 Hash更详细的概念不多说了,它的作用在于能够对复杂的状态进行简 ...

  8. 我的代码观——关于ACM编程风格与librazy网友的对话

    序 在拙文 <高手看了,感觉惨不忍睹——关于“[ACM]杭电ACM题一直WA求高手看看代码”>中,我对ACMer们的一些代码“惯例”发表了我的看法, librazy网友在评论中给出了他的一 ...

  9. 特征选择:Filter/Wrapper/Embedded

    一.特征的来源 在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征:另一块是我们从业务特征中自己去寻找高级数据特征.我们就针对这两部分来分 ...

随机推荐

  1. Gym - 101810F ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include<bits/stdc++.h> using namespace std; #def ...

  2. Java EE学习笔记(五)

    Spring事务管理 1.Spring事务管理概述 1).在实际开发中,操作数据库时都会涉及到事务管理问题,为此Spring提供了专门用于事务处理的API.(事务特性:ACID,原子性,一致性,隔离性 ...

  3. python入门之正则表达式

    正则 通过re模块实现 eg:>>>import re        >>>re.findall('abc',str_name) 在strname里面完全匹配字符串 ...

  4. F. Bakkar In The Army 二分

    http://codeforces.com/gym/100283/problem/F 思路是二分第几行,二分出来的行是总和 >= n的,那么第k - 1行一定要选,那么再在第k行中二分那一列. ...

  5. [转]AngularJS Cookies Example

    AngularJS Cookies Example AngularJS 提供了很好的 $cookie 和 $cookieStore API 用来处理 cookies . 这两个服务都能够很好的发挥HT ...

  6. lnmp.org + phpstorm + xdebug

    lnmp.org下载安装包安装之: lnmp是个集成安装包,就不用自己在配置lnmp环境 安装phpstorm,破解方法:注册服务器为http://idea.lanyus.com 就可以了 xdebu ...

  7. CF1110C Meaningless Operations

    思路: 令x为满足2x <= a的最大的x.如果a的二进制表示中包含0,则将b构造为(2x+1 - 1) ^ a即可:否则gcd(a ^ b, a & b) = gcd(2x+1 - 1 ...

  8. JS实现的图片预览功能

    之前的博文有实现过图片上传预览,但那种方法是预览时就将图片上传,会产生很大的浪费空间.找到了之前有人写的用JS实现的图片预览,就说用js将上传的图片显示,上传代码在之前的博文中有写到. 以下是实现的代 ...

  9. 一张图告诉你,只会这些HTML还远远不够!!!!!

    不知道自己HTML水平如何,不知道HTML5如何进化?看这张图 如果一半以上的你都不会,必须看这本书,阿里一线工程师用代码和功能页面来告诉你每一个技术点. 都会一点,但不知道如何检验自己,看看本书提供 ...

  10. 关于sqlserver帐号被禁用问题

    若发现sqlsrver所有帐号不小心被禁用了,这个时候怎么办?用重装吗?不用,仔细看小白是怎么一步一步解开这个谜题的.首先需要Windows帐号设置里重新添加一个新帐号.并将其添加到管理员组里面,然后 ...