acm的做题技巧

1.一般用C语言节约空间,要用C++库函数或STL时才用C++;

cout、cin和printf、scanf最好不要混用。

大数据输入输出时最好不要用cin、cout,防止超时。

(或加上

1 ios::sync_with_stdio(false);

2.有时候int型不够用,可以用long long或__int64型(两个下划线__)。

值类型表示值介于 -2^63 (
-9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807
)之间的整数。

1 printf("%I64d",a); //__int64 一般VC编译器使用
2 printf("%lld",a); //long long 一般g++编译器使用

3.OJ判断是只看输出结果的。

所以大部分题处理一组数据后可以直接输出,就不需要用数组保存每一个Case的数据。

while(case--)
{scanf(...);
......
printf(...);
}

4.纯字符串用puts()输出。

数据大时最好用scanf()、printf()减少时间。

先用scanf(),再用gets()会读入回车。所以在中间加一个getchar();

scanf("%c%c",&c1,&c2)会读入空格;建议用%s读取字符串,取第一个字符。

5.

读到文件的结尾,程序自动结束

while( ( scanf(“%d”,&a) ) != -1 )
while( ( scanf(“%d”,&a) ) != EOF)
while( ( scanf(“%d”,&a) ) == 1 )
while( ~( scanf(“%d”,&a) )  )

读到一个0时,程序结束

while( scanf(“%d”,&a) ,a)

读到多个0时,程序结束

while( scanf(“%d%d%d”,&a,&b,&c),a+b+c ) //a,b,c非负
while( scanf(“%d%d%d”,&a,&b,&c),a|b|c )

6.数组定义int a[10]={0};可以对其全部元素赋值为0;

数组太大不要这样,防止CE。

全局变量,静态变量自动初始化为0;

7.有很多数学题是有规律的,直接推公式或用递归、循环。

8.圆周率=acos(-1.0)

自然对数=exp(1.0)

9.如果要乘或除2^n,用位移运算速度快。a>>n;a<<n;

10.定义数组时,数组大小最好比告诉的最大范围大一点。

字符数组大小必须比字符串最大长度大1。

处理字符数组时不要忘了在最后加‘/0‘或者0。

11.擅用三目运算符

int max(int a,int b)
{return a>b?a:b;
}
int gcd(int m,int n)
{return n?gcd(n,m%n):m;
}
 int abs(int a)
{return a<0?-a:a;
}

12.将乘法转换成加法减少时间

log(a*b)=log(a)+log(b)

将乘法转换成除法防止溢出

a/(b*c)=a/b/c

13.排序要求不高时可以用C++的STL模板函数sort(),stable_sort()

int a[n]={...};
sort(a,a+n);
bool cmp(int m,int n)
{return m>n;
}
sort(a,a+n,cmp);

14.有的题数据范围小但是计算量大可以用打表法

先把结果算出来保存在数组里,要用时直接取出来。

15.浮点数比较时最好控制精度

#define eps 1e-6
fabs(a-b)<eps

16.有些字符串与整型的转换函数是非标准的

可以使用sscanf()和sprintf()代替

sscanf(s,"%d",&n);//从字符串s中读入整数n
sprintf(s,"%d",n);//将n转换为字符串s
时间: 2024-10-21 19:15:27

acm的做题技巧的相关文章

英语六级之段落信息匹配题型做题技巧

在今年改革的四六级题型中,阅读题里出现了一种"高端大气上档次"的题型--段落信息匹配题,占去了10%的分值.为此,很多考生都纷纷表示对这种题的担心.此次,新东方在线网络课堂四六级辅导名师赵建昆将对这种题型的备考方法和解题技巧进行解析,希望广大考生引起重视. 整个阅读部分占总分值的35%,而我们的考试时间只有forty minnutes,建昆老师建议大家在段落信息匹配题当中花去的时间千万不要超过15分钟,所以整体上看做阅读时需要注意一个很重要的问题:严控时间.  每一年考四六级的考生中,

ACM做题小技巧

1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 大数据输入输出时最好不要用cin.cout,防止超时. 2.有时候int型不够用,可以用long long或__int64型(两个下划线__). 值类型表示值介于 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之间的整数. printf("%I64d",a); //_

acm比赛刷题小技巧

ACM做题过程中的一些小技巧. 1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 大数据输入输出时最好不要用cin.cout,防止超时. 2.有时候int型不够用,可以用long long或__int64型(两个下划线__). 值类型表示值介于 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之间的整数. printf("%I6

acm做题心得&amp;&amp;语录

1.切一道难题,总比做百道水题轻松,而且显然前者对你有本质的提升.(后续更新) acm做题心得&&语录,布布扣,bubuko.com

FFT/NTT做题方法与调试技巧(+提高码题效率的一些想法)

(其实本文应该写成了"结合FFT讨论的调试技巧+码题方法",语文不好一写文章就偏题QAQ) 有意见欢迎提出,有遗漏欢迎补充! FFT(快速傅里叶变换)/NTT(数论变换)是卷积运算常见而实用的优化 但是FFT/NTT的处理过程并不像暴力运算(差不多是多项式乘法)那样能够直观地反映卷积结果的实时变化. 因此在使用FFT时将会或多或少地加大调试的难度. 如果调试程序时直接跟踪变量,每步手算结果比对,不仅会耽误大量时间,而且效果可能并不理想. 直接肉眼查错效率可能也不太高. 但也正由于FFT

50题(ACM学习推荐题)

POJ推荐50题 1. 标记"难"和"稍难"的题目可以看看,思考一下,不做要求,当然有能力的同学可以直接切掉. 2. 标记为 A and B 的题目是比较相似的题目,建议大家两个一起做,可以对比总结,且二者算作一个题目. 3. 列表中大约有70个题目.大家选做其中的50道,且每类题目有最低数量限制. 4. 这里不少题目在 BUPT ACM FTP 上面都有代码,请大家合理利用资源. 5. 50个题目要求每个题目都要写总结,养成良好的习惯. 9. 这个列表的目的在于让

python做题

Python题目 1.打印一个九九乘法表 #!/usr/bin/env python # -*- coding: utf-8 -*- """ __author__ = 'YeXiaodong' __QQ__= '12519460' __Email__ = '[email protected]' """ x = 1 list_table = [] print('九九乘法表'.center(100,' ')) while x < 10: lis

做题神器风靡:在线教育虚火旺盛的罪魁祸首是谁?

在线教育的巨大潜力有目共睹,不管是创业者还是巨头都纷纷杀入其中.在线教育本身囊括的范围极其广阔,从胎教.学龄前教育.中小学教育.高等教育,再到职业教育,乃至细分化的英语教育.技能教育等,构成一个完整的教育生态圈.但让人无奈的是,国内在线教育最火爆的却还是中小学教育. 而且由于国内教育体系本身存在的弊端,导致中小学教育主要以书山题海为工具,向高分发起追逐.在这样的大背景下,在线教育最火爆的是各种做题神器App.做题神器的风靡,让整个在线教育行业看起来形势一片大好.然而,做题神器真的就是解决在线教育

USACO 做题小结

还记得之前,发过一篇阶段性总结与未来规划..结果由于最近rp爆发(保研成功+进wf)后者显然靠bin神,前者也是运气.因此,放松了一段时间.然后就开始刷usaco了,原因是不用花时间找解题报告在NOCOW上全部都有,很是方便.所以只需单独开一片随笔把每天做题总结一下. Chapter1-Getting started(入门) 都是超级大水题就略过了. Chapter2-Bigger Challenges(更大的挑战) 2.1 castle  这是一道基本的搜索题目,很基础.前面两个值直接搜的,后