1. 关于ACM竞赛
ACM 是一个国际科学教育计算机组织,它致力于发展在高 级艺术、最新科学、工程技术和应用领域中的信息技术。它强调在专业领域或在社会感兴趣的领 域中培养、发展开放式的信息交换,推动高级的专业技术和通用标准的发展。
1947年,即世界第一台电子数字计算机(ENIAC)问世的第二年,ACM即成为第一个,也一直是世界上最大的科学教育计算机组织。它的创立者和成员都是数学家和电子工程师,其中之一是约翰.迈克利(John.Mauchly),他是ENIAC的发明家之一。他们成立这个组织的初衷是为了计算机领域和新兴工业的科学家和技术人员能有一个共同交换信息、经验知识和创新思想的场合。几十年的发展,ACM的成员们为今天我们所称之为“信息时代”作出了贡献。他们所取得的成就大部分出版在ACM印刷刊物上并获得了ACM颁发的在各种领域中的杰出贡献奖。例如:A.M.Turing奖和Grance Murr—ay Hopper奖。
ACM组织成员今天已达到九万人之多,他们大部分是专业人员、发明家、研究员、教育家、工程师和管理人员;三分之二以上的ACM成员,又是属于一个或多个SIGs(Special Interest Group)专业组织成员。他们都对创造和应用信息技术有着极大的兴趣。有些最大的最领先的计算机企业和信息工业也都是ACM的成员。
ACM就像一个伞状的组织,为其所有的成员提供信息,包括最新的尖端科学的发展,从理论思想到应用的转换,提供交换信息的机会。正象ACM建立时的初衷,它仍一直保持着它的发展“信息技术”的目标,ACM成为一个永久的更新最新信息领域的源泉。
ACM 国际计算机组织有以下主要活动内容:
1. 出版各种有关计算机技术的杂志,日报和书共十大类;
- Communications of the ACM ACM通讯
- Interactions 交互技术
- Standard View 标准
- Multimedia Systems 多媒体系统
- Computing Surveys 计算技术调查
- Computing Reviews 计算技术回顾
- Journal of the ACM ACM日报
- Wireless Networks 无线网络技术
- ACM's Transactions Journals ACM科研项目日报
包括:Computer-Human Interaction 人机交互技术
Computer Systems 计算机系统
Database Systems 数据库系统
Graphics 作图
Information Systems 信息系统
Mathematical Software 数学软件
Modeling and Computer Simulation 建模和计算机模仿
Networking 网络
Programming Languages and Systems 编程语言和系统
Software Engineering & Methodology 软件工程和方法学
- The ACM Press Books Program ACM 出版书四十种
2. ACM 有下属37个专业组织SIGs(Special Interest Group)
(1)、SIGACT: Algorithm & Computational Theory
计算机科学基础理论专业组织
(2)、SIGAda: Ada Programming Language
计算机科学软件专业组织
(3)、SIGAPL: APL Programming Language
计算机应用软件专业组织
(4)、SIGAPP: Applied Computing
应用计算机技术专业组织
(5)、SIGARCH: Computer Architecture
计算机硬件结构技术专业组织
(6)、SIGART: Artificial Intelligence
人工智能专业组织
(7)、SIGBIO: Biomedical Computing
生物医学专业组织
(8)、SIGBIT: Business Information Technology
商业信息理论专业组织
(9)、SIGCAPH: Computers & the Physically Handicapped
计算机与残疾人专业组织
(10)、SIGCAS: Computers and Society
计算机与社会专业组织
(11)、SIGCHI: Computer-Human Interaction
人机交互专业组织
(12)、SIGCOMM: Data Communication
数据通讯专业组织
(13)、SIGCPR: Computer Personnel Research
计算机个人研究专业组织
(14)、SIGCSE: Computer Science Ecation
计算机科学教育专业组织
(15)、SIGCUE: Computer Uses in Ecation
计算机教育应用专业组织
(16)、SIGDA: Design Automation
自动化设计专业组织
(17)、SIGDOC: Systems Documentation
文件系统专业组织
(18)、SIGFORTH: FORTH Programming Language
第四编程语言专业组织
(19)、SIGGRAPH: Computer Graphics
计算机图形图像专业组织
(20)、SIGICE: Indivial Computing Environments
小型计算机环境专业组织
(21)、SIGIR: Information Retrieval
信息存储恢复专业组织
(22)、SIGLINK: Hypertext & Hypermedia
专业组织
(23)、SIGMETRICS: Measurement & Evaluation
测量与估评专业组织
(24)、SIGMICRO: Micro-architectural Research & Practice
微型建筑研究与实践专业组织
(25)、SIGMM: Multimedia
多媒体专业组织
(26)、SIGMOD: Management of Data
数据管理专业组织
(27)、SIGNUM: Numerical Mathematics
数字数学理论专业组织
(28)、SIGOIS: Office Information Systems
办公信息系统专业组织
(29)、SIGOPS: Operating Systems
操作系统专业组织
(30)、SIGPLAN: Programming Languages
编程语言专业组织
(31)、SIGSAC: Security, Audit and Control
保密稽核控制专业组织
(32)、SIGSAM: Symbolic & Algebraic Manipulation
符号与代数变换专业组织
(33)、SIGSIM: Simulation and Modeling
模仿与建模专业组织
(34)、SIGSOFT: Software Engineering
软件工程专业组织
(35)、SIGSOUND: Electronic Forum on Sound Technology
声音技术电子会议专业组织
(36)、SIGUCCS : University & College Computing Services
大专院校计算机服务专业组织
(37)、SIG3C: Computing at Community Colleges
社区院校计算机专业组织
3. 举行专业年会
ACM和它的各专业组织SIGs每年在世界范围内举行60多场年会和展览会,吸引五万多人次来参加;
会议的主题主要是信息技术工业,其中最大的年会是SIGGRAPH。
4. 举行地方专业会议和各种SIGs活动。
5. 与有关院校合作,召集学生参加多种会议和举办各种活动。
6. ACM 电子团体
7. 与其它专业协会交往:
ACM经常与其它专业协会交往,并召集举办其它电子计算机会议。
8. 对有杰出贡献的计算机科学家、工程师、教育家和专业人员颁发八种主要奖:
- A.M. Turing Award
- Grace Murray Hopper Award
- Distinguished Service Award
- Doctoral Dissertation Award
- Eckert-Maucbly Award
- Software System Award
- Karl V. Karlstrom Outstanding Ecator Award
- Alan Newell Award
2. 参加ACM竞赛需要学习一些什么知识啊…算法什么的…待解决
先学数据结构
之后多看书,给你推几本
ACM入门经典 刘汝佳
程序设计与分析 王晓东
实用的算法分析与程序设计 吴文虎
算法导论 一群老外写的
算法艺术与信息学竞赛 刘汝佳
3. ACM的竞赛流程
1.参赛队伍最多由三名参赛队员组成。
2.竞赛中一般命题10题左右,试题描述为英文,比赛时间为5个小时,前四个小时可以看到实时排名,最后一小时封榜,无法看到排名。
3.竞赛可以使用的语言:C++、C、Java和Pascal。但final赛只有C/C++;
4.重点考察选手的算法和程序设计能力,不考察任何Windows编程知识;
5.选手可携带任何非电子类资料,包括书籍和打印出来的程序等,部分赛区会对携带的资料进行限制;
6.评委负责将结果(正确或出错的类型)通过网络尽快返回给选手,除此之外不提供任何额外帮助;
返回结果:
1.Accepted. ---通过!(AC)
2.Wrong Answer. ---答案错。(WA)
3.RunTime Error. ---程序运行出错,意外终止等。(RTE)
4.Time Limit Exceeded. ---超时。程序没在规定时间内出答案。(TLE)
5.Presentation Error. ---格式错。程序没按规定的格式输出答案。(PE)
6.Memory Limit Exceeded. ---超内存。程序没在规定空间内出答案。(MLE)
7.Compile Error. ---编译错。程序编译不过。(CE)
4. 网上有哪些比赛是适合ACM初级入门的人的呢
http://codeforces.com/
http://bestcoder.h.e.cn/
第一个都是英文,Div2的 A B 题还是很适合新手的,,每两周大概3次比赛回吧,,对应一个rating。
具体网络codeforces,了解相关答规则。
第二个是中国的,杭州电子科技大学做的一个比赛,每周六晚上7点,,新手的只能做1001(也就是第一题了),,不过这个支持中文,题目中英文都有。。。随你选择,加油吧,,新手刚开始不要太着急比赛(可以做几次把握把握)然后可以学习相关专题。。
5. 请问哪里可以找到acm-icpc程序竞赛的视频全套培训教程(网络上好像都找不到这类视频QAQ)谢谢
全套教程。。。。哪有这种东西,最多是全套入门教程 来自Lumia830
6. 参加ACM竞赛需要用的参考书
算法导论 算法艺术与信息学竞赛 初等数论 具体数学 柔性字符串匹配
7. 大一学数学的以后可以参加ACM竞赛吗需要学习哪些课程 谢谢大佬。
确实需要,一般来说,在单纯学习算法到一定程度时大家的水平都差不多,但是想要更内进一步就需容要非常扎实的数学功底,数学并不一定指的是数论和组合数学,更为确切地说应该是一种剖析、思考的高效方式,于是很容易地发现问题的本质,就可以产生清晰的解题思路,在套用自己学过的算法就成了,中级水平的acmer和高级水平的acmer的差距大概就在这里,这并不是时间和经验就能弥补的
事实上,国际比赛中常有数学系的学生摘金夺银,楼天成高中时除了诗歌oier,还是全国数学竞赛一等奖,这都很能说明问题
8. 什么是ACM培训
ACM 即 ACM国际大学生程序设计竞赛。
ACM国际大学生程序设计竞赛标志ACM国际大学生程序设计竞赛(英文全称: International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。
基本概况
ACM/ICPC(国际大学生程序设计竞赛)是由ACM(,美国计算机协会)组织的 ACM竞赛年度性竞赛,始于1970年,是全球大学生计算机程序能力竞赛活动中最有影响的一项赛事,是全球历史最悠久、规模最大且最负盛名的程序设计竞赛。竞赛提倡创新和团队协作,鼓励学生在构建全新的软件程序时尽情发挥创意,帮助学生检验自己在强压力下的工作能力。 ACM国际大学生程序设计竞赛(ICPC)的历史可以上溯到1970年,当时美国德州A&M大学举办了首届竞赛,主办方是UPE计算机科学荣誉协会Alpha分会。作为一种发现和培养计算机科学这一新兴领域顶尖学生的全新方式,竞赛很快得到了美国和加拿大多所大学的积极响应。
1977年,首届ICPC总决赛在ACM计算机科学会议期间举行,并由此演变成一项多级竞赛。此后,ACM担任竞赛主办方,并于1989年将大赛总部设在了美国德克萨斯州的贝勒大学。从此,该竞赛逐渐发展成了一个举办区域预赛选拔参赛队伍参加ACM-ICPC全球决赛的全球大学网络。
1997年,IBM成为竞赛的赞助方。IBM的加盟促使竞赛的规模扩大了七倍。参赛人数显著增加,涉及来自六大洲83个国家1,821所大学数万名计算领域的顶尖学生和教师。
9. ACM 关于ACM程序设计竞赛,需要掌握哪些知识点,最好能详细一点,谢谢高手们了。
初期:
一.基本算法:
(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)组合数学:
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)
中级:
一.基本算法:
(1)C++的标准模版库的应用. (poj3096,poj3007)
(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)
二.图算法:
(1)差分约束系统的建立和求解. (poj1201,poj2983)
(2)最小费用最大流(poj2516,poj2516,poj2195)
(3)双连通分量(poj2942)
(4)强连通分支及其缩点.(poj2186)
(5)图的割边和割点(poj3352)
(6)最小割模型、网络流规约(poj3308, )
三.数据结构.
(1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)
(2)静态二叉检索树. (poj2482,poj2352)
(3)树状树组(poj1195,poj3321)
(4)RMQ. (poj3264,poj3368)
(5)并查集的高级应用. (poj1703,2492)
(6)KMP算法. (poj1961,poj2406)
四.搜索
(1)最优化剪枝和可行性剪枝
(2)搜索的技巧和优化 (poj3411,poj1724)
(3)记忆化搜索(poj3373,poj1691)
五.动态规划
(1)较为复杂的动态规划(如动态规划解特别的施行商问题等)
(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)
(2)记录状态的动态规划. (POJ3254,poj2411,poj1185)
(3)树型动态规划(poj2057,poj1947,poj2486,poj3140)
六.数学
(1)组合数学:
1.容斥原理.
2.抽屉原理.
3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).
4.递推关系和母函数.
(2)数学.
1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)
2.概率问题. (poj3071,poj3440)
3.GCD、扩展的欧几里德(中国剩余定理) (poj3101)
(3)计算方法.
1.0/1分数规划. (poj2976)
2.三分法求解单峰(单谷)的极值.
3.矩阵法(poj3150,poj3422,poj3070)
4.迭代逼近(poj3301)
(4)随机化算法(poj3318,poj2454)
(5)杂题.
(poj1870,poj3296,poj3286,poj1095)
七.计算几何学.
(1)坐标离散化.
(2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用).
(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)
(3)多边形的内核(半平面交)(poj3130,poj3335)
(4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)
高级:
一.基本算法要求:
(1)代码快速写成,精简但不失风格
(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)
(2)保证正确性和高效性. poj3434
二.图算法:
(1)度限制最小生成树和第K最短路. (poj1639)
(2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解)
(poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446
(3)最优比率生成树. (poj2728)
(4)最小树形图(poj3164)
(5)次小生成树.
(6)无向图、有向图的最小环
三.数据结构.
(1)trie图的建立和应用. (poj2778)
(2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法
(RMQ+dfs)).(poj1330)
(3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的
目的). (poj2823)
(4)左偏树(可合并堆).
(5)后缀树(非常有用的数据结构,也是赛区考题的热点).
(poj3415,poj3294)
四.搜索
(1)较麻烦的搜索题目训练(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)
(2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)
(3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法. (poj3131,poj2870,poj2286)
五.动态规划
(1)需要用数据结构优化的动态规划.
(poj2754,poj3378,poj3017)
(2)四边形不等式理论.
(3)较难的状态DP(poj3133)
六.数学
(1)组合数学.
1.MoBius反演(poj2888,poj2154)
2.偏序关系理论.
(2)博奕论.
1.极大极小过程(poj3317,poj1085)
2.Nim问题.
七.计算几何学.
(1)半平面求交(poj3384,poj2540)
(2)可视图的建立(poj2966)
(3)点集最小圆覆盖.
(4)对踵点(poj2079)
八.综合题.
(poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263)
-----------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------
以及补充
Dp状态设计与方程总结
1.不完全状态记录
<1>青蛙过河问题
<2>利用区间dp
2.背包类问题
<1> 0-1背包,经典问题
<2>无限背包,经典问题
<3>判定性背包问题
<4>带附属关系的背包问题
<5> + -1背包问题
<6>双背包求最优值
<7>构造三角形问题
<8>带上下界限制的背包问题(012背包)
3.线性的动态规划问题
<1>积木游戏问题
<2>决斗(判定性问题)
<3>圆的最大多边形问题
<4>统计单词个数问题
<5>棋盘分割
<6>日程安排问题
<7>最小逼近问题(求出两数之比最接近某数/两数之和等于某数等等)
<8>方块消除游戏(某区间可以连续消去求最大效益)
<9>资源分配问题
<10>数字三角形问题
<11>漂亮的打印
<12>邮局问题与构造答案
<13>最高积木问题
<14>两段连续和最大
<15>2次幂和问题
<16>N个数的最大M段子段和
<17>交叉最大数问题
4.判定性问题的dp(如判定整除、判定可达性等)
<1>模K问题的dp
<2>特殊的模K问题,求最大(最小)模K的数
<3>变换数问题
5.单调性优化的动态规划
<1>1-SUM问题
<2>2-SUM问题
<3>序列划分问题(单调队列优化)
6.剖分问题(多边形剖分/石子合并/圆的剖分/乘积最大)
<1>凸多边形的三角剖分问题
<2>乘积最大问题
<3>多边形游戏(多边形边上是操作符,顶点有权值)
<4>石子合并(N^3/N^2/NLogN各种优化)
7.贪心的动态规划
<1>最优装载问题
<2>部分背包问题
<3>乘船问题
<4>贪心策略
<5>双机调度问题Johnson算法
8.状态dp
<1>牛仔射击问题(博弈类)
<2>哈密顿路径的状态dp
<3>两支点天平平衡问题
<4>一个有向图的最接近二部图
9.树型dp
<1>完美服务器问题(每个节点有3种状态)
<2>小胖守皇宫问题
<3>网络收费问题
<4>树中漫游问题
<5>树上的博弈
<6>树的最大独立集问题
<7>树的最大平衡值问题
<8>构造树的最小环
10. 参加ACM大赛应该准备哪些课程
课程:
(1)基本算法: 二分,分治,贪心
(2) 离散数学离散数学动态规划
(3) 搜索算法:深度优先 搜索,广度优先搜A*算法 ,阿尔法贝塔剪枝
(4)数据结构:线段树, 树状数组,并查集,Trie图
(5)图论问题:最小生成树 最短路 强连通分量、桥和割点
(6)网络流算法:基本的网络流算法,Dinic算法,带上下界的网络流,最小费用流
(7)计算几何:线与线求交,线与面求交,求凸包,半平面求交等
(8) 离散数学,高等数学,线性代数,初等数论,计算几何
(9)计算机专业英语
(10)C++;基础的递归、枚举算法
1.参赛队伍最多由三名参赛队员组成。
2.竞赛中命题10题左右,试题描述为英文,比赛时间为5个小时,前四个小时可以实时看到排名,最后一小时封榜,无法看到排名。
3.竞赛可以使用的语言:Java, C, C++, Kotlin 和 Python。
4.重点考察选手的算法和程序设计能力,不考察实际工程中常用的系统编程,多线程编程等等;
5.选手可携带任何非电子类资料,包括书籍和打印出来的程序等,部分赛区会对选手携带的纸质资料做限制。
6.评委负责将结果(正确或出错的类型)通过网络尽快返回给选手,除此之外不提供任何额外帮助;
7.每个题目对应一种颜色的气球,通过该题目的队伍会得到对应颜色气球。每道题目第一支解决掉它的队还会额外获得一个“FIRST PROBLEM SOLVED”的气球。