ACM一期 基础训练计划
- 格式:doc
- 大小:51.00 KB
- 文档页数:5
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、最长递增子串、三角剖分、记忆化dp6.博弈类算法。
博弈树,二进制法等。
7.最大团,最大独立集。
8.判断点在多边形内。
9. 差分约束系统.10. 双向广度搜索、A*算法,最小耗散优先.第三阶段:前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法。
这就要平时多做做综合的题型了。
1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。
2. 平时扫扫zoj上的难题啦,别老做那些不用想的题.(中大acm的版主经常说我挑简单的来做:-P )3. 多参加网上的比赛,感受一下比赛的气氛,评估自己的实力.4. 一道题不要过了就算,问一下人,有更好的算法也打一下。
5. 做过的题要记好:-)50题第一类搜索(至少4题)1011 1033 1129 2049 2056 2488 2492 (稍难,也可并查集)第二类最短路(至少3题)1062 1125 1797 2253 2679 Bellman-Ford (难)第三类动态规划(至少6题,2479 and 2593必做)2479 and 2593 1015 1042 (也可贪心) 1141 1050 1080 1221 1260 2411 (稍难) 1276 第四类贪心(至少2题)1065 2054 (难) 1521 2709第五类并查集(至少2题)1861 1182 (难) 1308 2524第六类最小生成树(至少2题, 而且Prim 和Kruskal 至少各用一次)1251 1258 1789 2485第七类二分图(至少3题)1325 1469 2195 (KM 算法或最小费用最大流) (难) 2446 1422 and 2594第八类最大流(至少2题)1087 1459 1149 2516 (最小费用最大流) (难)第九类快速查找(B-Search, Hash and so on) (至少3题)2503 2513 (+Euler回路的判定) 1035 1200 2002第十类数论(至少2题)1061 1142 2262 2407 1811(难) 2447 (难)第十一类线段树(无最少题数要求)2352 (可用简单方法) 2528第十二类计算几何(至少2题,1113凸包算法必做)1113 1292 2148 (难) 2653 1584第十三类高精度(至少3题,1001必做)1001 1047 1131 1503 1504 1060 and 1996 (多项式)SCU1002, 1003, 1004 (/soj)第十四类模拟(至少5题)1029 and 1013 1083 and 2028 2234 and 1067 1012 1026 1068 1120 2271 2632第十五类数学(至少4题)2249 1023 2506 1079 1019 and 1095 1905 and 1064 (二分)POJ分类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 23861010,1011,1018,1020,1054,1062,1256,1321,1363,1501,1650,1659,1664,1753,2078,2083,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、1159 Palindrome、1160 Post Office、1163 The Triangle、1458 Common Subsequence、1579 Function Run Fun、1887 Testing the CATCHER、1953 World Cup Noise、2386 Lake Counting7、贪心1042, 1065, 1230, 1323, 1477, 1716, 1784,1328 1755(或用单纯形方法),2054,1017,1328,1862,1922 ,2054,2209,2313,2325,2370。
acm课程设计一、教学目标本课程旨在通过ACM课程的学习,让学生掌握以下知识和技能:1.知识目标:(1)理解并掌握ACM的基本概念和原理;(2)了解ACM的发展历程和现状;(3)熟悉ACM的编程语言和工具;(4)了解ACM在各领域的应用。
2.技能目标:(1)能够使用ACM编程语言和工具进行简单的程序设计;(2)能够独立解决ACM中的基本问题;(3)能够团队协作,解决复杂的ACM问题;(4)能够对ACM程序进行调试和优化。
3.情感态度价值观目标:(1)培养学生对ACM的兴趣和热情;(2)培养学生勇于挑战、积极进取的精神;(3)培养学生团队协作、沟通交流的能力;(4)培养学生关注社会、服务社会的责任感。
二、教学内容本课程的教学内容主要包括以下几个部分:1.ACM的基本概念和原理;2.ACM的发展历程和现状;3.ACM的编程语言和工具;4.ACM在各领域的应用;5.ACM编程实践。
具体的教学安排如下:第1-2课时:ACM的基本概念和原理;第3-4课时:ACM的发展历程和现状;第5-6课时:ACM的编程语言和工具;第7-8课时:ACM在各领域的应用;第9-10课时:ACM编程实践。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:讲解ACM的基本概念、原理和发展历程;2.案例分析法:分析ACM在各领域的应用实例;3.实验法:实践ACM编程,解决实际问题;4.讨论法:分组讨论,分享学习心得和经验。
四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:ACM课程教材;2.参考书:ACM相关书籍;3.多媒体资料:ACM相关视频、PPT等;4.实验设备:计算机、网络等。
通过以上教学资源,为学生提供丰富的学习材料和实践机会,提高学生的学习效果。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用以下评估方式:1.平时表现:占课程总评的30%,包括课堂参与度、团队合作、问题解决能力等;2.作业:占课程总评的20%,主要考察学生对知识的理解和应用能力;3.考试:占课程总评的50%,包括期中考试和期末考试,主要考察学生的知识掌握和运用能力。
ACM入门训练指南目标读者:想要在ACM/ICPC里进行发展,并通过SDUTOJ进行训练的初学者。
使用语言:只要会一门程序设计语言,就可以进行ACM训练了。
通过训练,可以更好地掌握语言使用能力、程序和算法设计能力。
一般通用语言如C、C++和JAVA都可以,它们有各自的优势和缺点:1.C语言设计算法效率比较高,但输入输出的格式控制比较麻烦,而ACM 对程序进行评测时对输入输出的格式要求比较高,使用C务必要熟练掌握输入输出方法。
2.C++封装了输入输出流,方便输入输出操作,减少出错的可能性;C++提供了非常强大的标准模版库(STL),使得很多在C上实现起来比较麻烦的代码,在C++上却非常方便。
3.JAVA在大型工程和安全方面有比较独特的优势,但在ACM里面却不是一种优秀的语言,因为JAVA的执行效率要比C、C++慢很多,而ACM的题目都对程序运行时间有限制,如果题目限时比较紧的话,就不适合用JAVA,然而JAVA却提供了很方便的高精度运算(大整数运算)。
建议刚学完C就用纯C来训练,在训练过程中可以学习C++,有时间再把STL 好好学学。
输入输出:初次接触ACM训练时经常会遇到的问题,就是输入和输出问题。
如果对语言的输入输出问题不是很熟悉的话,一定要先重点研究一下,特别在输入和输出时不能有冗余信息,因为学习语言时可能习惯了使用提示信息来提高程序的交互性,但ACM不需要任何交互性。
不严格按照题目要求进行输入输出的程序是无法通过系统测试的。
在线评测系统:在线评测系统,英文叫Online Judge(简称OJ),是开放的程序自动评判系统。
只要能上网,注册并登录系统后,就可以选择题目,编写程序,提交程序代码,然后由系统自动进行编译和执行,并通过系统预设测试数据来检验程序代码的正确性。
通过使用OJ训练,可以提高编程和算法设计能力,随着训练的深入,可以参加在评测系统上举行的ACM-ICPC程序设计竞赛。
很多学校都有自己的在线评测系统,里面提供了很多题目给平时学习训练用。
ACM学习建议2008-05-07 09:36 一位高手对我的建议:一般要做到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、最长递增子串、三角剖分、记忆化dp6.博弈类算法。
博弈树,二进制法等。
7.最大团,最大独立集。
8.判断点在多边形内。
9. 差分约束系统.10. 双向广度搜索、A*算法,最小耗散优先.第三阶段:前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法。
这就要平时多做做综合的题型了。
1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。
2. 平时扫扫zoj上的难题啦,别老做那些不用想的题.(中大acm的版主经常说我挑简单的来做:-P )3. 多参加网上的比赛,感受一下比赛的气氛,评估自己的实力.4. 一道题不要过了就算,问一下人,有更好的算法也打一下。
5. 做过的题要记好:-)马牛的acm学习(第一天)-我找资源,我找~收藏今天是2005年秋季学期考完试后的第一天,想着前面好几门都应该过了,难道败在最后考的物理上?oh,yeah~不管了。
acm培训计划导言ACM (Association for Computing Machinery) 是一个国际性的计算机学会,旨在为计算机专业人士提供交流学习和培训的平台。
ACM 培训计划旨在帮助学生提升他们的算法和编程能力,从而更好地参与 ACM 竞赛。
本培训计划将围绕算法与数据结构、编程语言、数学及竞赛技巧展开,以帮助学生提升专业知识、提高团队合作能力和竞赛技能。
一、培训目标1. 提升学生算法和数据结构基础知识,使其能够灵活运用于解决实际问题。
2. 培养学生对编程语言的深刻理解和应用能力。
3. 加强学生的数学基础,提高解决问题的抽象能力。
4. 提高学生的 ACM 竞赛技巧,培养解决问题的思考和团队合作能力。
二、培训内容1. 算法与数据结构1.1. 基本算法:递归、分治、贪心、动态规划1.2. 基本数据结构:栈、队列、链表、树、图1.3. 高级算法:最短路径、最小生成树、网络流、字符串算法1.4. 算法分析与设计:时间复杂度、空间复杂度和算法优化2. 编程语言2.1. C/C++/Java/Python 等主流编程语言的基本语法和特性2.2. 编程范例分析和练习2.3. 算法实现与调试技巧3. 数学基础3.1. 离散数学基础知识3.2. 数论、组合数学和图论基础3.3. 动态规划数学建模4. ACM 竞赛技巧4.1. ACM 竞赛规则和常见题型分析4.2. 模拟训练和解题技巧分享4.3. 队伍协作与策略分享三、培训方式1. 理论授课1.1. 定期组织专家授课,系统讲解培训内容,由资深ACM 竞赛选手分享解题技巧和经验。
1.2. 组织学习交流会,鼓励学生积极提问和讨论。
2. 实践训练2.1. 组织编程实践训练,引导学生独立完成算法实现和调试。
2.2. 选派导师进行一对一指导,帮助学生解决练习中遇到的难点问题。
3. 竞赛准备3.1. 组织模拟 ACM 竞赛,帮助学生提前适应竞赛环境和节奏。
3.2. 参与区域赛和国际赛前的模拟训练,为学生提供更加真实的竞赛体验。
ACM培训计划书制作人:xxx2008/10/21一、什么是ACMACM/ICPC ( ACM International Collegiate Programming Contest)国际大学生程序设计竞,ACM/ICPC 是由国际计算机界历史悠久、颇具权威性的组织ACM (Association for Computing Machinery ,美国计算机协会) 主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。
该项竞赛从1970 年举办至今已历31 届,一直受到国际各知名大学的重视,并受到全世界各著名计算机公司的高度关注,在过去十几年中,APPLE 、AT&T 、MICROSOFT 和IBM 等世界著名信息企业分别担任了竞赛的赞助商。
可以说,ACM 国际大学生程序设计竞赛已成为世界各国大学生最具影响力的国际级计算机类的赛事,是广大爱好计算机编程的大学生展示才华的舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。
该项竞赛分区域预赛和国际决赛两个阶段进行,各预赛区第一名自动获得参加世界决赛的资格,世界决赛安排在每年的 3 ~ 4 月举行,而区域预赛安排在上一年的9 ~12 月在各大洲举行。
ACM/ICPC 的区域预赛是规模很大、范围很广的赛事。
仅在2003 年参加区域预赛的队伍就有来自75 个国家(地区),1411 所大学的3150 支代表队,他们分别在127 个赛场中进行比赛,以争夺全球总决赛的73 个名额,其激烈程度可想而知。
2004 年第29 届ACM/ICPC 亚洲赛区预赛共设了北京、上海、台北、高雄、汉城、德黑兰、爱媛(日本)、达卡(孟加拉国)、马尼拉、坎普尔(印度)等10 个赛站,来自亚洲各国知名高校的各个代表队进行了激烈的角逐。
中国内地从1996 年开始参加ACM/ICPC 亚洲区预赛,至今已历九届。
acm大赛项目计划书一、项目背景及意义ACM(Association for Computing Machinery)大赛是国际性的计算机科学比赛,旨在提高学生的计算机编程技能,培养他们的逻辑思维能力和团队合作精神。
ACM大赛已经成为了全球性的计算机编程赛事,吸引了大量计算机科学爱好者参与其中。
在当今信息化的社会中,计算机科学的发展日新月异,各种新技术层出不穷。
ACM大赛所涉及的计算机编程知识和技能对于学生在未来的学习和工作中都具有重要意义。
因此,本项目旨在通过组织ACM大赛活动,为学生提供一个锻炼自身技能、提高竞争力的平台。
二、项目目标1. 提高学生的计算机编程技能:通过ACM大赛的比赛形式,激发学生对计算机编程的兴趣和热情,提高他们的编程能力和技巧。
2. 培养学生的团队合作意识:ACM大赛是一个团队合作的比赛,每个团队需要合作完成各项任务。
通过这种形式,培养学生的团队合作意识和团队协作能力。
3. 拓展学生的思维能力:ACM大赛的题目通常具有一定难度,要求参赛者具备较强的逻辑思维能力和解决问题的能力。
通过参与ACM大赛,拓展学生的思维视野,培养他们的解决问题的能力。
三、项目内容及实施方案1. 主题:本次ACM大赛的主题为“智能科技”,围绕人工智能、物联网、大数据等领域展开。
参赛队伍可以根据此主题进行编程设计和开发。
2. 时间安排:本次ACM大赛共分为三个阶段,分别为初赛、复赛和决赛。
初赛将在校内进行,产生优秀队伍晋级复赛;复赛将在省内进行,产生优秀队伍晋级决赛;决赛将在全国进行,最终确定ACM大赛的获胜队伍。
3. 参赛资格:本次ACM大赛面向全校学生开放,每个队伍由3-5名同学组成,参赛队员应具备一定的计算机编程基础和团队合作能力。
4. 奖项设置:本次ACM大赛将设置一、二、三等奖以及优秀组织奖、优秀编程奖等奖项,鼓励参赛队伍积极参与比赛,竞争优胜。
5. 宣传推广:为了吸引更多学生参与ACM大赛,我们将通过校园宣传、社交媒体、海报、校园活动等方式进行广泛宣传,提高大赛的知名度和影响力。
实用标准文案ACM培训大纲基础内容:数据结构——》搜索——》图论DP数论博弈中级内容数据结构网络流第一章搜索1.二分搜索三分搜索2.栈3.队列4.深搜5,广搜6.第二章数据结构1.优先队列并查集2.二叉搜索树3.线段树(单点更新)4.5.精彩文档.实用标准文案第三章图论1.图的表示1.1二维数组1.2邻接表1.3前向星2.图的遍历2.1双连通分量2. 2拓扑排序3.最短路3.1迪杰斯特拉3. 2弗洛伊德4. 3 SPFA5.匹配匈牙利算法6.生成树7.网络流简介第四章动态规划1.状态转移方程2.引入3. 1 0-1背包4.2硬币问题5. 3矩阵链乘6.区间DP7.按位DP8.树形DP9.状压DP第五章数论1.欧几里得扩展欧几里得2.因数分解3. 费马小定理4.欧拉定理5.6.1筛法6. 2素数判定6. 2,1 0(Jn)方法精彩文档.实用标准文案6. 2. 2 Mi I ler-rabin 测试第六章博弈1.Nim 和2.SG函数第七章中级数据结构1.树状数组RMO 2.KMP3.AC自动机4.线段树(区间更新)5.第八章图论进阶1.网络流问题精彩文档.实用标准文案综述在很多人眼里,东北大学秦皇岛分校不算是985高校。
所以我们要用自己的能力证明我们有985 的实力。
ACM是计算机界认可度最高的一个比赛,可以说只要区域赛有过奖牌,国内任何IT公司没有理由不要。
同时,在高校之中,对一个大学计算机专业的评价,大部分人也会首先看ACM 的水平。
将ACM打出学校,在国内打出一定成绩,对扩大我校影响力很有帮助。
考虑到本校暂时没有进行专题训练的出题能力,专题训练的题目主要从UESTC 2014年集训队专题训练中获取,再加上从别的0J上找一些题目。
训练的平台设置在华中科技大学的vertual judge上面。
本人将在毕业之前承担培训任务。
在2015学年开始之前,培训计划为每两周一次,中间空闲的时间由大二或者大一熟悉C++的同学给不熟悉C++的同学进行基础的讲解。
NEUACM新生寒假训练建议
一.首先根据第一次月赛的做题情况给出不同的建议:
1.做出题目数量<=2
(说明基础还比较薄弱)
看书:建议先看小白书或者紫书,争取把例题弄懂。
刷题:1)建议现在我们学校的oj上刷题刷到50题,对出题的套路有一定的认识。
2)适当刷小白书上面的习题(hustoj的vjudge可以做uva的题)
2.做出题目数量3~5
(编程已经有一定基础了,但尚未入门)
看书:建议看完小白书或紫书,把大部分例题弄懂,及能自己实现上面的经典算法。
刷题:刷小白书上面的习题,不会的题可以查题解,一段时间后应该能对同一类型的题目很快有思路
3.做出题目数量>=6
(基本完成了入门)
看书:如果看完了小白书或紫书,可以看一下《训练指南》
刷题:适当参加cf,tc或bc的比赛
二.统一的建议
1.学习c++中stl的知识(比赛的时候建议使用c++)
2.学习基础的数据结构
3.学习简单的数学(组合数学,初等数论)
4.学习动态规划
三.关于训练和刷题
1.每次月赛后都应该去把比赛时没有做出来的题目ac掉,题解都在NEUACM首页。
2.做题时如果遇到问题(总是AC不了,某个算法不会之类。
),建议先独立思考,再百度查找网上的讲解,不行再到群里或找学长寻求帮助。
四.关于下次月赛
1.下次月赛会涉及更多的算法,也算是对新生寒假学习情况的检验,希望大家好好训练。
2.提倡诚信比赛,通过作弊的手段获得好的成绩,最终吃亏的只是自己。
入门篇1、acm入门经验对于还没有方向处于盲目阶段的acmer新手会有所帮助。
1、先大概浏览《算法导论》,。
2. 注册OJ账号,找AC人数最多的做,或者找自己会做的做,不会的一概不管。
遇到不会做的题目,尽量自己想,想不出找同学讨论discuss, 也可以搜索解决报告。
3、多做题,一定要多做题,每天至少(是至少)过个几题(1题也行,但一定要做,天天做,有空就做)4、有空多看看别人的代码,不管这题你是过了还是没过,最好都仔细读读,吸取其中写的好的地方,尤其是新手,多看看别人的代码很有好处。
5、有问题不懂可以在acm群、acm百科网问问题,因为主要是自学,交流很重要,在(且只有在)想不出来看不懂书网上又搜不到自己实在无法解决时,一定要多问,死缠烂打地问。
6、有一定水平后,各个OJ,topcoder,所有的比赛都要关注,能做的比赛尽量做,不管刚开始你有多菜,一题都做不出来也要去参加。
并在赛后总结,尽量把能做的题目干掉。
7、所有的大牛都是从只会简单题开始的,不管你现在多菜,只要你坚持,总有一天你会变成大牛。
8、原来以为只有ACM会辛苦,后来和别人交流了,其实所有的专业比赛(计算机方面)都很辛苦,不仅辛苦,而且都需要很长时间,没有任何比赛是你说随便搞搞短时间就能出成绩的,拼的都是内功,成功没有捷径。
如果选择ACM,就一定要坚持,而且必须放弃很多其他东西,不要什么都做什么都没成绩,有所得必有所失。
2、对ACM新人的建议一、语言是最重要的基本功无论侧重于什么方面,只要是通过计算机程序去最终实现的竞赛,语言都是大家要过的第一道关。
亚洲赛区的比赛支持的语言包括C/C++与JA V A。
首先说说JA V A,众所周知,作为面向对象的王牌语言,JA V A在大型工程的组织与安全性方面有着自己独特的优势,但是对于信息学比赛的具体场合,JA V A则显得不那么合适,它对于输入输出流的操作相比于C++要繁杂很多,更为重要的是JA V A程序的运行速度要比C++慢10倍以上,而竞赛中对于JA V A程序的运行时限却往往得不到同等比例的放宽,这无疑对算法设计提出了更高的要求,是相当不利的。
acm学习计划篇一:ACM学习计划ACM学习计划正在学(learning),未学(waiting),已学(cut vovering)初期:一.基本算法:(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,poj1511,poj1847,poj2387,poj3268,poj3037,poj1502,poj1797,poj3615,poj3660,poj3013,poj3159,poj1275)(3)最小生成树算法(prim,kruskal)(poj1789,poj2485,poj1258,poj3026,poj1861,poj2395,poj2377,poj2421,poj1679,poj1751,poj1354,poj1251,poj36 25,poj3522)(4)拓扑排序 (poj1094)(5)二分图的最大匹配(匈牙利算法) (poj3041,poj3020,poj1274,poj3692,poj2195,poj1466,poj1469,poj2239,poj1325,poj2771,poj 1422,poj2594,poj1087)(6)最大流的增广路算法(EK算法,SAP算法,Dinic算法).(poj1459,poj3436,poj1273,poj3281,poj1087,poj1149 ,poj1698,poj2195,poj1815)三.数据结构.(1)串 (poj1035,poj3080,poj1936)(2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299)(3)简单并查集的应用. (poj1182,poj1456,poj1611,poj1988,poj2524,poj2236)(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash)(poj3349,poj3274,POJ2151,poj1840,pojXX,poj2503)(5)哈夫曼树(poj3253)(6)堆(7)trie树(静态建树、动态建树) (poj2513poj3630,poj1204,poj1056,hduoj1251,hduoj1247)四.简单搜索(1)深度优先搜索(poj2488,poj3083,poj3009,poj1321,poj2251)(2)广度优先搜索(poj3278,poj1426,poj3126,)(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)五.动态规划(1)背包问题. (poj1837,poj1276)(2)型如下表的简单DP(可参考lrj的书 page149):[j]=opt{D[i]+w(i,j)} (poj3267,poj1836,poj1260,poj2533)[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)(poj3176,poj1080,poj1159)[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)六.数学(1)组合数学:1.加法原理和乘法原理.2.排列组合.3.递推关系.(POJ3252,poj1850,poj1019,poj1942)(2)数论.1.素数与整除问题2.进制位.3.同余模运算.(poj2635, poj3292,poj1845,poj2115)(3)计算方法.1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122)七.计算几何学.(1)几何公式.(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等).(poj2031,poj1039)(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交) (poj1408,poj1584)(4)凸包. (poj2187,poj1113,poj1228,poj1794,pojXX,hoj1392,hoj1 348, hoj2202,hoj2215)中级:一.基本算法:(1)C++的标准模版库的应用. (poj3096,poj3007)(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)二.图算法:(1)差分约束系统的建立和求解. (poj1201,poj2983,poj1364,poj3169,poj3159 ,poj1716,poj1275,zoj1260,zoj1420,zoj1455) (利用最短路Bellman_Ford和SPFA算法)。
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*算法,最小耗散优先.
第三阶段:
前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法。
这就
要平时多做做综合的题型了。
1. 平时多想一想常用的算法,争取不忘记以前做过的题目。
2. 多参加网上的比赛,感受一下比赛的气氛,评估自己的实力.
3. 一道题不要过了就算,问一下人,有更好的算法也打一下。
4. 做过的题要记好。
作为一个零基础的大一学生,想要参加ACM竞赛可能会感到有些困难和迷茫。
那么如何给这些学生提供一个ACM成长计划呢?
了解ACM竞赛的基本知识是必不可少的。
ACM竞赛是一项面向大学生的程序设计竞赛,旨在培养学生的算法设计和程序开发能力。
竞赛中,选手需要在规定时间内解决若干道算法问题,通过提交程序代码的方式进行评分。
学生需要掌握基本的编程语言和数据结构知识,同时还需要具备一定的数学思维和逻辑推理能力。
参加ACM竞赛需要有一定的实践经验。
学生可以通过参加学校或社团组织的编程比赛来积累经验,也可以自己在网上找一些练习题来做。
在做题的过程中,要注意代码的规范性和可读性,同时也要注重算法的优化和时间复杂度的分析。
除此之外,还可以参加一些ACM培训班或者在线课程来提高自己的水平。
这些培训班和课程通常会提供一些经典的算法模板和题目讲解,可以帮助学生更好地理解和掌握算法知识。
还可以参加一些ACM讲座和交流活动,与其他选手交流经验和思路,共同提高。
参加ACM竞赛需要有一定的心理准备。
ACM竞赛的难度比较大,很可能会遇到各种各样的问题和挑战。
学生需要具备一定的耐心和毅力,不断地尝试和学习,不断地提高自己的水平。
给大一零基础学生提供一个ACM成长计划需要从多个方面入手,包括基础知识的掌握、实践经验的积累、课程和培训的参加以及心理素质的提升等。
只有全面地提高自己的能力,才能在ACM竞赛中获得更好的成绩。
acm暑假培训计划一、项目背景ACM(Association for Computing Machinery)是一个致力于计算机科学和信息技术领域的专业学术团体,旨在促进计算机科学的发展和研究。
为了培养更多对计算机科学感兴趣的学生以及提升他们的相关知识和能力,ACM经常举办暑期培训计划,通过集中学习和实践活动,帮助学生提高其编程和算法能力,迅速提升自己的综合素质。
二、项目目标1. 提高学生对算法和编程的兴趣和能力;2. 培养学生的团队协作能力;3. 增强学生的问题解决能力;4. 促进学生之间的交流和合作。
三、培训内容本次ACM暑假培训计划主要涉及以下内容:1. 数据结构与算法2. 编程实践3. 算法竞赛经验分享四、项目安排1. 培训周期:暑假期间,为期两个月。
2. 每周安排:每周安排3-4天的培训时间,每天4-5小时。
3. 培训形式:理论学习、实践编程、实时竞赛等多种形式相结合。
4. 培训地点:学校计算机实验室或线上会议平台。
五、教学安排1. 数据结构与算法:介绍基本的数据结构和算法,如栈、队列、链表、树、图以及相关算法的设计和实现。
2. 编程实践:通过实践项目,学生将学习如何应用数据结构和算法解决实际的问题,提高编程能力和实践经验。
3. 算法竞赛经验分享:邀请资深ACM竞赛选手分享经验和技巧,帮助学生更好地准备和参加ACM编程竞赛。
六、学员选拔1. 学员资格:对计算机科学及编程感兴趣,有一定的编程基础和学习能力。
2. 学员选拔:学校将通过笔试、面试等方式选拔合适的学生参加培训。
七、培训成果1. 提升学生的数据结构与算法知识水平;2. 培养学生的团队协作意识和能力;3. 增强学生的解决问题和创新能力;4. 培养学生的竞赛意识和竞赛技巧。
八、风险及对策1. 学生学习兴趣不高:通过丰富多彩的教学方式和实践项目,激发学生的学习兴趣。
2. 学员学习能力不足:提供针对性的辅导和课外习题训练,帮助学生提高学习能力。
ACM训练计划建议(转)前⾔:⽼师要我们整理⼀份训练计划给下⼀届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供⼤家参考。
菜鸟之作,⼤⽜勿喷,如有不当或补充之处,欢迎指出。
本建议书分为三个阶段,⼤⼀、⼤⼆、⼤三。
⼤四暂没整理,⼀⽅⾯是⼤四要⾯临考验和找⼯作的问题,坚持继续acm的很少,另⼀⽅⾯,本⼈还没⼤四……下⾯以个⼈经验分析⼀下这三个阶段建议学习的内容和具体的训练计划。
正⽂:⼤⼀(第⼀阶段): ⼤⼀是时间最充裕的⼀段时间,也是可塑性最⾼的⼀个阶段。
⼤⼀你有很多⾃由时间可以⾃⼰分配,建议这段时间先打好c/c++基础,或者是任何⼀门语⾔的基础,尽量做到“半精通”。
因为像c++这种语⾔,⼏年内达到精通都是不可能的。
⽽我这⾥所说的“半精通”,实际上是将课本完全搞透的基础上,再在课外拓展⼀些内容,加深对语⾔本⾝的理解。
为什么我这⾥强调语⾔的重要性呢?⼀⽅⾯是为了以后搞acm的需要,语⾔通畅了,可以保证你实现⼤部分算法没有障碍,⽽⽐赛时,时间是很重要的。
另⼀⽅⾯,也是你⾝为学计算机的学⽣的⼀个必须要学习的能⼒,语⾔就是你⼿中的剑,以后能披荆斩棘⾛多远,剑有多锋利占很⼤因素。
另⼀⽅⾯,建议打好数学的基础。
学长⾝为过来⼈,深受数学烂的苦。
acm越到后期的时候,其实⽤到的数学知识就越多。
像有些题⽬,⾚裸裸的就是求积分,还有⼀些题⽬,将求期望嵌⼊到了DP的题⽬⾥…… 其实这些还好说,都是显式的题⽬,还有⼀种隐式的东西,对acm帮助最⼤,那就是数学思维。
有数学思维和没有数学思维的区别,就是⼀道题有N种思路和N*N种思路的区别。
这越到后期越明显,思路很重要,⽐赛时⾯对⼀道题团队⾥⾸先要有多种思路可供分析,然后⼤家讨论哪种思路是最可⾏的,确定之后就是最擅长这个思路的⼈实现算法。
如果分析⼀道题⽬的时候,产⽣的思路很少,那么⽆疑会降低这道题的AC命中率。
啰嗦了这么多,其实我就想给⼤⼀的新⽣们强调两点,语⾔和数学。
【关键字】学习计划acm学习计划篇一:ACM学习计划ACM学习计划正在学(learning),未学(waiting),已学(cut vovering)初期:一.基本算法:(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,poj1511,poj1847,poj2387, poj3268,poj3037,poj1502,poj1797,poj3615,poj3660,poj3013,poj3159,poj1275)(3)最小生成树算法(prim,kruskal)(poj1789,poj2485,poj1258,poj3026,poj1861,poj2395,poj2377,poj2421,poj1679,poj1751,poj1354 ,poj1251,poj3625,poj3522)(4)拓扑排序(poj1094)(5)二分图的最大匹配(匈牙利算法) (poj3041,poj3020,poj1274,poj3692,poj2195,poj1466,poj1469,poj2239,poj1325,poj2771,poj1422,poj2594,poj1087)(6)最大流的增广路算法(EK算法,SAP算法,Dinic算法).(poj1459,poj3436,poj1273,poj3281,poj1087,poj1149 ,poj1698,poj2195,poj1815)三.数据结构.(1)串(poj1035,poj3080,poj1936)(2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299)(3)简单并查集的应用. (poj1182,poj1456,poj1611,poj1988,poj2524,poj2236)(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash)(poj3349,poj3274,POJ2151,poj1840,pojXX,poj2503)(5)哈夫曼树(poj3253)(6)堆(7)trie树(静态建树、动态建树) (poj2513poj3630,poj1204,poj1056,hduoj1251,hduoj1247)四.简单搜索(1)深度优先搜索(poj2488,poj3083,poj3009,poj1321,poj2251)(2)广度优先搜索(poj3278,poj1426,poj3126,)(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)五.动态规划(1)背包问题. (poj1837,poj1276)(2)型如下表的简单DP(可参考lrj的书page149):[j]=opt{D[i]+w(i,j)} (poj3267,poj1836,poj1260,poj2533)[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)(poj3176,poj1080,poj1159)[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)六.数学(1)组合数学:1.加法原理和乘法原理.2.排列组合.3.递推关系.(POJ3252,poj1850,poj1019,poj1942)(2)数论.1.素数与整除问题2.进制位.3.同余模运算.(poj2635, poj3292,poj1845,poj2115)(3)计算方法.1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122)七.计算几何学.(1)几何公式.(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等).(poj2031,poj1039)(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交) (poj1408,poj1584)(4)凸包. (poj2187,poj1113,poj1228,poj1794,pojXX,hoj1392,hoj1348, hoj2202,hoj2215)中级:一.基本算法:(1)C++的标准模版库的应用. (poj3096,poj3007)(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)二.图算法:(1)差分约束系统的建立和求解. (poj1201,poj2983,poj1364,poj3169,poj3159 ,poj1716,poj1275,zoj1260,zoj1420,zoj1455) (利用最短路Bellman_Ford和SPFA算法)。
编程特长生训练计划背景由于计算机技术的迅猛发展和应用的广泛扩展,编程技能对于现代社会的人才需求变得越来越重要。
为了培养出具备优秀的编程特长的学生,我们制定了以下编程特长生训练计划。
目标我们的目标是培养学生在编程方面的优秀能力,使其具备以下特长:掌握基础编程语言和技术能够独立解决问题和开发应用熟悉软件开发生命周期和团队合作具备创新思维和研究能力训练计划内容阶段一:基础编程知识研究(2个月)学生将在这一阶段研究基础编程知识,包括以下内容:编程语言(如Python、Java等)的基本语法和概念数据结构和算法编程范式和设计模式软件开发工具和环境的使用阶段二:问题解决和应用开发(3个月)学生将在这一阶段通过实际项目来锻炼解决问题和应用开发能力,包括以下内容:参与真实项目开发,解决实际问题研究和应用常见的开发框架和库进行代码优化和性能调试研究软件测试和调试技巧阶段三:团队合作和项目管理(2个月)学生将在这一阶段研究团队合作和项目管理的技能,包括以下内容:参与团队开发项目,研究协作和沟通能力研究项目管理和软件开发生命周期进行项目计划和需求分析研究文档编写和版本控制工具的使用训练计划实施方式每个阶段包括理论研究和实践项目学生将通过课堂教学、实验室实践和项目实践来完成训练导师将负责指导和评估学生的研究和项目表现学生可获得相应的证书和荣誉称号总结编程特长生训练计划旨在培养学生在编程方面的优秀能力,并使他们在未来的职业生涯中具备竞争力。
通过系统的培训和实践,学生将获得扎实的编程基础和解决问题的能力,为他们的职业发展打下坚实的基础。
这个训练计划我也只是把我知道的知识点罗列出来而已.其实acm还有很多方面的知识。
可能到acm生涯结束的时候还是无法把所有的知识都吃透所以acm的知识能学多少算多少,知识重要的不是你知道的多,重要的是你能否熟练的运用他们!题目注意事项:zoj:/grid:/hdu:/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 12512.并查集Hdu:1558 1811 1829 11983.图论专题:简单的说下图怎么存储。
图通常分为邻接表和邻接矩阵两种方式储存。
请先移步到数据结构书祥看这两种实现方式。
邻接表:我们知道要动态分配内存。
这种方式有时会导致效率低下。
我们可以模拟一下动态分配内存,详见附件静态分配。
这部分图论可参考/p-251720691.html部分题目.这本书有讲解。
1.图的基本概念poj:16592.图的遍历和活动问题zoj:2110 1709 1649 2913 1060 2193 2412 1008 2165 1136 1361 1091 1083poj:2935 1270 36873.树与图的生成树zoj:1203 1542 1586 2158 1406 1372 1718 1914 2048poj:1679 2421 1258 30264最短路径zoj:1298 2750 1092 1721 1967 1952 2770 1508 1053 1655 1232 2008 1791 3088 3103 1942 2027 2797 1082 1221 1857 1260 1420 1455poj:3268 3259 1192 31695可行遍性问题zoj:1395 2016 2398 1130 1919poj:25136.网络流问题zoj:1734 2874 2314 1994 1157 1992 2587 2788 2404 1553poj:1149 1273 2112 3469 1815 3422 2391 3436 25167.支配集覆盖集独立集问题zoj:1654 1364 1140 2429 1516 1137 1059 1525poj:30418.图的连通性问题zoj:1119 2182 2588 1979 1311 2532 2470poj:2942 3177 2762 2186 1236 3352 3694 3160 35929.平面图问题zoj:2394 1084 2589poj:1419三.常用算法。
//可与数据结构的题目交叉做。
做以下题目时,请参考附件:Hdu课件参考课本李文新老师的《程序设计导引及在线实践》.pdf。
1.简单数学:高中程度的数学能力基本能解决。
所以速度秒杀下面几道题目:hdu:1049、1060、1061、1066grid:2750 1657 2808 28012.递推题目:考察的主要是数学的推理能力hdu:1290 1297 1438 1465 ~1466 1480 2013 2018 2041~20423.进制转换:grid:2972 2973 2734 2735 2798 27654.简单的字符串处理:grid:2742 2974 2744 2975 2743 2976 2818 2819 2820 2804 2797 27995.模拟题:主要考察的是你的编码能力,题目做出来后,可以去网上找这道题目的相关代码,参考别人的做法简化自己的代码。
grid:2733 2712 2964 2965 2966 2723 2967 2746 2950 27456.大整数:涉及知识点:大整数加法,乘法,除法,减法除法的实现相对来说比较难,可以掠过。
大整数运算其实可以使用java来实现比较方便,有兴趣的同学,可以去网上搜下另外里面有一道题涉及二进制快速幂,请参考附件二进制快速幂.docgrid:2981 2980 2737 2706 2809 2738 29517.枚举:简单点的枚举,就是用几个循环枚举每个数的每种情况,然后找出符合条件的,这种题目比赛时经常会出现,如果一心想着好的算法,而放弃这种暴力手段的话,有可能与水题失之交臂。
grid:2977 2692 2810 2811 2812 2739 2747 2813 11838.递归+搜索(二分搜索+ bfs+dfs)grid:2753 2756 2694 1664 2816 2754 2817 2815 2749 2790hdu:1010、1240、1241、1242 1072、1253 、1312、1372 (以上题目类似于1010)1238、1239、1015、1016 1401、1515、1548poj:1064 2507 2002 3685 2503 2413(高精度)1826(并查集或dfs或dfs+二分法最好用并查集)9.DP基础:grid:2757 1661 2806 2979 2809 2795 1088 2733 2786 2792 2766hdu:1003 、1466 、1087、1159、11761058、1069、2059、208410.贪心算法入门:hdu:1045 1050 1051 1052 1053 1054 2037 1076 1203 1204 1239 1579 1730 228512.计算几何基础请参考算法导论计算几何里面的相关内容。
一。
点,线,面,形基本关系,点积叉积的理解POJ 2318 TOYS(推荐)/JudgeOnline/problem?id=2318POJ 2398 Toy Storage(推荐)/JudgeOnline/problem?id=2398一个矩形,有被若干直线分成N个格子,给出一个点的坐标,问你该点位于哪个点中。
知识点:其实就是点在凸四边形内的判断,若利用叉积的性质,可以二分求解。
POJ 3304 Segments/JudgeOnline/problem?id=3304知识点:线段与直线相交,注意枚举时重合点的处理POJ 1269 Intersecting Lines/JudgeOnline/problem?id=1269知识点:直线相交判断,求相交交点POJ 1556 The Doors (推荐)/JudgeOnline/problem?id=1556知识点:简单图论+简单计算几何,先求线段相交,然后再用Dij求最短路。
POJ 2653 Pick-up sticks/JudgeOnline/problem?id=2653知识点:还是线段相交判断POJ 1066 Treasure Hunt/JudgeOnline/problem?id=1066知识点:线段相交判断,不过必须先理解“走最少的门”是怎么一回事。
POJ 1410 Intersection/JudgeOnline/problem?id=1410知识点:线段与矩形相交。
正确理解题意中相交的定义。
详见:/novosbirsk/blog/item/68c682c67e8d1f1d9d163df0.htmlPOJ 1696 Space Ant (推荐)/JudgeOnline/problem?id=1696德黑兰赛区的好题目。
需要理解点积叉积的性质POJ 3347 Kadj Squares/JudgeOnline/problem?id=3347本人的方法极度猥琐。
复杂的线段相交问题。
这个题目是计算几何的扩大数据运算的典型应用,扩大根号2倍之后就避免了小数。
POJ 2826 An Easy Problem?! (推荐)/JudgeOnline/problem?id=2826问:两条直线组成一个图形,能容纳多少雨水。
很不简单的Easy Problem,要考虑所有情况。
你不看discuss看看能否AC。
(本人基本不能)提示一下,水是从天空垂直落下的。
POJ 1039 Pipe/JudgeOnline/problem?id=1039又是线段与直线相交的判断,再加上枚举的思想即可。
POJ 3449 Geometric Shapes/JudgeOnline/problem?id=3449判断几何体是否相交,不过输入输出很恶心。
此外,还有一个知识点,就是给出一个正方形(边不与轴平行)的两个对角线上的顶点,需要你求出另外两个点。
必须掌握其方法。
POJ 1584 A Round Peg in a Ground Hole/JudgeOnline/problem?id=1584知识点:点到直线距离,圆与多边形相交,多边形是否为凸POJ 2074 Line of Sight (推荐)/JudgeOnline/problem?id=2074与视线问题的解法,关键是求过两点的直线方程,以及直线与线段的交点。
数据有一个trick,要小心。
二。
凸包问题POJ 1113 Wall/JudgeOnline/problem?id=1113知识点:赤裸裸的凸包问题,凸包周长加上圆周。
POJ 2007 Scrambled Polygon/JudgeOnline/problem?id=2007知识点:凸包,按极角序输出方案POJ 1873 The Fortified Forest (推荐)/JudgeOnline/problem?id=1873World Final的水题,先求凸包,然后再搜索。
由于规模不大,可以使用位运算枚举。
详见:/novosbirsk/blog/item/333abd54c7f22c52574e0067.htmlPOJ 1228 Grandpa's Estate (推荐)/JudgeOnline/problem?id=1228求凸包顶点数目,很多人求凸包的模板是会多出点的,虽然求面积时能得到正确答案,但是在这个题目就会出问题。
此外,还要正确理解凸包的性质。
POJ 3348 Cows/JudgeOnline/problem?id=3348凸包面积计算三。
面积问题,公式问题POJ 1654 Area/JudgeOnline/problem?id=1654知识点:利用有向面积(叉积)计算多边形面积POJ 1265 Area/JudgeOnline/problem?id=1265POJ 2954 Triangle/JudgeOnline/problem?id=2954Pick公式的应用,多边形与整点的关系。