ACM录 之 常识和错误。
接下来说说一些ACM里面的常识和错误。。。(可能会比较乱)
—— 首先ACM里面的代码都是要提交上去,然后让计算机自动判题的,所以。。。千万不要把 system("pause"); 加上去,不管自己怎么搞,提交之前千万记得不要有这句话,不然怎么死的都不知道。
—— 然后就是提交上去之后是立马返回结果的(网络卡了或者服务器挂了不算),结果一般有 AC(也就是对了),WA(答案错误),TLE(超时),MLE(超出内存限制),PE(答案对,格式错。),RE(在判题机上运行的时候程序崩溃,一般有数组越界,或者栈溢出。),CE(编译错误。。。)
—— 然后就是程序运行有时间限制,一般来说1s的话按照现在计算机的速度可以运行10^7这个数量级次,所以提前根据数据范围算一下大约需要运行多少次,然后看看会不会超时。
—— 内存的限制如果是 64MB,一个 int 类型的数占4个字节,也就是 4B,那么64MB也就是 64*1024*1024 / 4 个int类型的数,所以也要注意是否会超内存。。。
—— 提交程序的话就是在做题的那个网页找到 submit 按钮,然后复制代码过去就行。。。
—— 头文件。。。为了省事,一般我是直接弄上很多头文件然后写代码。如下:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
—— 关于数据类型的表示范围,int的表示范围是-2^31 到 2^31-1 也就是大约10^9的范围,写代码前估算一下如果中间值或者结果可能超过这个数,就尽量不要用int了。这时可以用 long long 这种类型,他的表示范围是 -2^63 到 2^63-1,大约就是10^18多。。。这时注意如果超过了这个数,就要用自己写的高精度类了(以后会说。)然后是long long这种类型的输入输出,如果是cin cout的话不用管,但是scanf他们就不行了,有些是 %lld 有些是 %I64d 对,不同的服务器不一样,就是这么坑,一般比赛前会说,也可以向裁判提问用哪一种。。。
—— 至于double和float的问题,首先推荐使用double就行,注意这些类型都是用二进制来表示小数的,转为十进制的话表示的精度 double大约是14位有效数字(不是小数点后面的位数)。另外就是各种加减乘除还有数学函数运算会让精度下降,也就是只有大约前10位是准确的,后面就呵呵了,运算次数多的话。。。精度会更差。。。而且负数的精度比正数差不少。。。所以精度问题一直是最大的坑点之一,刚开始还接触的少,后面有无数会卡精度的题目,也就是和答案很接近但是就是差那么个0.000001就算错。。。
然后有一个sgn函数来确定double,具体如下:
const double eps=1e-; // 根据题目需要修改。 inline int sgn(double x) // x负数返回-1,近似0返回0,正数返回1。
{
return x<-eps ? - : x>eps;
}
—— 另外注意double不要用 == 来判断相等,因为误差,会导致运算之后有很小的差别,所以一般只要 b-eps < a < b+eps 那么就算是a和b相等,一般 eps = 1e-8 或者 -9 或者 -10等等。。。
—— 饿。。。暂时想不起来还有啥了,未完待续。。。
ACM录 之 常识和错误。的更多相关文章
- ACM录 之 输入输出。
—— 简单介绍一下ACM里面的输入输出... —— 主要说C++的输入输出(其实其他的我不会...). —— C++里面有输入输出流,也就是cin和cout,用起来也算是比较方便吧... —— 但是, ...
- Sql-Server应用程序的高级注入
本文作者:Chris Anley 翻译: luoluo [luoluonet@hotmail.com] [目 录] [概要] [介绍] [通过错误信息获取信息] [更深入的访问] [xp_cmdshe ...
- 写给Node.js新手的7个小技巧
一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中. 无论如何,对于一些刚开始使 ...
- 软件设计模式详解:OCP原则
看到两篇关于OCP的文章, 纳之. 原文: http://www.cnblogs.com/muzongyan/archive/2010/08/05/1793454.html http://blog. ...
- C# Memory Cache 踩坑记录
背景 前些天公司服务器数据库访问量偏高,运维人员收到告警推送,安排我团队小伙伴排查原因. 我们发现原来系统定期会跑一个回归测试,该测运行的任务较多,每处理一条任务都会到数据库中取相关数据,高速地回归测 ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- mavenWeb工程建立步骤
1.File >> New >>other...,在New窗口中打开Maven,选中Maven Project,Next. 2.在New Maven Project弹出窗口中去 ...
- 牛客 - 17968 - xor序列 - 线性基
https://ac.nowcoder.com/acm/problem/17968 下面是错误的做法,因为题目要求必须使用x,而y在check的时候不一定用到等价于x的线性基来构成. 正确的做法是直接 ...
- 转载--- 写给Node.js学徒的7个建议
贴士 1: 在开发环境使用nodemon,在生产环境使用pm2 当你第一次开发Node.js应用的时候, 其中一件事情就是一次又一次的运行[file].js 就和揭伤疤一样. 当我第一次开发的node ...
随机推荐
- 使用 Eclipse Memory Analyzer 进行简单内存泄漏分析
Java 内存泄露的根本原因: 保存了不可能再被访问的变量类型的引用.因此我们的目的就是要找出这样的引用. 1.测试代码: public class MainActivity extends Acti ...
- Linux下查看USB设备的VID、PID命令
Linux下查看PID命令 cat /proc/bus/usb/devices 或 lsusb 方法一:在/etc/init.d/rcS中添加mount -t usbfs none /proc/bus ...
- css(非表格变成表格用)
父元素:display:table: 子元素:display:table-cell:vertical-align:middle:
- 修改apache配置文件去除thinkphp url中的index.php
例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index. ...
- lucene-SpanNotQuery和SpanOrQuery交迭与全局跨度
1.在匹配结果中排除相互交迭的跨度 SpanNotQuery构造函数的第一个参数表示要包含的跨度对象,第二个参数表示要排除的跨度对象. 1) SpanNearQuery quick_fox=new S ...
- java基本输入类型数据System.out.println()或System.out.print()
- elasticsearch高级配置之(一)----分片分布规则设置
cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active ...
- android代码实现免提功能
初始化AudioManager: private static AudioManager audioManager; 实现免提功能方法 protected void setSpeekModle() { ...
- 使用ReTrofit做缓存(结合上拉加载和下拉刷新)
1. noCache 不使用缓存,全部走网络 2. noStore 不使用缓存,也不存储缓存 3. onlyIfCached 只使用缓存 4. maxAge 设置最大失效时间,失效则不使用 需要服务器 ...
- Review Board的使用
代码审核工具.先在命令行界面,进入到工程的Main目录下,然后使用命令 svn diff>yus.diff 这样就将Main里面的所有内容生成了,然后在浏览器里进入到自己的Review Boa ...