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. 牛客寒假6-E.海啸

    链接:https://ac.nowcoder.com/acm/contest/332/E 题意: 有一个沿海地区,可以看作有n行m列的城市,第i行第j列的城市海拔为h[i][j]. 由于沿海,所以这个 ...

  2. Hive_Hive和数据仓库简介

    文章摘自 : http://www.imooc.com/video/7573 Hive是建立在Hadoop HDFS上的数据仓库基础架构.Hive可以用来进行数据的ETL.Hive定义了简单的类似SQ ...

  3. 087 Scramble String 扰乱字符串

    给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树.下图是字符串s1 = "great"的一种可能的表示形式.    great   /    \ ...

  4. 字符串与C51的格式化输出

    一字符数组和字符指针: 字符指针可以用字符串对其直接初始化和随时赋值:而字符数组可以用字符串进行初始化,但不能用字符串对其进行随时赋值(但此时可以定义一个字符串指针指向字符数组,然后用字符串对指针随时 ...

  5. centos设置ssh免密码登陆

    准备工作:    1.确认本机sshd的配置文件(需要root权限) $ gedit /etc/ssh/sshd_config 找到以下内容,并去掉注释符”#“ RSAAuthentication y ...

  6. js实现接口的几种方式

    Javascript模仿接口可以有三种方式:1.注释法 2.检查属性法 3.鸭式辨形法 1.注释法:此方法属于程序文档范畴,对接口的继承实现完全依靠程序员自觉 /* interface People{ ...

  7. 求矩阵的n次方 c语言实现

    矩阵的n次方,比较容易理解的想法是递归. 思路是这样的,把n分成两部分,当n是偶数的时候,即为左右两边的乘积,如果n是奇数,即为左右两边的乘积再乘a ) matrixn())^*a else matr ...

  8. Django之admin的使用及源码分析

    一.admin组件使用 Django本身提供了基于 web 的管理工具.其管理工具是django.contrib的一部分,可在settings.py中的 INSTALLED_APPS 看到: INST ...

  9. 查看Windows激活信息

    使用 Windows + R组合快捷键打开运行命令框 1.运行: slmgr.vbs -dlv 可以查询到Win10的激活信息,包括:激活ID.安装ID.激活截止日期等信息. 2.运行: slmgr. ...

  10. codevs 3026 恶心的扑克

    时间限制: 1 s  空间限制: 64000 KB  题目等级 : 白银 Silver 题目描述 Description 有一副恶心的扑克,从小到大依次是3 , 4 , 5 , 6 , 7 , 8 , ...