信息学竞赛中的读入比较与其他读入方法

目录

  • 注意事项
  • 输入输出时间测试

注意事项

读入注意这几点

  • 如果关闭同步:ios::sync_with_stdio(false)
    那么cin和scanf不能混用.
  • 不同系统下的longlong读入不一样.32位系统与64位系统longlong读入(或输出)时的格式不一样,32位系统下的读入(输出)是printf("%I64d,*x);
    而64位的是scanf("%lld",&x);
    而我们可以这样.
### scanf
ifdef WIN32
#define LL "%64d"
#else
#define LL "%lld"
#endif

读入(输出)的时候
直接scanf(LL,&x)
是不是很好用,当然我们完全可以使用cin,cout.(未关闭同步的cin,cout异常慢)

输入输出时间测试

1e7的数据 :cin 12.13
scanf 9.718
read 2.996
cout 20.91
printf 30.35
关闭同步后的cin 2.18
puts 1.47秒
不过我发现还是输入read,输出puts快.
以及具有非常快的速度的输入.时间是scanf的\(1/10\)

const int BUF_SIZE = 30;
char buf[BUF_SIZE], *buf_s = buf, *buf_t = buf + 1;
#define PTR_NEXT()     {         buf_s ++;         if (buf_s == buf_t)         {             buf_s = buf;             buf_t = buf + fread(buf, 1, BUF_SIZE, stdin);         }     }
#define readint(_n_)     {         while (*buf_s != '-' && !isdigit(*buf_s))             PTR_NEXT();         bool register _nega_ = false;         if (*buf_s == '-')         {             _nega_ = true;             PTR_NEXT();         }         int register _x_ = 0;         while (isdigit(*buf_s))         {             _x_ = _x_ * 10 + *buf_s - '0';             PTR_NEXT();         }         if (_nega_)             _x_ = -_x_;         (_n_) = (_x_);     }

原文地址:https://www.cnblogs.com/tpgzy/p/9525039.html

时间: 2024-11-08 23:04:40

信息学竞赛中的读入比较与其他读入方法的相关文章

最小割模型在信息学竞赛中的应用___读后的收获

在看了Amber的<最小割模型在信息学竞赛中的应用>后感觉到了自己的智障-- 我还是按照目录来,其实第一个子目录中我收获最大的还是01分数规划的内容. 01分数规划:给定n个条件,在其中选取一些条件,使得要求的目标函数达到最值. 通俗一点说:给定两个数组,a[i]表示选取i的收益,b[i]表示选取i的代价.如果选取i,定义x[i]=1否则x[i]=0.每一个物品只有选或者不选两种方案,求一个选择方案使得R=sigma(a[i]*x[i])/sigma(b[i]*x[i])取得最值,即所有选择物

【转】对信息学竞赛中调试方法的建议

信息学之于其他竞赛学科的不同,就在于需要通过写程序来表达自己的思维和想法.如何尽可能又快又好地调试程序,成了我们必须要思考的问题.相信很多同学都有过这样的经历:思考一个算法只花了半个小时,但是把这个算法写对却花了一天..思考与实现的时间往往不成正比. 下面是我结合自己的经验给出的一些小建议,仅供大家参考,如果有不太好的地方,也欢迎指正~ 关于调试有一个大前提,就是思考的方向一定得严谨正确,因为思考决定实现,如果思考的时候有漏洞,那么实现的程序肯定也不强健.在想出算法之后不要急着实现,一定要认真反

算法竞赛中常见的数学(一):Fibonacci数列

最近做的题目有很多都是与Fabonacci数列有关的,身为信息组蒟蒻的我最近经常与数学组李中一大神(Orz)畅谈,其中包括Fabonacci数列的若干性质,此处做一个总结. 参考资料: <组合数学(第5版)>.<具体数学(第2版)> 正文: Fibonacci数列是形如0.1.1.2.3.5.8.13.21.34……的数列.递归形式定义为: 数列F[n]=F[n-1]+F[n-2],其中F[0]=0,F[1]=1. 当然也有这样的类Fibonacci数列,即形如: G[n]=G[n

美梦1(JSOI2014,算法艺术与信息学竞赛)

[问题描述] 这天晚上,约翰做了个奇怪的美梦.他拥有了分别分布在N座高高低低的山上的N个池塘,N座山连成一条直线,从左往右第i座山的高度是Hi.池塘中的鱼都是他请专家运用科学的方法专门养殖的,为了保护每个池塘的生态环境,他现在要在这N座山上建造若干个看护点.约翰是个很节约的人,在第i座山建造看护点的花费为Ci.假设在第i座山建造一个看护点,则往左或者往右第一座不比这座山低的山将挡住看护的视线.譬如说: {Hi} = {1 4 4 5 7 2}表示第一座山高度为1,第二座山高度为4... 如果在第

算法艺术与信息学竞赛书摘

<算法艺术与信息学竞赛>这本书我详细看了1.1.1.2.1.3,之后就看得不是很懂了,所以还是把摘要写出来,方便让我知道到底能学到什么. 第一章 算法与数据结构 “数据结构+算法=程序设计” 从理论分析和实际应用两方面阐述了算法与数据结构的基本知识. 1.1 概括的叙述了算法.数据结构.以及计算理论的一些概念. 1.2从实例出发,概括的介绍了一些基本算法,包括美剧.贪心.递归.递推. 1.3介绍基本数据结构,包括线性表队列.栈.树.二叉树.以及图遍历与拓扑排序. 1.4介绍了一些实用数据结构,

国王的游戏(华东师范大学-信息学竞赛学教案)

信息学竞赛学教案 [引入问题]:国王的游戏 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这n位大臣排成一排,国王站在队伍的最前面.排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果.国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏

信息学竞赛一本通提高版AC题解—例题1.1活动安排

书中代码有误.书中为sort(a+1,a+n+1,Cmp). // // Created by yuxi on 19-1-13. // /* * * <信息学竞赛一本通-提高版>全部AC解答及解释 * * 第一部分 基础算法 * 第一章 贪心算法 * 例题1 活动安排 * */ #include <iostream> #include <algorithm> #include <fstream> #include <string> using n

【ZOJ】3785 What day is that day? ——浅谈KMP应用之ACM竞赛中的暴力打表找规律

首先声明一下,这里的规律指的是循环,即找到最小循环周期.这么一说大家心里肯定有数了吧,“不就是next数组性质的应用嘛”. 先来看一道题 ZOJ 3785 What day is that day? Time Limit: 2 Seconds      Memory Limit: 65536 KB It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? Input There are multiple tes

算法竞赛中数论理论浅析

一.基本概念 带余除法(division algorithm,除法定理):a∈Z,d∈Z*,有唯一的整数 q 和 r,并且0≤r<d0,满足 a= d q+r.q 称为商,r  称为余数.通俗说法:整数除以正整数得到唯一的商(quotient)和余数(residue).  整除(divide exactly):称 a 整除 b ,当整数 a 除以非零整数 b ,商为整数,且余数为零, 我们就说a能被b整除(或说b能整除a),记作 b|a.b 称为 a 的约数(因数,common divisor)