1. 什么是ACM算法设
ACM是美国计算机协会
和算法有关那就指程序设计竞赛
会涉及很多算法
不知你想问什么
2. acm计算几何算法
计算几何?这不是很多嘛。我这手里还有一本黑的书,就是讲计算几何的,不过我现在专业问题不会再研究ACM了……另外网上也有很多东西的。实在不行你就弄本《计算机图形学》,也有许多的问题啊。
3. 编程,,关于大学计算机ACM程序设计大赛,有经验的人来一下
看完C程序设计只能做做简单的ACM水题。。对于ACM比赛中大多需要高级算法和数据结构的题目还是远远不够的。。你可以去各个OJ上面试着练习看看,比如PKU,ZJU,UVA等等.以下是PKU
OJ的网址:http://poj.org/
4. ACM:参加过ACM的大牛是不是练习时都要把每个算法敲几十几百次呢
ACM比赛可以带纸质资料,准备一份模板是很有必要的,所以算法模版很重要,记住模版一定要权威,不要网上杂七杂八的拿来当模版,一份好的模板一定会对你的编程习惯和算法实现打下良好的基础。但是,ACM比赛的等级越高,模版的作用就越小,毕竟比赛不是套模板。
没有人会把每个算法敲几百遍,大牛更加不会,敲十遍还记不住的话,一百遍也没用的,重要的是对算法本身的理解。如果你真正理解了算法但写不出来,那是你编程水平问题,这样应该多看看大牛的代码,多看看模板。
大牛不是算法模板敲的多,而是对算法理解的深刻并加上做的题目多,算法就像数学公式,你记住公式难道就能考高分了吗。重要的是运用啊,一个数学高手对于新学的公式他可以随时推导出来,因为对公式真正理解啊,推的多了自然记住了,不是吗。对于新手,先不要学算法,先去poj做水题,就是简单的题目没什么算法,水题不要做太多,100题就差不多了。接下来就该系统的学习一下算法了,《算法导论》和《算法艺术与信息学竞赛》是我觉得必看的两本书。另外,历届NOI国家队选手的论文也是很有价值的,也属于必看。接下来继续去poj做题,多思考,做不出来就网络,google,poj做题的人非常多。做题可以查漏补缺,之前没碰到过的 算法都可能在题目中体现,碰到没学过的算法就网络学习,然后选一个好的放到你的算法模板库,poj做题1000以上想不成大牛都难!
我只想说大牛基本上都是这么过来的,当然不排除个别天才,不过我没碰到过也没听过谁不做大量的题就能成为牛人的,毕竟天道酬勤。
5. 计算机系学生本科阶段是学算法搞acm比赛好还是进实验室做项目好
进实验室做项目,对本科毕业找工作会很有帮助。
搞acm比赛似乎只能有点小小的荣誉吧,不实在。
6. 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[i]+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)
7. 想学acm但是算法方面真的好差
我身边打acm的同学入门都是用楼上说的《算法竞赛入门经典》,不过楼主说的零基础,到底是怎么样的零基础?编程零基础的话就先学好编程语言(C,C++,Java之类,还有很多其他的编程语言),如果是算法零基础,看那本书入门也可以,或者可以自学一下数据结构和算法分析,毕竟很多大学都是在大二大三才开设数据结构还有算法分析的课,那时候再开始打ACM已经晚了,可以多上POJ刷题。这种东西没有15天30天速成的,我身边的很多acm的大牛,天天刷题,熬夜打比赛,都是在题海中熬过来的。
学习的事,急不得。
8. 为了提高算法为什么有些大牛说搞acm的性价比很低
个在役的弱渣ACMer,但还是忍不住出来说句话。
其实只是人和刀(工具)的问题,刀在你手上,你想做什么都可以,关键还是看人。项目开发厉害的ACMer也有很多,关键是你有没有兴趣、愿不愿意花时间。ACM和LS各位前辈(应该几乎都是前辈了吧)所说的项目开发并没有任何冲突,相反我觉得会有很大的帮助,就算扯开算法基础不说,ACMer(心不在acm上面的不算acmer)对代码的驾驭能力以及 学 习 能 力应该还是不错的,不然为何谷歌FB网络阿里网易每年给区域赛前排的神犇发offer?当然结果如何还是要看人。
至于性价比,我觉得没有任何一个方面是
9. ACM 算法超难题目
出题人的表达能力太差,题目叙述得很糟糕,最后两个例子也错了
比较好的叙述是,输入n,输出从0到32中取6项按字典序排序下的第n个组合(从第0个组合0,1,2,3,4,5开始计)
这种谈不上什么难题,只不过是入门级的问题
在给定前k项的(记第k项为m)情况下余下的项共有C(32-m,6-k)种情况,这里C(x,y)表示x取y的组合数,以此编程即可
给你一个例子
#include<stdio.h>
intbinom(intn,intm)
{
inti,c=1;
if(2*m>n)
n=n-m;
for(i=1;i<=m;i++)
c=c*(n+1-i)/i;
returnc;
}
intmain()
{
inti,n;
intA[6]={-1};
while(scanf("%d",&n)!=EOF)
{
n++;
if(n<=0||n>binom(33,6))
{
printf("Invalidinput ");
continue;
}
for(i=1;i<=5;i++)
{
for(A[i]=A[i-1]+1;;A[i]++)
{
intt=binom(32-A[i],6-i);
if(n>t)
n-=t;
else
break;
}
printf("%d,",A[i]);
}
printf("%d ",A[i-1]+n);
}
return0;
}
10. 【ACM算法】面对算法题,有思路,但是不会用代码写出来
只要你把查找、排序等等的自己用代码实现 基本就可以入门了 不会实现并不是说你不会写 而是你没写过或很少写 没有信心而已 说白了就是if for while 什么的 找本数据结构书 把那些东西尽可能用自己的代码实现 然后再和书上的比对 基本就可以了 思路都是灵感加勤劳的产物 希望对你有帮助哈!