当前位置:文档之家› ACM错误提示、常见问题

ACM错误提示、常见问题

ACM错误提示、常见问题
ACM错误提示、常见问题

ACM错误提示、常见问题

F.A.Q.(Chinese)

我的程序为什么不能编译通过呢?

Online Judge 要求C/C++程序符合Ansi标准:

ANSI 标准和 Microsoft Visual C++ 存在一些不同的地方,比如:

0)main函数必须声明为int ,也就是 void main() 必须变成 int main()

VC同样可使用int main,只是程序最后需要 return 0;。

1)Microsoft Visual C++ 可以将 main 函数声明为 void,而 ANSI 中必须为 int main

2)请避免使用如下方式声明变量i

for (int i=0; i<10; i++)

{

...

}

您可以在For 语句之前,进行声明。

3)itoa 不是一个 ANSI 函数

4)stricmp 不是一个 ANSI 函数

5)sqrt() 的可能用法:sqrt(double (x)); //强制转换为double

6)OnlineJudge 中如何使用64位数?

定义64位数使用 long long 类型,输出格式串中使用 %lld 表示64位数。

虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:

1.Free Pascal是一个32位的编译器,而Turbo Pascal只是16位编译器;

2.Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows上使用。

如果你的代码是遵守ANSI Pascal的,那么代码从Turbo Pascal移植到Free Pascal是没有问题的。

下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些语言特性:

1.函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数重载功能。

2. PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字。

3. FAR,NEAR不再是关键字了。原因是Free Pascal是32位系统,不再需要这些关键字。

4.布尔表达式不一定要全部进行计算。只要最终结果已经能够确定,就不再计算其它还没有计算的部分了。

比如布尔表达式exp1 AND exp2 AND exp3,如果已知exp1的结果是false,那么怎么表达式的结果肯定是false,exp2和exp3就不用进行计算了。

5.在Free Pascal中,中的元素都是4个字节长的。

6.表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。

7.如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。

8. Free Pascal在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确的写入。

9. Free Pascal理论上可以使用4GB的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制)。

这是Free Pascal由于32位的编译器。但是对于Turbo Pascal来说,由于是16位的编译器,

因此不能定义大小超过64KB的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。

Online Judge 评判结果分别表示什么意思?

当你提交的程序被Online Judge评判完毕后,通常结果将立刻返回,或者你也可以在“Solutions”页看到评判结果。

详细测试多数据测试模式下,将显示出各个测试数据的测试结果,并且无论结果如何,都会用所有测试数据进行测试。

而一般多测试模式下,如果全对,则为Accepted;若其中某次数据出错,则评测中止,并返回此数据出错的信息。

常见的Online Judge将评判结果分为如下几类:

Accepted

程序的输出完全满足题意,通过了全部的测试数据的测试。

Wrong Answer

你的程序顺利地运行完毕并正常退出,但是输出的结果却是错误的。

注意:有的题包含多组测试数据,你的程序只要有一组数据是错误的,结果就是WA。

Presentation Error

你的程序输出的答案是正确的,但输出格式不对,比如多写了一些空格、换行。

请注意,大部分程序的输出,都要求最终输出一个换行。

不过,计算机程序是很难准确判断PE错误的,所以,很多PE错误都会被评判成WA。

Compilation Error

你的程序没有通过编译。你可以点击文字上的链接,查看详细的出错信息,对照此信息,可以找出出错原因。

一般来说,这种错误主要是由 Linux 环境下相关编译器与你使用的本地编译器之间的差异造成的

Judging

我们正在运行你的程序进行测试,请稍候。

Rejudging

我们更新了测试数据或者评判程序,并且正在进行重测,这个过程比较耗费资源,请稍候。

Time Limit Exceeded

你的程序运行的时间超过了该题规定的最大时间,你的程序被Online Judge强行终止。

注意:TE并不能说明你的程序的运行结果是对还是错,只能说明你的程序用了太多的时间。

Memory Limit Exceeded

你的程序运行时使用的内存,超过了该题规定的最大限制,或者你的程序申请内存失败,你的程序将被Online Judge强行终止。

注意:ML并不能说明你的程序的运行结果是对还是错,只能说明你的程序用了或者申请了太多的内存。

Function Limit Exceeded

你的程序运行时使用我们不允许使用的调用,将会得到此错误,诸如文件操作等相关函数。

请特别注意:system("PAUSE"); 也会导致此错误。

Output Limit Exceeded

你的程序输出了太多的东西。

Online Judge规定提交的程序在运行的时候只能输出1024K字节的东西,如果你输出太多,将导致此错误。

我们保证所有的题目的标准输出都小于1024K字节。

Runtime Error

你的程序出现了“运行时错误”。

大部分情况下,NKOJ系统将返回给你一个Runtime Error的编号,由SIG或FPE开头,后面跟随一个整数。具体的解释请点击此处查看。

System Error

系统发生了错误。由于异常因素导致系统没有正常运作。我们尽力保证系统的稳定运行,但如您遇此情况,请联系管理员。

Online Judge 支持哪些编程语言?

到目前为止,本 Online Judge 已经支持 C、C++、PASCAL、JAVA 编程语言如果题目包含多组测试数据,我应该在何时输出我的结果?

OnlineJudge中,你的程序的输入和输出是相互的,因此,每当处理完一组测试数据,就应当按题目要求进行相应的输出操作。而不必将所有结果储存起来一起输出。

GCC 中如何使用64位数?

定义64位数使用 long long 类型,输出格式串中使用 %lld 表示64位数。

关于本系统

本系统内核部分作者:孙威、王岩,WEB部分作者:王岩。自主开发,保留一切权利。

南开大学信息学院、南开大学ACM协会

Runtime Error 代号介绍

SIG (Signal,Linux系统信号) 部分:

(4)SIGILL 执行了非法指令. 通常是因为可执行文件本身出现错误, 或者试图执行数据段.堆栈溢出时也有可能产生这个信号.

(6)SIGABRT 程序自己发现错误并调用abort时产生.

(6)SIGIOT 在PDP-11上由iot指令产生, 在其它机器上和SIGABRT一样.

(7)SIGBUS 非法地址, 包括内存地址对齐(alignment)出错. eg: 访问一个四个字长的整数, 但其地址不是4的倍数.

(8)SIGFPE 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误.

(11)SIGSEGV 试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.

造成这种错误的原因有很多,主要原因有三条:

一、数据下标越界,包括越上界和越下界。

二、堆栈溢出,比如递归层数过多。

三、不恰当的指针使用。

FPC (由Free Pascal 产生的错误代码):

由于OJ系统已经限制了程序的行为,所以以下部分代码并不会实际出现,此处列举仅仅为了文档相对完整。

1 Invalid function number 错误的功能代码

2 File not found 文件未找到

3 Path not found 目录未发现

4 Too many open files 打开太多的文件

5 File access denied 文件访问拒绝

6 Invalid file handle 错误的文件句柄

12 Invalid file access code 错误的文件访问代码

15 Invalid drive number 错误的驱动器数字

16 Cannot remove current directory 不能移动当前目录

17 Cannot rename across drives 不能跨越驱动器更改文件名

100 Disk read error 磁盘读错误

101 Disk write error 磁盘写错误

102 File not assigned 文件未曾建立关联

103 File not open 文件未打开

104 File not open for input 文件不能打开读数据

105 File not open for output 文件不能打开写数据

106Invalid numeric format 错误的数字格式

从标准输入(Text文件)中预期得到的数字格式不对.

150 Disk is write-protected

151 Bad drive request struct length

152 Drive not ready

154 CRC error in data

156 Disk seek error

157 Unknown media type

158 Sector Not Found

159 Printer out of paper

160 Device write fault

161 Device read fault

162 Hardware failure

200Division by zero

被除数为0.

201Range check error

如果你编译你的程序时设置了方位检查,原因有可能是:

数组访问超过了声明的范围.

试图给一个变量赋值超过其范围(例如枚举类型).

202Stack overflow error

栈溢出

栈增长超过了最大值 (in which case the size of local variables should be reduced to avoid this error), or the stack has become corrupt. 只有当栈检查时才出现该错误.

203Heap overflow error

堆溢出

堆增长超过了上界. This is caused when trying to allocate memory exlicitly with New, GetMem or ReallocMem, or when a class or object instance is created and no memory is left. Please note that, by default, Free Pascal provides a growing heap, i.e. the heap will try to allocate more memory if needed. However, if the heap has reached the maximum size allowed by the operating system or hardware, then you will get this error.

204Invalid pointer operation

错误的指针操作

使用 Dispose or Freemem 时使用错误的指针 (特别的, Nil)

205Floating point overflow

浮点数上溢

你试图使用或产生一个太大实数.

206Floating point underflow

你试图使用或产生一个太小实数.

207Invalid floating point operation

错误的浮点数操作

可能是你开平方根或者对数时使用负数.

210Object not initialized

对象未初始化

When compiled with range checking on, a program will report this error if you call a virtual method without having called istr constructor.

211 Call to abstract method

212 Stream registration error

213 Collection index out of range

214 Collection overflow error

215Arithmetic overflow error 数字超出范围

例如3000000000超出长整形范围

216 General Protection fault

217 Unhandled exception occurred

219 Invalid typecast

227 Assertion failed error

ACM训练题集一

poj1035:拼写检查 时间限制: 2000毫秒内存限制: 65536K 提交总数: 11190 : 4140 说明 作为一个新的拼写检查程序的开发团队成员,你写的模块,将检查使用一切形式的所有已知的正确的话字典的 话的正确性。如果这个词在字典中缺席那么它可以取代正确的话(从字典)可以取得下列操作之一: 从单词的一个字母删去 ;在任意一个字母的单词一个字母 取代,插入一个?任意字母到单词 ,你的任务是编写程序,会发现每一个给定的单词从字典中所有可能的替代。 输入 输入文件的第一部分包含从字典中的所有单词。每个字中占有它自己的行。完成这部分是由一个单独的行上的单字符'#' 。所有的字是不同的。将有10000字的字典。 文件的下一部分,包含了所有的单词进行检查。每个字中占有它自己的行。这部分也完成了由一个单独的行上的单字符'#' 。将有最多50个字进行检查。 输入文件中的所有单词(从字典和被检查的词字)只包括小字母字符,每一个包含15个字符最多。 输出 写入到输出文件中完全检查它们在输入文件的第二部分中出现的顺序每个字一行。如果这个词是正确的(即它在字典中存在)写留言:“是正确的“,如果这个词是不正确的,那么先写这两个字,然后写字符。”:“(冒号),并在一个单独的空间写了所有可能的替代品,用空格隔开这些替代应在书面的顺序。其在字典中(在输入文件的第一部分)。出现,如果有这个字没有替换,然后换行,应立即按照冒号。 样例输入 我是有我更多的比赛,我太iF奖#我知道米的较量HAV OO或我的网络连接MRE#

输出范例 我是正确的认识到:奖米:我的我的比赛是正确的甲肝:已经有OO:太:我是正确的FI:我MRE:更多的我 poj3080:蓝色牛仔裤 时间限制: 1000毫秒内存限制: 65536K 提交总数: 6173 接受日期: 2560 说明 基因地理工程是IBM与国家地理学会,是分析,从成千上万的贡献者地图地球是如何填充DNA的研究伙伴关系,作为IBM的研究人员,你一直负责编写一个程序,会发现共性之间个人调查资料,以确定新的遗传标记,可与相关的DNA 片段。DNA碱基序列是指出在它们在分子中发现的顺序列出的氮基地。有四种碱基:腺嘌呤(A),胸腺嘧啶(T),鸟嘌呤(G),胞嘧啶(C)。一个6碱基的DNA序列可以作为TAGACC代表。鉴于一组DNA碱基序列,确定在所有序列中出现的最长的系列基地。 输入 输入到这个问题,将开始与行包含一个单一的整数n表示数据集的数目。每个数据集由以下几部分组成组成: ?一个正整数m(2 <= M <= 10)的碱基序列,在此数据集。 ?m行每片含60个碱基组成的单一碱基序列。 输出 对于每一个输入数据集,输出基地序列的最长共同所有的碱基序列。如果最长的公共子序列的长度小于3基地,显示字符串“没有显着的共性”。如果存在多个子序列相同的长度最长,只输出序列的按字母顺序排列第一。

北大ACM试题分类

北大acm试题分类(转) 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 https://www.doczj.com/doc/d718402636.html,/logs/13929723.html 经过我初步的整理,一个比较完整的归类已经完成,现在发布给大家,希望可以方便大家练习,如有不足,还请大家见谅,这个可能会随时有更新,请大家注意.如果有什么要求或补充的可以跟贴提出, OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序 (poj1094) (5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020) (6)最大流的增广路算法(KM算法). (poj1459,poj3436) 三.数据结构. (1)串 (poj1035,poj3080,poj1936) (2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299) (3)简单并查集的应用. (4)哈希表和二分查找等高效查找法(数的Hash,串的Hash) (poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503) (5)哈夫曼树(poj3253) (6)堆 (7)trie树(静态建树、动态建树) (poj2513)

ACM竞赛试题集锦

取石子游戏 Time Limit:1S Memory Limit:1000K Total Submit:505 Accepted:90 Description 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input 输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000。 Output 输出对应也有若干行,每行包含一个数字1或0,如果最后你是胜者,则为1,反之,则为0。 Sample Input

2 1 8 4 4 7 Sample Output 1 跳蚤 Time Limit:1S Memory Limit:1000K Total Submit:198 Accepted:44 Description Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。其中最后一个是M,而前N个数都不超过M,卡片上允许

有相同的数字。跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度。而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物。 比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务:他可以先向左跳10个单位长度,然后再连向左跳3次,每次15个单位长度,最后再向右连跳3次,每次18个单位长度。而持有卡片(12, 15, 18)的跳蚤,则怎么也不可能跳到距他左边一个单位长度的地方。 当确定N和M后,显然一共有M^N张不同的卡片。现在的问题是,在这所有的卡片中,有多少张可以完成任务。 Input 两个整数N和M(N <= 15 , M <= 100000000)。 Output 可以完成任务的卡片数。 Sample Input

ACM常见题型个人解法

求最值 时间限制(普通/Java) : 1000 MS/3000 MS运行内存限制: 65536 KByte 总提交: 9915 测试通过: 2804 比赛描述 给定N个整数(1<=N<=100),求出这N个数中的最大值,最小值。 输入 多组数据,第一行为一个整数N,第二行为N个不超过100的正整数,用空格隔开。 输出 对每组数据输出一行,包含两个整数,用一个空格隔开,分别表示N个数中的最大值和最小值 样例输入 5 4 6 7 3 1 4 4 3 5 1 样例输出 7 1 5 1 #include int main() { int str[101]; int i,n; for(;scanf("%d",&n)==1;) {

int max=-1; int min=101; if(0<=n&&n<=100) { for(i=0;istr[i]?max:str[i]; min=min

F n = F n - 1 + F n - 2 用文字来说,就是斐波那契数列由0和1开始,之后的斐波那契数就由之前的两数相加。首几个斐波那契数是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,……………… 特别指出:0不是第一项,而是第零项。 在西方,最先研究这个数列的人是比萨的列奥纳多(又名斐波那契),他描述兔子生长的数目时用上了这数列。 ? 第一个月有一对刚诞生的兔子 ? 第两个月之后它们可以生育 ? 每月每对可生育的兔子会诞生下一对新兔子 ? 兔子永不死去 假设在n 月有新生及可生育的兔子总共a 对,n+1月就总共有b 对。在n+2月必定总共有a+b 对:因为在n+2月的时候,所有在n 月就已存在的a 对兔子皆已可以生育并诞下a 对后代;同时在前一月(n+1月)之b 对兔子中,在当月属于新诞生的兔子尚不能生育。 现请以较短的时间,求出斐波那契数列第n 项数值,0≤n ≤40。 输入 斐波那契数列项数n ,0≤n ≤40。 输出

ACM一期 基础训练计划

这个训练计划我也只是把我知道的知识点罗列出来而已. 其实acm还有很多方面的知识。 可能到acm生涯结束的时候还是无法把所有的知识都吃透 所以acm的知识能学多少算多少,知识重要的不是你知道的多,重要的是你能否熟练的运用他们! 题目注意事项: zoj:https://www.doczj.com/doc/d718402636.html,/ grid:https://www.doczj.com/doc/d718402636.html,/ hdu:https://www.doczj.com/doc/d718402636.html,/ zquoj:也就是我们的oj 一.数据机构基础。 请自学完数据结构书:2,3,4,6,7,9.1,9.2.1 9.3 10 这几章,带*号可以暂时掠过,以后再看。然后自行完成oj DS开头的题目。 注意栈队列这些数据结构一般不用像书本那样写得那么严谨。在acm中,往往因为时间关系,一般写成简单的模式:请参考附件:栈与队列acm中的简单实现.txt 其它数据结构请自行简化。 二.其他数据结构 1.trie树 请看附件trie树的相关附件或到网上搜索。注意自己写好和简化模版。 Trie树最好使用静态分配实现! poj 3630 hdu 1251 2.并查集 Hdu:1558 1811 1829 1198 3.图论专题: 简单的说下图怎么存储。 图通常分为邻接表和邻接矩阵两种方式储存。 请先移步到数据结构书祥看这两种实现方式。 邻接表:我们知道要动态分配内存。这种方式有时会导致效率低下。我们可以模拟一下动态分配内存,详见附件静态分配。 这部分图论可参考 https://www.doczj.com/doc/d718402636.html,/p-251720691.html 部分题目.这本书有讲解。 1.图的基本概念 poj:1659 2.图的遍历和活动问题 zoj:2110 1709 1649 2913 1060 2193 2412 1008 2165 1136 1361 1091 1083 poj:2935 1270 3687

ACM橡胶的组成及品种

丙烯酸酯橡胶的组成和品种 发布日期:2006-6-1 11:38:32 作者:出处: 聚丙烯酸是一种塑料或纤维材料,由于羧基侧链增大了分子间力与旋转空间位阻,致使分子链僵硬,且分子结构规整,易于结晶,因此常温下缺乏橡胶性。羧基经醇酯化后,由于烷基屏蔽了极性基,降低了分子间力,因而增大了分子链的柔性。研究证明,随烷基侧链的增长,这种屏蔽内塑作用增加,增至聚丙烯酸正丁酯时即已成为橡胶状弹性体。只是这种均聚物不好硫化,需引入适宜的硫化活性单体,这种共聚单体的引入,不仅有利于硫化,且可以打乱分子链的规整结构,降低分子间力,阻止结晶,从而增大了聚合物的橡胶性。因此纵令某些丙烯酸酯的均聚物不是橡胶,如聚丙烯酸乙酯,若引入适宜的共聚单体后也可以成为橡胶,丙烯酸酯橡胶即由丙烯酸酯和交联单体为基本组分。为改进其特性,有时也引入少量第三单体。 (一)丙烯酸酯 丙烯酸酯种类需根据橡胶耐油、耐寒和加工性能综合平衡确定,随酯基碳原子数的加,有利于打乱聚合物分子链排布,减少分子间的作用力,增大内部塑性,降低脆化温度,这一趋势直至正辛基。聚丙烯酸正辛酯的脆化温度为-65℃,继续增长酯基链长,因链节内转动的空间位阻增大造成的不利影响超过了它对极性基的屏蔽效应,使净效果相反,如图15—1。此外,随酯基增大,聚合物耐水性提高,但因降低了内聚能密度,增大了碳氢组分,因而耐油性能降低,同时耐热性能、拉伸强度受到损失,硬度下降,而且因生胶粘度下降使炼胶时显得过软、过粘,影响工艺操作。综上所述,酯基不宜超过丁酯,实际上多采用丙烯酸乙酯和丙烯酸丁酯。以丙烯酸乙酯为基础的橡胶耐油、耐热性能较好,以丙烯酸丁酯为基础的橡胶耐寒性能较好:通过两种单体的并用,可调节上述性能,得到介于两者之间的橡胶。丙烯酸酯橡胶的缺点之一是低温下变硬,并丧失弹性,若能改进其低温特性,使用价值必将倍增。研究证明,在多碳酯基中引入硫醚或氧醚键等极性基团,可在保持良好的耐烃类介质性能同时,改进低温性能,例如由甲氧基乙基丙烯酸酯、乙氧基乙基丙烯酸酯、乙基硫代乙基丙烯酸酯等单体制备的橡胶,可使耐油与耐寒性能得到极好的平衡。为照顾实用上对应力-应变性质的要求,这类单体需与一般烷基丙烯酸酯并用,最宜含量约占单体总量的25~40%。此外,一系列的—氰基硫代烷基丙烯酸酯也都可以使用,由此制备的共聚物耐油性极佳,耐寒性能可达丙烯酸丁酯橡胶水平。选择和调整丙烯酸酯的品种和用量,例如恰当选择丙烯酸

ACM题目整理

题目来源:福州大学acm网站 代码:fpcdq 一、入门 熟悉ACM竞赛规则以及程序提交注意事项 例题: Problem 1000 A+B Problem Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description Calculate a + b. Input The input will consist of a series of pairs of integers a and b,separated by a space, one pair of integers per line. Output For each pair of input integers a and b you should output the sum of a and b in one line,and with one line of output for each line in input. Sample Input 1 5 2 3 Sample Output 6 5

My answer: #include main() { long a,b; while((scanf("%ld%ld",&a,&b))!=EOF) { printf("%ld\n",a+b); } } 详情参考https://www.doczj.com/doc/d718402636.html,/faq.php 二、ACM分类 主流算法: 1.搜索//回溯 Problem 1019 猫捉老鼠 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description 一只猫和一只老鼠在10*10的迷宫中。迷宫中的每个方格可以是空的,或者含有障碍。猫和老鼠可以进入任意一个空的方格中。当他们相遇时,猫和老鼠在同一个方格中。但是,无论猫或老鼠都不能进入有障碍的方格。我们可以用字符组成的二维数组表示迷宫,如下图所示。

Acm集训营培训心得

Acm集训营培训心得 参加暑期acm训练营的培训,让我收获了好多,感想也特别特别多,也学会了许多。所以特别感谢集训营中为我们上课的老师对我们做的培训。 经过特训营的培训,我了解到了许多关于acm的一系列知识。我感触特别深。作为ACM的新手,有兴趣而经验不足,然而有些热心的学者与老师多是向新手推荐书籍,如刘汝佳的算法竞赛入门经典,算法艺术与信息学竞赛及算法导论。不知这些是否是有针对ACM的系统教材,始终在这偌大的书籍中感到彷徨。但我觉得一方面它们倾向于理论证明、缺乏实战性,当时总是希望有位知识渊博的学者能带着我走。可这一切只是天方夜谭,更多的只能希冀在自己的身上。暑假集训从早上9点到下午5点,中间吃饭睡觉花掉3个小时左右,一天有6个小时上课时间,也许这段时间的确不是很长,每上五天课便会放假一天。看似好轻松,然而过于集中精力死盯这电脑屏幕,久而久之会有突如其来的疲倦。如果您想要从一个新手改造成一个合格的队员,你所感到的便是你的疯狂。引入ACM的历史,然后便是三道都是A+B,而且有样例程序培训,开始的第一节莫过于热身。这不仅能带给我们激情和勇气,同时看似基础性的东西却往往是胜败的关键点,使得我们不可松懈。接着便是从最简单的算法开始介绍,依次是:线性表,栈,队列,枚举法,递推法,递归法,分治法,树,搜索,图论的相关知识,并查集,动态规划,大数问题,字符串问

题。线性表,栈,队列:都有顺序结构和链式结构;栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。和线性表相比,它们的插入和删除操作受更多的约束和限定,故又称为限定性的线性表结构。而这三者都是来自数据结构的知识,数据结构数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。同时这门课程也是非常难学,需要我们花费更多的功夫。对于ACM的竞赛,更多的是注重于你对题目的灵活运用,采取比较简便的方法,所以便引入了枚举法,递推法,递归法,分治法,动态规划等技巧性较强的专门课程。复杂的ACM竞赛题往往蕴藏着精深的数学道理,需要的是数学知识的结合,学以灵活变通。就是这样才让人感觉到它是种让人从粗浅走向智慧,从蒙昧走向文明,从低级走向高级,从不完善走向完善的艰难历程。除了对这些学术上的专业注重,然而也需要学习英语知识,大多数的竞赛题目是英文,为了更加趋于国际化,英语也成为国际的交流语言,所以学习英语义不容辞,不可推卸。通过以上报告间隙,我结合自身学习实际,进行了客观的对比与反思。在今后的学生涯中,我要查漏补缺,通过学习来完善自身专业素养,努力为自己的梦想实践。

ACM知识点分类

ACM知识点分类 第一类:基础算法 (1)基础算法:枚举,贪心,递归,分治,递推,构造,模拟 (2)动态规划:背包问题,树形dp,状态压缩dp,单调性优化,插头dp (3)搜索:dfs,bfs,记忆化搜索,优化与剪枝,双广,A*,IDA*,跳舞链 第二类:数据结构 (1)简单数据结构:链表,栈和队列,串,树和二叉树,图,排序与检索 (2)树形结构:线段树,树状数组,字典树,伸展树,左偏树,动态树,lca&rmq,划分树,SBT (3)字符串:kmp,AC自动机,后缀数组,最小表示法 (4)其他:并查集,散列表,块状链表,双向链表 第三类:图论 (1)最短路:dijkstra,bellman-ford(spfa优化),floyd,heap+dijkstra ,差分约束,第K最短路 (2)生成树:prim,kruskal, 度限制最小生成树, 最优比率生成树, 次小生成树, 最小树形图,生成树的计数,树的划分,树的枚举 (3)匹配问题:二分图的最大匹配 (匈牙利算法),KM,2-SAT,同构 (4)网络流:最大流,最小费用最大流,最小割模型、网络流规约 (5)其他:拓扑排序,双连通分量,强连通分支及其缩点,图的割边与割点,无向图、有向图的最小环,欧拉路径,哈密顿路径,平面图,分层图思想,偶图

第四类:数学 (1)数论:素数和整除问题,进位制,同余模算术,整数因子分解,GCD,扩展欧几里得,求解模线性方程,中国余数定理,元素的幂,RSA公钥加密 (2)组合数学:加法和乘法原理,排列组合,递推关系和母函数,容斥原理,抽屉原理,置换群与Polya定理,MoBius反演,偏序关系理论 (3)计算方法:二分法求解单调函数相关知识,三分法求解单峰(单谷)的极值,矩阵法,迭代逼近,高斯消元法,随机化算法,0/1分数规划 (4)高精度问题扩展:求倒数,求乘幂,求开方,求对数,二分快速方法,对指函数,三角函数,数值计算的优化 (5)其他:博弈论,线性规划,整数规划,概率问题,多项式与快速傅里叶,数学思想与方法的综合运用(构造,猜想,归纳法,反证法) 第五类:计算几何 (1)判断线段相交,判断直线相交,判断点是否在多边形内, (2)凸多边形面积&重心计算,求外接圆与内接圆, (3)求凸包,最近点对问题,最远点对问题, (4)点集或图形集合的最小覆盖圆,点集或图形集合的最小覆盖矩形, (5)矩形的交与并(扫描法), (6)三角剖分,费尔马点的计算,Pick定理 (7)常用几何公式

Acm试题及答案

Acm试题及答案 1001 Sum Problem ............................................. 错误!未定义书签。1089 A+B for Input-Output Practice (I) ...................... 错误!未定义书签。1090 A+B for Input-Output Practice (II) ..................... 错误!未定义书签。1091 A+B for Input-Output Practice (III) .................... 错误!未定义书签。1092 A+B for Input-Output Practice (IV) ...................... 错误!未定义书签。1093 A+B for Input-Output Practice (V) ...................... 错误!未定义书签。1094 A+B for Input-Output Practice (VI) ..................... 错误!未定义书签。1095 A+B for Input-Output Practice (VII) ..................... 错误!未定义书签。1096 A+B for Input-Output Practice (VIII) ................... 错误!未定义书签。2000 ASCII码排序............................................ 错误!未定义书签。2001计算两点间的距离........................................ 错误!未定义书签。2002计算球体积.............................................. 错误!未定义书签。2003求绝对值................................................ 错误!未定义书签。2004成绩转换................................................ 错误!未定义书签。2005第几天.................................................. 错误!未定义书签。2006求奇数的乘积............................................ 错误!未定义书签。2007平方和与立方和.......................................... 错误!未定义书签。2008数值统计................................................ 错误!未定义书签。2009求数列的和.............................................. 错误!未定义书签。2010水仙花数................................................ 错误!未定义书签。2011多项式求和.............................................. 错误!未定义书签。2012素数判定................................................ 错误!未定义书签。2014青年歌手大奖赛_评委会打分............................... 错误!未定义书签。

acm程序设计大赛题目

The Mailboxes Manufacturers Problem Time Limit:1000MS Memory Limit:65536K Total Submit:299 Accepted:227 Description In the good old days when Swedish children were still allowed to blowup their fingers with fire-crackers, gangs of excited kids would plague certain smaller cities during Easter time, with only one thing in mind: To blow things up. Small boxes were easy to blow up, and thus mailboxes became a popular target. Now, a small mailbox manufacturer is interested in how many fire-crackers his new mailbox prototype can withstand without exploding and has hired you to help him. He will provide you with k(1 ≤ k≤ 10) identical mailbox prototypes each fitting up to m(1 ≤ m≤ 100) crackers. However, he is not sure of how many firecrackers he needs to provide you with in order for you to be able to solve his problem, so he asks you. You think for a while and then say, “Well,if I blow up a mailbox I can’t use it again, so if you would provide me with only k = 1 mailboxes, I would have to start testing with 1 cracker, then 2 crackers, and so on until it finally exploded. In the worst case, that is if it does not blow up ev en when filled with m crackers, I would need 1 + 2 + 3 + … + m = m ×(m+ 1) ? 2 crackers. If m = 100 that would mean more than 5000 fire-crackers!” “That’s too many,” he replies. “What if I give you more than k = 1 mailboxes? Can you find a strategy that requires less crackers?” Can you? And what is the minimum number of crackers that you should ask him to provide you with? You may assume the following: 1.If a mailbox can withstand x fire-crackers, it can also withstand x? 1 fire-crackers. 2.Upon an explosion, a mailbox is either totally destroyed (blown up) or unharmed, which means that it can be reused in another test explosion.

ACM训练计划

ACM常用算法及练习 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换 第二阶段:练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。 5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp 6.博弈类算法。博弈树,二进制法等。 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统. 10. 双向广度搜索、A*算法,最小耗散优先. 相关的知识 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征 负边权最短路径 Bellman-Ford Bellman-Ford的Yen-氏优化 差分约束系统 Floyd 广义路径问题 传递闭包 极小极大距离/ 极大极小距离

Euler Path / Tour 圈套圈算法 混合图的Euler Path / Tour Hamilton Path / Tour 特殊图的Hamilton Path / Tour 构造 生成树问题 最小生成树 第k小生成树 最优比率生成树 0/1分数规划 度限制生成树 连通性问题 强大的DFS算法 无向图连通性 割点 割边 二连通分支 有向图连通性 强连通分支 2-SAT 最小点基 有向无环图 拓扑排序 有向无环图与动态规划的关系 二分图匹配问题 一般图问题与二分图问题的转换思路 最大匹配 有向图的最小路径覆盖 0 / 1矩阵的最小覆盖 完备匹配 最优匹配 稳定婚姻 网络流问题 网络流模型的简单特征和与线性规划的关系最大流最小割定理 最大流问题 有上下界的最大流问题 循环流 最小费用最大流/ 最大费用最大流

hdu试题分类

hdu试题分类 hdu题目分类 模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 1202 1205 1209 1212(大数取模) 1216(链表)1218 1219 1225 1228 1229 1230 1234 1235 1236 1237 1239 1250 1256 1259 1262 1263 1265 1266 1276 1279 1282 1283 1287 1296 1302 1303 1304 1305 1306 1309 1311 1314 复杂模拟 搜索,递归求解 1010 1016 1026 1043(双广) 1044 (BFS+DFS) 1045 1067 1072 1104 1175 1180 1195 1208 1226 1238 1240 1241 1242 1258 1271 1312 1317 博奕 1079 动态规划 1003 1024 1025 1028 1051 1058 1059 1069 1074 1078 1080 1081 1085 1087 1114 1158 1159 1160 1171 1176 1181 1203 1224 1227 1231 1244 1248 1253 1254 1283 1300 数学,递推,规律 1005 1006 1012 1014 1018 1019 1021 1023 1027 1030 1032 1038 1041 1046 1059 1060 1061 1065 1066 1071(微积分) 1097 1098 1099 1100 1108 1110 1112 1124 1130 1131 1132 1134 1141 1143 1152 1155(物理题) 1163 1165 1178 1194 1196(lowbit) 1210 1214 1200 1221 1223 1249 1261 1267 1273 1290 1291 1292 1294 1297 1313 1316 数论 1164 1211 1215 1222 1286 1299

ACM题目

【题目 1】N皇后问题(含八皇后问题的扩展,规则同八皇后):在N*N的棋盘上,放置N个皇后,要求每一横行 每一列,每一对角线上均只能放置一个皇后,问可能的方案及方案数。 【题目 2】排球队员站位问题 ┏━━━━━━━━┓图为排球场的平面图,其中一、二、三、四、五、六为位置编号,┃ ┃二、三、四号位置为前排,一、六、五号位为后排。某队比赛时,┃ ┃一、四号位放主攻手,二、五号位放二传手,三、六号位放副攻┠──┬──┬──┨手。队员所穿球衣分别为1,2,3,4,5,6号,但每个队 ┃ 四 │ 三 │ 二 ┃员的球衣都与他们的站位号不同。已知1号、6号队员不在后排,┠──┼──┼──┨2号、3号队员不是二传手,3号、4号队员不在同一排,5号、┃ 五 │ 六 │ 一 ┃6号队员不是副攻手。 ┗━━┷━━┷━━┛编程求每个队员的站位情况。 【算法分析】本题可用一般的穷举法得出答案。也可用回溯法。以下为回溯解法。 【题目 2】把自然数N分解为若干个自然数之和。 【参考答案】 n │ total 5 │ 7 6 │ 11 7 │ 15 10 │ 42 100 │ 190569291 【题目 3】把自然数N分解为若干个自然数之积。 【题目 4】马的遍历问题。在N*M的棋盘中,马只能走日字。马从位置(x,y)处出发,把棋盘的每一格都走一次,且只走一次。找出所有路径。 【参考程序】 {深度优先搜索法} 【题目 5】加法分式分解。如:1/2=1/4+1/4.找出所有方案。 输入:N MN为要分解的分数的分母 M为分解成多少项 【题目 6】地图着色问题 【题目 7】在n*n的正方形中放置长为2,宽为1的长条块,问放置方案如何 【题目 8】找迷宫的最短路径。(广度优先搜索算法)

杭州电子科技大学OJ题目分类

杭州电子科技大学OJ题目分类 1001 整数求和水题 1002 C语言实验题——两个数比较水题 1003 1、2、3、4、5... 简单题 1004 渊子赛马排序+贪心的方法归并 1005 Hero In Maze 广度搜索 1006 Redraiment猜想数论:容斥定理 1007 童年生活二三事递推题 1008 University 简单hash 1009 目标柏林简单模拟题 1010 Rails 模拟题(堆栈) 1011 Box of Bricks 简单题 1012 u Calculate e 简单数学计算 1013 STAMPS 搜索or动态规划 1014 Border 模拟题 1015 Simple Arithmetics 高精度计算 1016 Shoot-out 博弈+状态压缩DP 1017 Tour Guide 1018 Card Trick 简单题 1019 Necklace Decomposition 贪心 1020 Crashing Robots 模拟题 1021 Electrical Outlets 简单题 1022 Watchdog 简单题 1023 Taxi Cab Scheme 图论:最小路径覆盖--->最大二分匹配1024 Pseudo-random Numbers 数论 1025 Card Game Cheater 简单题 1026 Investment 动态规划 1027 Pipes 1028 SETI 数学:高斯消元法 1029 Minimax Triangulation 计算几何 1030 Unequalled Consumption 母函数 1031 Declaration of Content 1032 Laserbox 搜索:DFS 1033 Bowlstack 1034 Pesky Heroes 1035 Reduced ID Numbers 暴力 1036 Tantrix 1037 Guardian of Decency 图论:匈牙利算法求二分图的最大匹配1038 Up the Stairs 简单数学题 1039 Sudoku 搜索:DFS 1040 The SetStack Computer 1041 Pie 二分法 1042 Ticket to Ride 动态规划 1043 The Bookcase 动态规划

ACM新手之八大输入输出格式

ACM新手之八大输入输出格式 文章分类:C++编程 在ACM题库中,不管是文件输出(输入)还是标准输出(输入),都有着一定的格式,下面我就以杭电1089——1096为例子,简单的介绍一下。 第一种:A+B for Input-Output Practice (I) 【输入】有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出。 【输出】有多组输出,对应着每组输入,每组输出占一行。 【代码】对于上述常见的情况,我们可以用下面的代码来解决。 没有告诉我们有多少组,我们只需要等待即可:while (scanf (……) != EOF) 相对应输入,输出只需要在while中输出。【完整代码】 第二种:A+B for Input-Output Practice (II) 【输入】先输入一个整数,告诉我们接下来有多少组数据,然后在输入每组数据的具体值。【输出】有多组输出,对应着每组输入,每组输出占一行。 【代码】这也是一种常见的输入形式,简单的代码,我们可以先用scanf函数输入第一个整数来确定有多少行,然后在用for循环一组一组的输入。【完整代码】 第三种:A+B for Input-Output Practice (III) 【输入】有多组输入数据,没有具体的告诉你有多少组,但是题目却告诉你遇见什么结束。【输出】有多组输出,没对应一组输入都有相应的输出,结束标记不用管! 【代码】这种类型的题目和第一种差不多,但是有一点值得注意,就是要加上结束条件。对于这道题我么 可以这样while(scanf(“%d%d”, &a, &b) && (!(a==0 && b==0))),当然你也可以将条件写在while循环的内部,条件满足时break即可。【完整代码】

ACM常见题型题解

大部分题目都来源于周涵学弟,感谢他的成果,希望大家不断a题,提升自己的能力,都能在校赛上取得好的成绩。 这次比赛很多童鞋都做的很好,不过通过做题也能反映出一些问题。 第一,读题。 很多童鞋交了发现自己的数据爆值,很多时候是因为没有好好读题。 int , long, long long 的范围应该都知道,如果只是因为没有好好读题而出错,这是毫无意义的罚时,所以一定好好好读题,看清数据范围。 第二,跟榜。 在正式的比赛中题目的难度并不是按照ABCD来排列的,简单的题目可能在中间,在最后,所以不要死一道题,而是看题目的通过人数,这是判断题目难度的最好方法,就是跟榜。 第三,扩充自己的知识面。 很多题目用你现有的知识可能很难做出来,但是用一些语言自带的函数或者容器就能简单的做出来了。这就需要不断学习,多多接受一些新的东西并用到题目当中,会有很好的收获的。 还发现了一些同学有抄袭现象,在正式比赛中所有的题目都是原创的,并且不可以上网寻求帮助,只能带纸质材料。所以还是珍惜每一次做题的机会,认真的去对待吧。 A:本道题目需要注意1<=n<=1000,而1既不是素数也不是合数,2是最小的素数 B:方法采用辗转相除法求的最大公约数,最小公倍数采用:给定的两数之积除以最大公约

数。 C:字符串比较大小问题,在C语言中可以调用头文件中的strcmp函数直接进行比较。字符串的取缔符号为%s。

D:此题为排序题,可以采用冒泡排序法,在C++直接有sort排序函数,可以直接调用。 E:学一下结构体排序的方法,顺便自学一波stirng类型

F:斐波那契数列采用递归计算法,应题目要求进行取余(因为在计算过程中可能为出现溢出) G:矩阵采用二位数组输入模式,根据二位数组索引值,得出计算规律。需要注意的是:可能出现10的10次方,所以不要用int。 H:对于每一个点遍历一遍这个点周围的点,然后开一个数组记录下来就好了,搜索的基本运用

相关主题
文本预览
相关文档 最新文档