为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

如何提高编程能力

2010-01-01 36页 ppt 265KB 41阅读

用户头像

is_763036

暂无简介

举报
如何提高编程能力null如何快速提高OI编程水平如何快速提高OI编程水平香港科技大学 计算机科学与工程学系 陈启峰总缆总缆OI中所需要的知识与技能 OI中各种编程语言对比 程序中常见的错误总结 程序常数优化 程序正确性检查 OI中所需要的知识与技能OI中所需要的知识与技能 1)编程能力 2)算法与数据结构的设计能力 二者同等重要OI中各种编程语言对比OI中各种编程语言对比OI中各种编程语言对比OI中各种编程语言对比PASCAL的优势 解决栈溢出问题: {$M 1000000000} 灵活的数组下标: var a:array[...
如何提高编程能力
null如何快速提高OI编程水平如何快速提高OI编程水平香港科技大学 计算机科学与学系 陈启峰总缆总缆OI中所需要的知识与技能 OI中各种编程语言对比 程序中常见的错误总结 程序常数优化 程序正确性检查 OI中所需要的知识与技能OI中所需要的知识与技能 1)编程能力 2)算法与数据结构的设计能力 二者同等重要OI中各种编程语言对比OI中各种编程语言对比OI中各种编程语言对比OI中各种编程语言对比PASCAL的优势 解决栈溢出问: {$M 1000000000} 灵活的数组下标: var a:array[-10..10] of char; OI中各种编程语言对比OI中各种编程语言对比C++与C的优势 语法灵活: for(a=b=c=d=0;a*a<=100;a++){..} 读入方式灵活: scanf(“%d:%d:%d”,&hour,&minute,&second); 程序中常见的错误总结程序中常见的错误总结数组范围问题 局布变量问题 特殊情况 精度问题 变量名混用 中间运算溢出 栈空间不足 初始化问题 输入输出文件名 数组范围问题数组范围问题Q1:一棵区间是[1,1000000]的线段树,以下哪个是可行的线段树数组且空间是最小的? A. 1000000 B. 2000000 C. 2^20 D. 2^21 E. 2^22 Q2:一个边数为10000的网络流图,最少需要多大的数组? 局布变量问题 局布变量问题 Q:计算1*(1)+2*(1+2)+3*(1+2+3)…10*(1+2+..+10) 以下程序有什么问题? int i; int sum(int r){ int tot=0; for(i=r;i>=1;i++) tot=tot+r*i; return tot; }int main(){ int tot=0; for(i=1;i<=10;i++) tot+=sum(i); printf(“%d\n”,tot); }特殊情况特殊情况Q1: 以下用来的交换代码为什么在Qsort中出错? procedure swap(var a,b:longint); begin a:=a xor b; b:=a xor b; a:=a xor b; end;精度问题 精度问题 Q:输出是什么? #include #include using namespace std; int main(){ double a=1e10,b=1e-10; if(a==a+b)//what if (a-a==b)? cout<<"SAME"< #define fr(i,a,b) for(i=a;i<=b;++i) using namespace std; int i,n,sum; int main(){ cin>>n; fr(i,1,n) sum+=i; cout< const int md=1000000007; const int md2=1000000011; int tmp,i,tot=0; int main(){ for(i=1;i<=50000000;i++) if((long long)i*i%md>(long long)(i-1)*(i-1)%md) tot=(tot+(long long)i*i%md)%md2; std::cout< clock();Built-in FunctionBuilt-in FunctionIn C++: memmove(); memset(); 用scanf,printf In pascal move(); filldword();编译开关优化编译开关优化fpc -O2 filename.pas g++ -O2 filename.cpp Stack: g++ -O2 filename.cpp -Wl,--stack,1000000000程序正确性检查程序正确性检查Five Steps 第一、认真读题 第二、设计算法 第三、总体规划 第四、编写程序代码 第五、最后检查程序程序正确性检查程序正确性检查第一、认真读题。要做到一字不漏,突出重点。读错题是经常出现的事,也是很冤枉的事。今年在克罗地要参加的国际奥林匹克信息学竞赛中,我第二试就看错题了。我把第二题和第三题的时间限制4秒和0.3秒看反了。那是因为我看题的顺序是1、3、2题,看时限的顺序是1、2、3题。看错相差悬殊的时限对结果造成不利的影响。虽然第二题我做得特别好,甚至是全场最好的,4秒时限的题目程序在0.3秒内都出解了,但是第三题却有不少的测试点使得程序超时。最终我只得到100+100+60分,全场第4。程序正确性检查程序正确性检查第二、设计算法。保持一个简单形象的头脑。将问题变得越简单,越形象,就越有助于你找到正确的算法。每道题目多想几种不同的算法,要注意正确性、全面性、简洁性和你的熟悉程度。还要挖掘出题中有用的信息,尤其特殊条件。程序正确性检查程序正确性检查第三、总体规划。以期望分值为目标,综合考虑最坏情况。每一题我要用哪种算法,需要多少时间,有多大把握,估计能拿多少分。接下来要做的就是按着计划走。需要补充的是,需要保证30分钟的检查时间。当时实际操作超出计划时,要立即制定新的。程序正确性检查程序正确性检查第四、编写程序代码。认真、仔细、全面、简洁。 1)写代码时:每写完一小部分代码后,就回头读读代码是否和你所要描述的一致。尤其要注意变量是否用得正确,注意是否会数组越界,变量是否会溢出。程序正确性检查程序正确性检查第四、编写程序代码。认真、仔细、全面、简洁。 2)写完代码后:首先浏览一次代码,看整体框架,看是否漏了某些过程。然后一个一个变量地检查细节,对于每个变量都问问自己,“这变量具体示什么?这里应该要放什么样的值?匹不匹配?”。 前两步:回头写代码,浏览看框架,品味读细节程序正确性检查程序正确性检查第四、编写程序代码(60min~120min)。认真、仔细、全面、简洁。 3)调试: A)调试样例、小数据; B)写一个Makedata来生成数据,包括随机数据,特殊数据,极端数据; C)写一个应用朴素算法的Check来检查正确性,可考虑与程序并存的方式。程序正确性检查程序正确性检查第五、最后检查程序。检查程序的数组范围,数据类型是否恰当,静态空间、栈空间,运行时间,考虑的情况是否全面,输出和文件名是否正确。总结总结 了解使用的语言和环境 用常用出错表检查代码 用常数优化技巧优化可能超时的程序 Five Steps 保证程序正确性 ReferenceReferencehttp://www.cplusplus.com/ http://www.topcoder.com/tc nullQ&A
/
本文档为【如何提高编程能力】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索