当前位置:首页 » 操作系统 » 算法大牛左

算法大牛左

发布时间: 2023-07-14 14:41:53

❶ ACM:参加过ACM的大牛是不是练习时都要把每个算法敲几十几百次呢

ACM比赛可以带纸质资料,准备一份模板是很有必要的,所以算法模版很重要,记住模版一定要权威,不要网上杂七杂八的拿来当模版,一份好的模板一定会对你的编程习惯和算法实现打下良好的基础。但是,ACM比赛的等级越高,模版的作用就越小,毕竟比赛不是套模板。

没有人会把每个算法敲几百遍,大牛更加不会,敲十遍还记不住的话,一百遍也没用的,重要的是对算法本身的理解。如果你真正理解了算法但写不出来,那是你编程水平问题,这样应该多看看大牛的代码,多看看模板。
大牛不是算法模板敲的多,而是对算法理解的深刻并加上做的题目多,算法就像数学公式,你记住公式难道就能考高分了吗。重要的是运用啊,一个数学高手对于新学的公式他可以随时推导出来,因为对公式真正理解啊,推的多了自然记住了,不是吗。对于新手,先不要学算法,先去poj做水题,就是简单的题目没什么算法,水题不要做太多,100题就差不多了。接下来就该系统的学习一下算法了,《算法导论》和《算法艺术与信息学竞赛》是我觉得必看的两本书。另外,历届NOI国家队选手的论文也是很有价值的,也属于必看。接下来继续去poj做题,多思考,做不出来就网络,google,poj做题的人非常多。做题可以查漏补缺,之前没碰到过的 算法都可能在题目中体现,碰到没学过的算法就网络学习,然后选一个好的放到你的算法模板库,poj做题1000以上想不成大牛都难!

我只想说大牛基本上都是这么过来的,当然不排除个别天才,不过我没碰到过也没听过谁不做大量的题就能成为牛人的,毕竟天道酬勤。

❷ 为了提高算法为什么有些大牛说搞acm的性价比很低

我想说下我的了解。


算法书有很多可以参考:

  1. ConcreteMathematics --- A Foundation For Computer Science
    Ronald L. Graham , Donald E. Knuth , Oren Patashnik

  2. Introctionto Algorithms
    Thomas H. Cormen ,CharlesE. Leiserson ,Ronald L. Rivest ,CliffordStein

  3. (强烈推荐)实用算法的分析和程序设计-吴文虎王建德

    (大名鼎鼎的“黑书”。内容包括了竞赛需要的各种算法,各种层次的读者都适合。)

  4. 网络算法与复杂性理论 -谢政李建平

  5. (强烈推荐)算法+数据结构=程序-N.Wirth

    (Pascal语言的发明人Wirth教授的名着,深入阐述了算法与数据结构的关系,对每个算法都提供详细的Pascal源程序,适合各种水平的读者。)

❸ 左程云国内什么水平

顶级。左程云国内顶级算法大牛被人们称为左神。左程云,本科就读于华中科技大学、硕士毕业于芝加哥大学。先后在IBM、网络、GrowingIO和亚马逊工作,是一个刷题7年的算法爱好者,也是马士兵教育的算法授课老师。

❹ 麻烦问下各路大牛 怎么求无向图中的最小环长度 万分感谢

我用的是Dijsktra算法进行的计算。假设一个环中有两个顶点A,B,那么走完这个环的最小路程是从A到B的最短路+去掉A到B的最短路上的所有路径后的A到B(B到A)的最短路(就相当于是从A走到B再走到A的最短路)

因此,在外层枚举A,算出A到各个点的最短路,同时记下路径。然后枚举每一个B,删掉A到B上最短路径所经过的边,再算一次A到B的最短路径,然后两者相加,求得一个环的最短路。最后找一个最小的环的长度,输出即可。时间复杂度到了O(n^4),所以我有一组花了0.9s.

但是这道题的难点在于那个BT的INPUT-------从来都没有见过的图的输入方式:告诉的是边与边的关系。

我是这样解决的:找出所有的边的两个端点(不管是否重复),并把这些端点连了哪些边记录下来。然后去掉重复的顶点,剩下的就是图的顶点。接着通过枚举寻找任意两个顶点是否都连了相同的边,如果连了,说明这两个顶点就是被这条边所连,因此就可以在邻接矩阵中记录下来。时间复杂度O(n^3)

这一题是我一次AC的。。。难得在USACO Cheapter4 里面一次AC哈。。

Cherry还有更好的O(n^3)的算法,我也不知道怎么做的。感兴趣的去看一下子。

❺ 请问算法大牛,这个运行次数怎么出现的,i*(i+1)/2 是什么意思,后面的多项式又是怎么产生的

数学公式:(1+2+...+n) = n*(n+1)/2
可以理解:for(i=1;i<=n;i++) for(j=1;j<=i;j++)循环次数就是(1+2+...+n), 因为i = 1是j循环1次,
i = n是j循环n次,依次递推就可以了。

❻ 在计算化学算法设计上国内外各有哪些大牛

楼主提出的问题很模糊,标题指向“算法设计”,正文却给出了“改进半经验”为例子。“半经验”是一种理论模型,而算法是针对某个理论模型的数值实现,正如陈浩源答案在第二段给出的一些加速算法。假如标题是无心之失,而正文是对自己问题的具体阐述,那么你的问题应该是,“国外开发计算化学理论模型的有哪些大牛”。鉴于你特意指出“改进半经验”,也许你想了解的就是半经验类型的理论模型有哪些课题组。实际问的也就是PM6, AM1, 以及SCC-DFTB这些半经验方法是谁在开发。这个简单,只要知道了有哪些半经验方法,照着文献搜就行了。陈浩源的回答在第一段给出了若干开发SCC-DFTB模型的一些课题组。

❼ 怎样求大组合数(取模)(ACM算法)

这种题目然做过的,
意思比较简单,就由 m 个共 0 和 n 个 1 组成一个串,但从左到右要1出现的次数不少于0出现的次数。
由大牛的算法: 结果就是 C(m+n, n) - C(m+n, m-1) 再取模,我们可以对式子化简一下就是:
(n+m)!*
(n-m+1) / ((m)!* (n+1)!)
再取模,但由于组合数很大,直接用大数乘除就会超时了,看了别人的报告才知道原来可以用素数化简快速求模的, n! = 2^p[i] *
3^p[i] * 5^p[i]*...... 再求模就可以很快了~(^ = ^)~。。。

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define M 2000005
#define mm 20100501
bool sig[M];
int prime[150000], p[150000], len; // prime 记录素数, p 记录素数的幂 len 记录长度
void getprime() // 筛法找素数
{
int i,j,k=0;
prime[k++] = 2;
for(i=3; i<=M; i+=2)
{
if( !sig[i] )
{
prime[k++] = i;
for(j=i; j<=M; j+=i)
sig[j] = 1;
}
}
}
void get(int k, int s) // K! 的素数分解, S为指数的加减(分母,分子)
{
int i, mid;
for(i=0; prime[i]<=k && prime[i]; i++)
{
mid = k;
while(mid)
{
if(s)
p[i] += mid/prime[i];
else
p[i] -= mid/prime[i];
mid /= prime[i];
}
}
if(len < i)
len = i;
}
__int64 cal() // 计算结果 (prime[i...]^p[i...]) % mm
{
__int64 i,ans = 1;
for(i=0; i<=len; i++)
{
if( p[i] )
{
__int64 t = prime[i], b = p[i], ret = 1;
while(b) //计算 (t^b) % mm
{
if(b%2) ret *= t %mm;
t = t*t%mm;
b /= 2;
}
ans = ( ans*ret ) % mm;
}
}
return ans;
}
int main()
{
int t,m,n,i,mid;
__int64 ans;
getprime();
cin>>t;
while(t--)
{
cin>>n>>m;
len = 0;
memset(p, 0, sizeof(p));
mid = n-m+1; //先前要把 n-m+1 的因子加进 P 中去才能使 (m+n)! / ((m)!*(n+1)!) 整除
for(i=0; mid>1; i++)
{
if( mid%prime[i] == 0)
{
while(mid%prime[i]==0)
{
p[i] += 1;
mid /= prime[i];
}
}
}
get(m+n, 1);
get(m, 0);
get(n+1, 0);
ans = cal();
printf("%I64d\n", ans);
}
return 0;
}

可以用素数分解法,
先求出上面和下面的素数表示,然后约分后,再用求幂公式

热点内容
编程器资源 发布:2025-03-16 17:59:48 浏览:903
加密软件厂商 发布:2025-03-16 17:59:44 浏览:680
鱼钩怎么样配置 发布:2025-03-16 17:59:04 浏览:157
安卓手机怎么设置快点 发布:2025-03-16 17:45:35 浏览:331
c语言字符串右对齐 发布:2025-03-16 17:42:35 浏览:131
充值钓鱼源码 发布:2025-03-16 17:28:16 浏览:470
密码锁锁住了怎么办 发布:2025-03-16 17:25:51 浏览:297
中国移动数据库 发布:2025-03-16 17:18:14 浏览:605
php二维数组函数 发布:2025-03-16 17:16:11 浏览:376
安卓系统在哪里换鸿蒙界面 发布:2025-03-16 17:15:38 浏览:866