全国信息学奥林匹克竞赛
全国信息学奥林匹克竞赛的教程,感想,解题方法。
编程老头
这个作者很懒,什么都没留下…
展开
-
信息学奥林匹克竞赛-Guide教程
如果你的参赛语言是Pascal,请下载Free Pascal和Guide下载地址如果你的参赛语言是C/C++,请下载MinGw和Guide,下载地址同上其实不管你选择哪门编程语言,Guide不过是你代码的编辑工具而已,并不能编译代码,如果要编译代码,需要调用Free Pascal的编译器。编译是什么?你可以想象把一个纯代码的文本文件(.pas文件)转化为一个二进制文件(.exe原创 2015-09-21 08:57:51 · 8840 阅读 · 0 评论 -
信息学奥林匹克竞赛-初赛抱佛脚攻略(选择题)
庞统友情提示:以下这些内容是我挑选了N久,最简练最简练了,不能再删更多!1. 一个完整的计算机系统应包括硬件系统和软件系统。 2. 目前微型计算机中采用的逻辑组件是大规模和超大规模集成电路。 3. 软件与程序的区别是 软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序是软件的一部分。4. IT 表示信息技术。5. 计原创 2015-09-02 08:29:02 · 6746 阅读 · 0 评论 -
信息学奥林匹克竞赛-复赛无脑操作攻略(文件读写)
功能:该程序可以在pas文件隔壁自动新建一个test.txt文件,并且在这个记事本文件里自动写入"helloworld"字样。beginassign(output,'test.txt');rewrite(output);write('helloworld');close(output);end.功能原创 2015-09-02 08:46:18 · 2418 阅读 · 0 评论 -
全国青少年信息学奥林匹克竞赛培训---冒泡排序
program sort;var a:array[0..9] of integer =(4,3,5,1,10,2,6,9,7,8);procedure Print(var _a:array of integer);var i:integer;begin for i:=0 to 9 do begin write(_a[i]:5); en原创 2013-01-07 21:31:02 · 456 阅读 · 0 评论 -
全国青少年信息学奥林匹克竞赛培训---插入排序
var a:array[0..9] of integer =(4,3,5,1,10,2,6,9,7,8);procedure Print(_a:array of integer);var i:integer;begin for i:=0 to 9 do begin write(_a[i]:5); end; writeln;end;procedure I原创 2013-01-08 20:21:29 · 395 阅读 · 0 评论 -
全国青少年信息学奥林匹克竞赛培训---选择排序
var a:array[0..9] of integer =(4,3,5,1,10,2,6,9,7,8);procedure Print(_a:array of integer);var i:integer;begin for i:=0 to 9 do begin write(_a[i]:5); end; writeln;end;procedure S原创 2013-01-08 23:00:10 · 444 阅读 · 0 评论 -
全国青少年信息学奥林匹克竞赛培训---堆排序
var a:array[1..10] of integer =(4,3,5,1,10,2,6,9,7,8);procedure Print;var c:integer;begin for c:=1 to 10 do begin write(a[c]:5); end; writeln;end;procedure adjust(i,n:integer);原创 2013-01-09 23:34:01 · 530 阅读 · 0 评论 -
全国青少年信息学奥林匹克竞赛培训---快速排序
var a:array[0..9] of integer =(4,3,5,1,10,2,6,9,7,8);procedure Print(_a:array of integer);var i:integer;begin for i:=0 to 9 do begin write(_a[i]:5); end; writeln;end;procedure原创 2013-01-09 20:15:01 · 605 阅读 · 0 评论 -
Pascal数塔问题
var a:array[1..5,1..5,1..3] of integer;procedure myinput;var i,j:integer;begin assign(input,'tower.txt'); reset(input); for i:=1 to 5 do begin for j:=1 to i do begin read(input,a[i,j,1原创 2013-03-10 12:42:50 · 872 阅读 · 0 评论 -
FreePascal环境下程序调试注意事项
在FP环境下调试程序的注意事项1. 调试前的几点注意事项(1) 增加程序本身的稳定性a) 静态查错为了减少无谓的调试,这一步很重要。往往一个TP中很容易查出的错误,FP却要花费惨重的代价。b) 很小的数据可以手工运算就好比分区联赛初赛中的阅读程序写运行结果一样,一些低级错误尽量不要依靠调试来检查。(2) 检查数组和数据的范围FP中有些错误同TP一样,会提前报原创 2013-03-19 11:31:10 · 1202 阅读 · 0 评论 -
dijkstra算法(Pascal描述)
constdim=6;max=200;varcost:array[1..dim,1..dim] of integer;i,j:integer;isfound:array[1..dim] of boolean;distance:array[1..dim] of integer;v0:integer;vtemp:integer;min:integer;counter:inte原创 2015-08-24 01:12:49 · 1449 阅读 · 1 评论 -
noip2012初赛-坐标统计
noip2012C-4-1(坐标统计)输入n个整点在平面上的坐标。对于每个点,可以控制所有位于它左下方的点(即x、y坐标都比它小),它可以控制的点的数目称为“战斗力”。依次输出每个点的战斗力,最后输出战斗力最高的点的编号(如果若干个点的战斗力并列最高,输出其中最大的编号)。 样例输入:71 23 45 13 4-1 6-7-19-2-10cons原创 2015-08-23 17:29:23 · 2379 阅读 · 0 评论 -
noip2011初赛-大整数开方
noip2011C_4_2(大整数开方)输入一个正整数n(1constSIZE=200;typehugeint=recordlen:integer;num:array[1..SIZE] of integer;end;vars:string;i:integer;target,left,middle,right:hugeint;function add(a,b:原创 2015-08-23 17:27:32 · 1861 阅读 · 0 评论 -
noip2011初赛-子矩阵
noip2011C-4-1(子矩阵)输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。若存在,输出所有子矩阵左上角的坐标;若不存在输出“there is no answer”。 样例输入:3 31 234 567 892 25 68 9 样例输出:2 2constSIZE=50;varn1,m1,n2原创 2015-08-23 17:25:03 · 1568 阅读 · 0 评论 -
noip2010初赛-哥德巴赫猜想
2010C_4_1(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2的偶数都可写成两个质数之和,迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于2且不超过n的偶数都能写成两个质数之和。constsize=1000;varn,r,i,j,k,ans:integer;p:array[1..SIZE] of integer;tmp:boolean;原创 2015-08-23 17:23:23 · 1589 阅读 · 0 评论 -
noip2009初赛-国王放置
2009C-4-2(国王放置)在n*m的棋盘上放置k个国王,要求k个国王互相不攻击,有多少种不同的放置方法。假设国王放置在第(x,y)格,国王的攻击的区域是:(x-1,y-1),(x-1,y),(x-1,y+1),(x,y-1),(x,y+1),(x+1,y-1),(x+1,y),(x+1,y+1)。读入三个数n,m,k,输出答案。题目利用回溯法求解。棋盘行标号为0~n-1,列标号为0~m-1。原创 2015-08-23 17:21:49 · 3395 阅读 · 1 评论 -
noip2009初赛-最大连续子段和
2009C-4-1(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。var a:ar原创 2015-08-23 17:20:29 · 1397 阅读 · 0 评论 -
noip2008初赛-找第K大的数
noip2008C_4_2(找第k大的数)给定一个长度为1,000,000的无序正整数序列,以及另一个数n(1≤n≤1000000),然后以类似快速排序的方法找到序列中第n大的数(关于第n大的数:例如序列{1,2,3,4,5,6}中第3大的数是4)vara:array[1..1000000]of integer;n,m,ans:longint;procedure swap(var a,原创 2015-08-23 17:19:00 · 2063 阅读 · 0 评论 -
noip2008初赛-字符串替换
noip2008C_4_1(字符串替换)给定一个字符串S(S仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串S,第二个字符串S’由26个字母组成,它是a~z的任一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母A和a的替换字母,即 S中的A用该字母的大写替换,S中的a用该字母的小原创 2015-08-23 17:17:09 · 1308 阅读 · 0 评论 -
noip2007初赛-棋盘覆盖
noip2007C_4_2(棋盘覆盖问题)在一个2k*2k个方格组成的棋盘中恰有一个方格与其他方格不同(图中标记为-1的方格),称之为特殊方格。现用L型(占3个小格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4^k−1)/3。在下表给出的一个覆盖方案中,k=2,相同的3个数字构成一个纸片。下面给出的程序是用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左原创 2015-08-23 17:09:53 · 865 阅读 · 0 评论 -
noip2007初赛-求字符串的逆序
noip2007C_4_1(求字符串的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入-1 终止程序。typestr1=string[100];varline:str1;kz:integer;procedure reverse(var s:str1);vari,j:integer;t:char;begin i:=1; j:=lengt原创 2015-08-23 17:08:25 · 584 阅读 · 0 评论 -
noip2006初赛-完善程序第二题
noip2006C_4_2由键盘输入一个奇数P(P<100,000,000),其个位数字不是5,求一个整数S,使P×S =1111...1 (在给定的条件下,解S必存在)。要求在屏幕上依次输出以下结果:(1)S的全部数字。除最后一行外,每行输出50位数字。(2)乘积的数字位数。 例1:输入p=13,由于13*8547=111111,则应输出(1)8547(2)6 例2:输入原创 2015-08-23 17:06:37 · 1498 阅读 · 0 评论 -
noip2006初赛-全排列
noip2006C_4_1(全排列)下面程序的功能是利用递归方法生成从1到n(n 样例输入3样例输出(每行输出5个排列)123 132 213 231 321312program noip2006C_4_1;vari,n:integer;a:array[1..10] of integer;count:longint;procedure perm(k:i原创 2015-08-23 17:02:06 · 1543 阅读 · 0 评论 -
noip2005初赛-判断质数
noip2005C_4_1判断质数 题目描述:给出一个正整数,判断这个数是否是质数。 输入:一个正整数n(1≤n≤10000)。 输出:如果n是质数,输出“YES”;否则,输出“NO”。 输入样例:10 输出样例:NOvarn,i:integer;begin read(n); if n=2 then writeln原创 2015-08-23 17:00:11 · 584 阅读 · 0 评论 -
noip2005初赛-木材加工
noip2005C_4_2木材加工 题目描述:木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。 输入:第一行是两个正整数N和K(1≤原创 2015-08-23 16:56:49 · 2618 阅读 · 0 评论 -
noip2004初赛-三角形内切圆的面积
noip2004C_4_1三角形内切圆的面积题目描述:给出三角形三边的边长,求此三角形内切圆(如下图所示,三角形的内切圆是和三角形三边都相切的圆)的面积。 输入:三个正实数a、b、c(满足a+b>c,b+c>a,c+a>b), 表示三角形三边的边长。 输出:三角形内切圆的面积,结果四舍五入到小数点后面2位。 输入样例:3 4 5 输出样例:3原创 2015-08-23 16:52:34 · 1080 阅读 · 0 评论