当前位置:文档之家› 北大ACM训练课程点

北大ACM训练课程点

北大ACM训练课程点

ACM/ICPC竞赛中用到的大量算法,包括:组合数学、数论、图论、计算几何、高级数据结构等。

北京大学

课程内容共八个专题,除理论知识外还包括精选例题讲解:

7.14 数据结构(一): 线段树,树状数组,二维线段树

7.15 数学题:组合数学,数论等

7.16 数据结构(二): 并查集, DFA, Trie图等

7.17 若干图论问题:最小生成树最短路强连通分量、桥和割点等

7.21 计算几何:线与线求交,线与面求交,求凸包,半平面求交等

7.22 搜索:深搜,广搜,剪枝,A*算法

7.24 动态规划

7.24 网络流算法:基本的网络流算法,Dinic算法,带上下界的网络流,最小费用

ACM练习题

ACM contests https://www.doczj.com/doc/3f6485916.html,

中庸之道(一) Time Limit: 1000 ms Memory Limit: 65535 kB Solved: 306 Tried: 1491 Description 读入三个整数a、b、c,找出中间数并输出。若有两个数相同,最大数作为中间数。Input 有多组测试数据。输入的第一行是整数T(0 int main() { int a,b,c,i,T; scanf("%d",&T); for(i=0;i

} return 0; } 或者 #include int main() { int a,b,c,T; scanf("%d",&T); while(T--) { //读入并处理当前组数据 } return 0; } 中庸之道(二) Time Limit: 1000 ms Memory Limit: 65535 kB Solved: 191 Tried: 629 Description 读入三个整数a、b、c,找出中间数并输出。若有两个数相同,最大数作为中间数。Input 有多组测试数据。每一组测试数据只有一行,分别为整数a、b和c,相邻两数之间有一个空格。该行没有其它多余的符号。如果一行三个数字均为0,表示输入结果,该行不需要处理。-2^31

acmicpc练习题

1、装箱问题:给定大小为S1,…,Sn的n个物件,其中0<Si≤1,寻找能够装进所有这些物件的最少数量的箱盒,每个箱盒容量为1。(提示:贪心法求解。) 2、已知一个包含n个元素的整型数组和一个整数K。试用O(NlogN)算法解决这样的问题:确定数组中是否存在两个数,它们的和等于给定的数K。一个数可以被使用两次。 例如,如果输入是8,5,2,7而K是12,则答案为yes(5和7)。 输入: 8 5 2 7 12 输出: yes 3、已知有2n个元素的无序数组a,试用O(n)算法将这2n个元素分别放入大小均为n的数组b和c。使得数组b中的所有元素均小于数组c中的任意元素。 输入: 5 7 10 4 2 6 9 1 8 3 5 输出: 4 2 1 3 5 7 10 6 9 8 (注意:输入第一行为1/2数组a的大小,第二行为数组a中的元素,输出时b、c数组中元素顺序不一定与示例一致)

4、令A为元素是0和1的N行N列矩阵。A的子矩阵S由形成方阵的任意一组相邻项组成。设计一种O(n2)算法,确定A中的全为1的最大子矩阵的阶数。 输入:(可以程序中初始化) 1 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 输出: 4 (输入:一个矩阵,输出:全为1的最大子矩阵阶数) (提示:动态规划解题。) 5、输入一批数据{34,27,56,12,25,78,94,36,58,90,66,77},从这 批数中找出最大值和第二大的值以及它们所在的位置。要求在同一个循环中既找出最大值又找出第二大值(只能使用一层循环)。不允许用排序的方法。 6、编写一个万年历程序。输入1900年后的某一年,要求显示该年份的日历, 日历以月份顺序排列,每月以星期顺序排列,类似于一般挂历上的格式。 7、一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的 习惯编排,每个页码都不含多余的前导数字0。例如,第6页用数字6表示,而不是06或006等。数字计数问题要求编写程序对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,3,4,……9. 8、用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2

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还有很多方面的知识。 可能到acm生涯结束的时候还是无法把所有的知识都吃透 所以acm的知识能学多少算多少,知识重要的不是你知道的多,重要的是你能否熟练的运用他们! 题目注意事项: zoj:https://www.doczj.com/doc/3f6485916.html,/ grid:https://www.doczj.com/doc/3f6485916.html,/ hdu:https://www.doczj.com/doc/3f6485916.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/3f6485916.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经典算法及配套练习题

POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,p oj2255,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) 四.简单搜索 (1)深度优先搜索(poj2488,poj3083,poj3009,poj1321,poj2251) (2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书page149): 1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533) 2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) (poj3176,poj1080,poj1159) 3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题) 六.数学 (1)组合数学:

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矩阵的最小覆盖 完备匹配 最优匹配 稳定婚姻 网络流问题 网络流模型的简单特征和与线性规划的关系最大流最小割定理 最大流问题 有上下界的最大流问题 循环流 最小费用最大流/ 最大费用最大流

北大ACM分类试题题库

北大ACM题库习题分类与简介 2008-07-31 12:03 zz题目分类 Posted by fishhead at 2007-01-13 12:44:58.0 -------------------------------------------------------------------------------- https://www.doczj.com/doc/3f6485916.html, 1、排序 1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, 1318, 1877, 1928, 1971, 1974, 1990, 2001, 2002, 2092, 2379, 1002(需要字符处理,排序用快排即可) 1007(稳定的排序) 2159(题意较难懂) 2231 2371(简单排序) 2388(顺序统计算法) 2418(二*排序树) 2、搜索、回溯、遍历 1022,1111,1118,1129,1190,1562,1564,1573,1655,2184,2225,2243,2312,2362 ,2378,2386,1010,1011,1018,1020,1054,1062,1256,1321,1363,1501,1650,165 9,1664,1753,2078,208 3,2303,2310,2329 简单:1128, 1166, 1176, 1231, 1256, 1270, 1321, 1543, 1606, 1664, 1731, 1742, 1745, 1847, 1915, 1950, 2038, 2157, 2182, 2183, 2381, 2386, 2426, 不易:1024, 1054, 1117, 1167, 1708, 1746, 1775, 1878, 1903, 1966, 2046, 2197, 2349, 推荐:1011, 1190, 1191, 1416, 1579, 1632, 1639, 1659, 1680, 1683, 1691, 1709, 1714, 1753, 1771, 1826, 1855, 1856, 1890, 1924, 1935, 1948, 1979, 1980, 2170, 2288, 2331, 2339, 2340,1979(和迷宫类似) 1980(对剪枝要求较高) 3、历法 1008 2080 (这种题要小心) 4、枚举 1012,1046, 1387, 1411, 2245, 2326, 2363, 2381,1054(剪枝要求较高),1650(小数的精度问题) 5、数据结构的典型算法 容易:1182, 1656, 2021, 2023, 2051, 2153, 2227, 2236, 2247, 2352, 2395, 不易:1145, 1177, 1195, 1227, 1661, 1834, 推荐:1330, 1338, 1451, 1470, 1634, 1689, 1693, 1703, 1724, 1988, 2004, 2010, 2119, 2274, 1125(弗洛伊德算法) ,2421(图的最小生成树) 6、动态规划 1037 A decorative fence、 1050 To the Max、 1088 滑雪、 1125 Stockbroker Grapevine、 1141 Brackets Sequence、

来自牛人的ACM经验

来自牛人的ACM经验 竞赛2010-07-16 09:51:43 阅读0 评论0 字号:大中小 转于:https://www.doczj.com/doc/3f6485916.html,/luxuejuncarl/ hacker名单 https://www.doczj.com/doc/3f6485916.html,/isbx posted @ 2007-03-19 21:30 路雪军阅读(120) | 评论(0) | 编辑收藏 Linux常用命令锦集 https://www.doczj.com/doc/3f6485916.html,/images/tech/linux/zhuanti/mingling/index.htm posted @ 2007-03-19 20:25 路雪军阅读(112) | 评论(0) | 编辑收藏 2007年3月5日 随想 记录下wonderful的sentences,背下来并加以应用is a good habit.. posted @ 2007-03-05 15:24 路雪军阅读(88) | 评论(0) | 编辑收藏 2007年3月3日 acm比赛经验(转) 在天大,偶参加的比赛可以算是最多的了,说说比赛经验。 可能现在说早了点,需要大家在正式比赛之前再看一遍。 推荐此篇文章打印,与模板放在一起。 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果W A,两道题同时做。交完每道题都要先打印。 2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的。基本上比赛中前几名的队都没人吃,除非领先很多。 3. 很多选手,尤其是第一次参加比赛的,到一个新环境,全当旅游了,参观的参观,找同学的找同学,玩玩乐乐就把正事抛到脑后了,结果比赛自然没什么好成绩,这样的例子太多了。所以到参赛地后要时刻不忘自己是来比赛的,好好休息、备战。 4. 参赛前一天要睡10个小时以上,非常有助于保持比赛中的精力,很多时候比赛到3个多小时队员就没劲了就是这个原因。前一天晚饭与当天早饭要吃好,理由同上,要知道下顿饭得下午3点赛后才能吃。 5. 到新环境,时刻注意远离疾病,感冒肠炎病不大,却是成绩的天敌。 6. 英语不好,看不懂的,要勤查词典,懒一次就少一道题,远离奖牌。 7. 可以紧张,杜绝慌张,慌张是出题的敌人,任何时候,如果发现自己或者队友出现慌张的情况,提醒深呼吸。 8. 照着纸敲代码和sample数据时不要敲错,特别注意文字信息。 9. 第一道简单题交给队中最稳的人做,万一遇到麻烦也不要慌,如果有很多队都出了就更不必着急了,它必定是简单题,必定是可以很快做出来的,晚几分钟也比罚掉20分好。另外注意不要PE。 10. 最后一小时是出题高峰,谁松懈,谁落后。最后一小时出一道是正常,出两道更好。 以上各条均有出处,每条都包含着以往教训,每条都可能浪费掉你一年的努力,不可小视。以下各条有些来自于其他学校,有些是总结: 11. 无论是否有人通过,所有题必须全读过,最好每道题都有两人以上读过,尽量杜绝讲题

ACM题目、测试用例及参考答案汇编——一次ACM协会内部测试

ACM题目、测试用例及参考答案汇编——一次ACM协会内部测试 第一题:梦境是虚幻吗? 时间限制:3000ms 内存限制:65535KB 难度:★★ 描述 《盗梦空间》是一部精彩的影片,在这部电影里,Cobb等人可以进入梦境之中,梦境里的时间会比现实中的时间过得快得多,这里假设现实中的3分钟,在梦里就是1小时。 然而,Cobb他们利用强效镇静剂,可以从第一层梦境进入第二层梦境,甚至进入三层,四层梦境,每层梦境都会产生同样的时间加速效果。那么现在给你Cobb在各层梦境中经历的时间,你能算出现实世界过了多长时间吗? 比如,Cobb先在第一层梦境待了1个小时,又在第二层梦境里待了1天,之后,返回第一层梦境之后立刻返回了现实。 那么在现实世界里,其实过了396秒(6.6分钟) 输入 第一行输入一个整数T(0<=T<=100),表示测试数据的组数。 每组测试数据的第一行是一个数字M(3<=M<=100) 随后的M行每行的开头是一个字符串,该字符串如果是"IN" 则Cobb向更深层的梦境出发了,如果是字符串"OUT"则表示Cobb从深层的梦回到了上一层。如果是首字符串是"STAY"则表示Cobb在该层梦境中停留了一段时间,本行随后将是一个整数S表示在该层停留了S分钟(1<=S<=10000000)。数据保证在现实世界中,时间过了整数秒。 输出 对于每组测试数据,输出现实世界过的时间(以秒为单位)。 样例输入 1 6 IN STAY 60 IN STAY 1440 OUT OUT 样例输出 396 测试输入 10 6 IN STAY 60 IN STAY 1440 OUT

OUT 6 IN IN IN OUT OUT OUT 7 IN IN IN STAY 0 OUT OUT OUT 2 IN STAY 20 3 IN STAY 0 OUT 3 IN STAY 10 OUT 4 IN STAY 10 STAY 10 OUT 5 IN STAY 20 STAY 20 OUT STAY 120 10 IN STAY 20 STAY 20 IN STAY 1440

北大ACM-题型分类

1、排序.............................................................................................. 错误!未定义书签。 2、搜索、回溯、遍历...................................................................... 错误!未定义书签。 3、历法.............................................................................................. 错误!未定义书签。 4、枚举.............................................................................................. 错误!未定义书签。 5、数据结构的典型算法.................................................................. 错误!未定义书签。 6、动态规划.................................................................................... 错误!未定义书签。 7、贪心.............................................................................................. 错误!未定义书签。 8、模拟.............................................................................................. 错误!未定义书签。 9、递归.............................................................................................. 错误!未定义书签。: 10、字符串处理................................................................................ 错误!未定义书签。 11、数论............................................................................................ 错误!未定义书签。 12、几何有关的题目........................................................................ 错误!未定义书签。 13、任意精度运算、数字游戏、高精度计算................................ 错误!未定义书签。 14、概率统计.................................................................................... 错误!未定义书签。 15、小费用最大流、最大流............................................................ 错误!未定义书签。 16、压缩存储的DP .......................................................................... 错误!未定义书签。 17、最长公共子串(LCS) .............................................................. 错误!未定义书签。 18、图论及组合数学........................................................................ 错误!未定义书签。 19、博弈类........................................................................................ 错误!未定义书签。| 20、简单、模拟题............................................................................ 错误!未定义书签。 21、匹配............................................................................................ 错误!未定义书签。 22、经典............................................................................................ 错误!未定义书签。 23、趣味............................................................................................ 错误!未定义书签。 24、很繁的题.................................................................................... 错误!未定义书签。 25、难题............................................................................................ 错误!未定义书签。 26、多解题........................................................................................ 错误!未定义书签。 27、Note: ........................................................................................... 错误!未定义书签。

ACM训练指南

ACM练习建议 一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm 主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,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*算法,最小耗散优先. 第三阶段: 前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法 。这就要平时多做做综合的题型了。 1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。

各名校oj平台地址

北京邮电大学https://www.doczj.com/doc/3f6485916.html,/onlinejudge/ 北京大学https://www.doczj.com/doc/3f6485916.html,/JudgeOnline/ (推荐) https://www.doczj.com/doc/3f6485916.html,/ (内部) 浙江大学https://www.doczj.com/doc/3f6485916.html,/ (推荐) 天津大学https://www.doczj.com/doc/3f6485916.html,/toj/ 武汉大学https://www.doczj.com/doc/3f6485916.html,/oak/ FELIOJ https://www.doczj.com/doc/3f6485916.html,/felioj/ 四川大学https://www.doczj.com/doc/3f6485916.html,/soj/ 中科大https://www.doczj.com/doc/3f6485916.html,/ 哈工大https://www.doczj.com/doc/3f6485916.html,/ http://202.118.224.210 华东师范https://www.doczj.com/doc/3f6485916.html, 杭州电子https://www.doczj.com/doc/3f6485916.html, 吉林大学https://www.doczj.com/doc/3f6485916.html, 西南科大http://222.196.33.254/JudgeOnline/ 哈工程https://www.doczj.com/doc/3f6485916.html,/ 湖南大学https://www.doczj.com/doc/3f6485916.html,:8080/ 福州大学https://www.doczj.com/doc/3f6485916.html,/ 北航https://www.doczj.com/doc/3f6485916.html,/ 华中科大https://www.doczj.com/doc/3f6485916.html,/judge/ 南开大学https://www.doczj.com/doc/3f6485916.html,/ 北师大: https://www.doczj.com/doc/3f6485916.html,/contest/index.php VIJOS https://www.doczj.com/doc/3f6485916.html,/ (高中生的OJ) UVA http://online-judge.uva.es/problemset/ URAL http://acm.timus.ru/ SGU http://acm.sgu.ru/ SPOJ http://www.spoj.pl EL http://acm.mipt.ru/judge/problems.pl KRSU https://www.doczj.com/doc/3f6485916.html,.kg/ USACO https://www.doczj.com/doc/3f6485916.html,/usacogate 中国各大高校BBS: https://www.doczj.com/doc/3f6485916.html,/forum/(杭电) https://www.doczj.com/doc/3f6485916.html, (浙大) https://www.doczj.com/doc/3f6485916.html, (清华) https://www.doczj.com/doc/3f6485916.html, (上交) https://www.doczj.com/doc/3f6485916.html, (复旦)

ACM入门练习

最少钱币数: 【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1 <= M <= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K 个互不相同的钱币面值Ki(1 <= Ki <= 1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

【问题描述】 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 【要求】 【数据输入】本题有多组数据,每组数据由一个正整数N组成。(N不大于100) 【数据输出】对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。 【样例输入】 5 【样例输出】 1 2 6 10 15 3 5 9 14 4 8 13 7 12 11

【问题描述】 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。 【要求】 【数据输入】输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。 【数据输出】输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible" 【样例输入】 1 2 3 4 5 【样例输出】 4

ACM程序设计竞赛例题

备战ACM资料 一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树的应用(二叉排序树,判定树,博弈树,解答树等) 3,文件操作(从文本文件中读入数据并输出到文本文件中) 4,图(基本概念,存储结构,图的运算) 数学知识 1,离散数学知识的应用(如排列组合、简单的图论,数理逻辑) 2,数论知识 3,线性代数 4,组合代数 5,计算几何 二算法 1,排序算法(冒抛法,插入排序,合并排序,快速排序,堆排序) 2,查找(顺序查找,二分发) 3,回溯算法 4,递归算法 5,分治算法 6,模拟法 7,贪心法 8,简单搜索算法(深度优先,广度优先),搜索中的剪枝,A*算法 9,动态规划的思想及基本算法 10,高精度运算 三、ACM竞赛的题型分析 竞赛的程序设计一般只有16种类型,它们分别是: Dynamic Programming (动态规划) Greedy (贪心算法) Complete Search (穷举搜索) Flood Fill (不知该如何翻译) Shortest Path (最短路径) Recursive Search Techniques (回溯搜索技术) Minimum Spanning Tree (最小生成树) Knapsack (背包问题) Computational Geometry (计算几何学) Network Flow (网络流) Eulerian Path (欧拉回路) Two-Dimensional Convex Hull (不知如何翻译) BigNums (大数问题)

Heuristic Search (启发式搜索) Approximate Search (近似搜索) Ad Hoc Problems (杂题) 四ACM竞赛参考书 《实用算法的分析与程序设计》(吴文虎,王建德著,电子工业出版社,竞赛类的黑宝书)《青少年国际和全国信息学(计算机)奥林匹克竞赛指导)――组合数学的算法 和程序设计》(吴文虎,王建德著,清华大学出版社,参加竞赛组合数学必学) 《计算机算法设计与分析》(王晓东编著,最好的数据结构教材) 《数据结构与算法》(傅清祥,王晓东编著,我所见过的最好的算法教材) 《信息学奥林匹克竞赛指导――1997-1998竞赛试题解析》(吴文虎,王建德著,清华大学出版社) 《计算机程序设计技巧》 D.E.Kruth著,算法书中最著名的《葵花宝典》,大师的作品,难度大) 《计算几何》周陪德著 《ACM国际大学生程序设计竞赛试题与解析(一)》(吴文虎著,清华大学出版社) 《数学建模竞赛培训教材》共三本叶其孝主编 《数学模型》第二版姜启源 《随机规划》 《模糊数学》 《数学建模入门》徐全智 《计算机算法设计与分析》国防科大 五常见的几个网上题库 常用网站: 1)信息学初学者之家:https://www.doczj.com/doc/3f6485916.html,/ (2)大榕树编程世界:https://www.doczj.com/doc/3f6485916.html,/~drs/program/default.asp (3)中国教育曙光网:https://www.doczj.com/doc/3f6485916.html,/aosai/ (4)福建信息学奥林匹克:https://www.doczj.com/doc/3f6485916.html,/fjas/index.htm (5)第20届全国青少年信息学奥林匹克竞赛:https://www.doczj.com/doc/3f6485916.html,/ (6)第15届国际青少年信息学奥林匹克竞赛:https://www.doczj.com/doc/3f6485916.html,/ (7)全美计算机奥林匹克竞赛:https://www.doczj.com/doc/3f6485916.html,/usacogate (8)美国信息学奥林匹克竞赛官方网站:https://www.doczj.com/doc/3f6485916.html,/ (9)俄罗斯Ural州立大学:http://acm.timus.ru/ (10)西班牙Valladolid大学:http://acm.uva.es/problemset (11)ACM-ICPC:https://www.doczj.com/doc/3f6485916.html,/icpc/ (12)北京大学:https://www.doczj.com/doc/3f6485916.html,/JudgeOnline/index.acm (13)浙江大学:https://www.doczj.com/doc/3f6485916.html,/ (14)IOI:http://olympiads.win.tue.nl/ioi/ (15)2003年江苏省信息学奥林匹克竞赛夏令营:https://www.doczj.com/doc/3f6485916.html, (16)https://www.doczj.com/doc/3f6485916.html, (17)https://www.doczj.com/doc/3f6485916.html, (18)https://www.doczj.com/doc/3f6485916.html, (19)https://www.doczj.com/doc/3f6485916.html,/downldmanag/index.asp (20)https://www.doczj.com/doc/3f6485916.html, colin_fox/colin_fox 五如何备战ACM/ICPC

acm练习5

Acm练习5 1.0统计字符串出现的次数: 先输入一个正整数n(n小于等于1000),接下来n行依次输入n个字符串,第n+1行再输入一个字符串,表示要输出该字符串的出现次数。 4 abc bba ttt abc tt 输出:1. #include #include //包含malloc()函数 #include //包含字符串处理函数strcmp() void main() { int n,i,cout=0; char *str[1000]; while(scanf("%d",&n)!=EOF) //多组测试数据 { getchar(); //抵消输入的回车符,保证下面的str[i]能获得正确值 cout=0; //没统计完一组测试数据cout都要清零 for(i=0;i<=n;i++) str[i]=(char*)malloc(sizeof(char)*100); //开辟内存大小为char*100个字节for(i=0;i<=n;i++) gets(str[i]); //整行字符读入 for(i=0;i #include void main() // 用指针数组处理字符串:可以通过控制i就能控制一行。 { char *str[10]; // 有10个元素,每个元素分别指向各个字符串的首地址 int i; for(i=0;i<10;i++)

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