算法竞赛中c++一些需要注意的错误
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++一些需要注意的错误的更多相关文章
- 算法竞赛中G++编译器的编译指令简单说明
算法竞赛使用的在线判题平台在FAQ会给出提交的代码是通过什么指令进行编译的.比如hustoj给出的c++编译指令通常是: C++: g++ Main.cc -o Main -fno-asm -O2 - ...
- LeetCode初级算法--排序和搜索01:第一个错误的版本
LeetCode初级算法--排序和搜索01:第一个错误的版本 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.cs ...
- Kaggle大牛小姐姐自述:我是怎么成为竞赛中Top 0.3%的 | 干货攻略
天天跟数据打交道的研究人员,都有一个成为Kaggle顶级大师(Grandmaster)的梦想. 但每年的Kaggle参赛团队众多,通常一个项目都有数千人至上万人报名,如何在其中脱颖而出? 最近,自动化 ...
- 单源最短路径(1):Dijkstra 算法
一:背景 Dijkstra 算法(中文名:迪杰斯特拉算法)是由荷兰计算机科学家 Edsger Wybe Dijkstra 提出.该算法常用于路由算法或者作为其他图算法的一个子模块.举例来说,如果图中的 ...
- 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?(转)
摘自https://blog.csdn.net/jiange_zh/article/details/50198097 在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具 ...
- 算法竞赛入门经典——读书笔记day1
1-1:整数值用%d输出,实数用%f输出. 1-2:整数/整数=整数,浮点数/浮点数=浮点数. 1-3:scanf中的占位符和变量的数据类型应一一对应,且每个变量前需要加&符号. 1-4:在算 ...
- [知识点]字符串Hash
1.前言 字符串的几大主要算法都多少提及过,现在来讲讲一个称不上什么算法, 但是非常常用的东西——字符串Hash. 2.Hash的概念 Hash更详细的概念不多说了,它的作用在于能够对复杂的状态进行简 ...
- 我的代码观——关于ACM编程风格与librazy网友的对话
序 在拙文 <高手看了,感觉惨不忍睹——关于“[ACM]杭电ACM题一直WA求高手看看代码”>中,我对ACMer们的一些代码“惯例”发表了我的看法, librazy网友在评论中给出了他的一 ...
- 特征选择:Filter/Wrapper/Embedded
一.特征的来源 在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征:另一块是我们从业务特征中自己去寻找高级数据特征.我们就针对这两部分来分 ...
随机推荐
- 解决 openSUSE 中 Sublime Text 3 的中文显示和输入问题
测试环境 系统版本:openSUSE Leap 42.2 桌面环境:KDE Plasma 5输入法:fcitx-rime (中州韵) 见周围用 Windows 和 macOS 的小伙伴几乎都在用简单强 ...
- asp.net core分块上传文件
写完asp.net多文件上传(http://www.cnblogs.com/bestckk/p/5987383.html)后,感觉这种上传还是有很多缺陷,于是...(省略一万字,不废话).这里我没用传 ...
- 51NOD 1202 子序列个数 DP
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1202&judgeId=225600 这题看起来挺复杂,但是真正的 ...
- CSS3在hover下的几种效果
CSS3在hover下的几种效果代码分享,CSS3在鼠标经过时的几种效果集锦 效果一:360°旋转 修改rotate(旋转度数) * { transition:All 0.4s ease-in-out ...
- 【学习笔记】CSS优先级规则
CSS的优先级规则很多地方的说法都是错误的,常见错误说法是inline css>内部样式>外部样式,其实并没有这种规定.真正的CSS优先级确定是通过特性值大小确定的,在特性值大小相同的情况 ...
- 【学习笔记】js中undefined和null的区别和联系
在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...
- 打造自己的JavaScript武器库
自己打造一把趁手的武器,高效率完成前端业务代码. 前言 作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率.这里提一个小点,我们在业务开发过程中,经常会重复用到日期格式化.url参数转对象. ...
- Android Studio项目上传到Jcenter
一.将你要发布的moudle的build.gradle中添加代码,gradle的最后添加 PUBLISH_GROUP_ID = 'com.zzti.fengyongge' PUBLISH_ARTIFA ...
- jdbc接口的一种类比——打酱油
jdbc很简单,这里只是为了方便自己的记忆.模型也许有缺陷,但本质是相同的. jdbc可以屏蔽数据库的底层的不同,让我们有能力用java语言统一访问不同的数据库.就像打酱油一样,可以去超市买,也可以去 ...
- php关于精准计算的模块 BCMath
Php: BCMath bc是Binary Calculator的缩写.bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_ope ...