篇一 :acm搜索算法dfs排列组合

排列与组合(非递归的DFS算法)

组合的生成与排列相似,组合中数字相同顺序不同的可以归纳为一个组合,可以按升序生成或降序生成,即后面搜索到的数要大于(或小于)前面的数,我在这里以升序为例。

#include <stdio.h>

void comb(int m,int n)

{

int t,k,i,a[20];

k=1;

t=0;

a[0]=0;

a[k]=0;

while(k>0){

a[k]++; //向下搜索

while((a[k]<=m)&&(a[k]<=a[k-1]))a[k]++; //判断当前结点是不是可行的,若不是则在容许范围内继续搜索

if(a[k]<=m){ //有没有超出范围

if(k==n) { //是不是目标解

for(i=1;i<=n;i++)

printf("%d",a[i]);

t++; //输出完毕回溯到上一层,继续搜索其他解

k--;

printf("\n");

}

else { //不是则进行下一层的搜索

k++;

a[k]=0;

}

}

else k--; //若当前状态找不到可行的解则回溯

}

printf("sum:%d",t);

}

int main()

{

int m,n;

scanf("%d%d",&m,&n);

comb(m,n);

return 0;

}

#include <iostream> //组合

using namespace std;

int n[1001], vtd[1001], digits, nums;

void dfs(int x, int crnt);

int main()

…… …… 余下全文

篇二 :搜索题目类型各题总结-acm

一个让人感觉很复杂的BFS(但是并不很复杂)

问题 D: BFS_连连看游戏

时间限制: 2 Sec 内存限制: 5 MB

提交: 12 解决: 3

[提交][状态][讨论版]

题目描述

大 家都玩过连连看吧!今天我们玩一个类似的游戏。在一个由10*10个小方格组成的矩形里有n(n<=10)对字符(它们是大写字符中的前n个)。矩 形里有些位置是可以从上面走过,有些则不能。能走过的位置用'.'标识,不能的用'#'标识。如果2个相同字符是连通的(从一个字符能走到另一个字符,注 意走的时候只能向上、下、左、右走。某个位置是有其他字符时,这个位置是不能走的),那么这对字符能够进行配对。如果将这对字符配对,这对字符将从这个矩 形里消除,也就是说这2个字符所在的位置对于其他字符而言变成能走动了。

现在的问题是:请你决定这些字符的配对顺序(只有能配对才能进行配对),使得n对字符最后都配对成功。

输入

先给出一个正整数t(t<=10),表示有t组测试数据。

每组测试数据有10行组成,每行有10个字符。这些字符只能是'.','#',或者是大写字符中的前n个。每组测试数据中不超过10对字符。

输出

如果能够使每组测试数据中的n对字符配对成功,输出配对的顺序。如果有多种配对成功的顺序,输出字典序最小的那组。

否则输出"My God!"。

样例输入

2

ABF.......

CE........

D.........

..........

..........

..........

..........

.........D

........EC

.......FBA

ABF.......

CE........

D.........

..........

…… …… 余下全文

篇三 :20xx-5-24:总结MatLab遗传算法与直接搜索工具箱(Gads)

20xx-5-24:总结MatLab遗传算法与直接搜索工具箱(Gads)by 王桂从

主要的函数:

函数ga(主函数)

格式:

X=ga (fitnessfun, nvars);

X=ga (fitnessfun, nvars,options);

[x, fval, reason]=ga(…);

[x, fval, reason,output]=ga(…);

[x, fval, reason, output, population]=ga(…);

[x, fval, reason ,output, population, scores]=ga(…);

其中:output是一个结构体,包含以下字段:

Randstate——遗传算法启动之前的rand的状态

Randnstate——遗传算法启动之前的randn的状态

Generations——计算的代数

Funccount——适应度函数的估算次数

Message——算法中止的原因,与输出变量reason相同。

Ga的主要算法过程:

(1)函数体:

Function [x,fval,exitflag,output,population,scores]=ga(Fun, genomeLength,options)

(2)输入参数:

Fun——适应度函数句柄

genomeLength——适应度函数的输入变量个数

options——遗传算法参数体,可以由gaoptimset函数进行设置。

(3)输出参数:

X——最优点

Fval——函数的最优值

Exitflag——算法终止的输出

Output——结构体

Population——算法终止时的种群

Scores——算法终止时的适应度值。

(4)算法的计算过程

逻辑流程

第一步:产生初始种群

第二步:计算适应度值

开始循环:

适应度比例

…… …… 余下全文

篇四 :ACM计算几何题目总结及分类

COJ http://acm.cug.edu.cn/oj/prepare.do?fun=viewProblem&pid=1024 http://acm.cug.edu.cn/oj/prepare.do?fun=viewProblem&pid=1035 http://acm.cug.edu.cn/oj/prepare.do?fun=viewProblem&pid=1038 http://acm.cug.edu.cn/oj/prepare.do?fun=viewProblem&pid=1172 http://acm.cug.edu.cn/oj/prepare.do?fun=viewProblem&pid=1249

FOJ

Hotter Colder

求线段的中位线,线段相交求交点,求凸多边形的面积,

无归之室

本题精度要求非常高,用三角函数的话,很容易就wa..

Reflections

求一条射线遇到圆后的反射光,

即圆和直线求交点,求点关于交点法线的对称点。

Pipe http://acm.fzu.edu.cn/problem.php?pid=1088

求一条光线从管道口进入,最远能达到多远。

判断线段左右位置关系,求线段相交交点。

A Pilot in Danger!

判断点在区域内

Area in Triangle

在三角形内的气球膨胀,求膨胀后的面积。

分情况推公式

Triangle

在给定的n( 1<=n<=50000)个点中,取3个点组成三角形,求面积最大。

显然这3个点在凸包上,点集凸包化+凸包上的点k^2(原来要k^3的,利用某些性质剪枝,降到k^2).

Area

Pick定理

Center of Gravity

已知半径,角度的扇形,求其重心到圆心的距离。

…… …… 余下全文

篇五 :ACM简单总结

ACM(活动流程:初赛—培训—决赛—培训)

下面将从三个方面来对这个活动于开始至今作一个简单总结:

宣传方面:

成绩:宣传的力度主要放在初赛。我们采用的方式有:传单,横幅,海报,Q群,咨询点,传单扫楼等。所达到的效果是:170多人报名初赛,130多人参加初赛的比赛。同时,有校报的工作人员进行采访和拍照。

不足:宣传因为大赛名字的更改,造成了一定宣传资源的浪费。由于时间急,宣传方面没能很好地发挥它的一个效果作用。带有滞后性。

比赛方面:

成绩:从初赛大众化,到决赛选拔的目标来看,我们达到了。

经过初赛,选出了51人进行决赛。在决赛举行之前。通过提供学习平台,讲座的形式来给选手培训。接着,又从决赛中选出了19人进行省赛前的培训(比原计划多出4人)。

不足:比赛方面的应急方案准备不足。主要表现在比赛现场。无论是开始或者在过程中,都出现了一点非计划内的情况发生。虽然都现场解决了,但是这种现象的出现,反映了策划时的漏洞。(具体事件如:对选手题目的测试。)

工作方面:

在紧要的时期,宣传部和秘书处给予了莫大的帮助!

成绩:把“锻炼大一干事、完成老师要求、活动顺利进行”三个点统一起来,在实际的操作中趋于平衡。

不足:

交流:交流上有明显的不足。主要表现在部长和常委之间的沟通。部长没有及时把情况向有关常委汇报。还表现在活动后期和所负责的老师之间的交流不够。

执行:人手的不足。主要表现在初赛现场。当时还到一些班级里征了几个同学。工作有滞后现象。

培养干事:时间的紧迫,没有让所有参与此活动的工作干事得到更好的活动流程的学习。

总的来说,我们完成了任务,但不足的地方也随之涌现。简单地说说经验:办一个活动立足于学院的形象和为同学服务的态度的点(之前也有这样的认识,但是很少在执行中强调),在工作人员中建立属于工作人员的目的和目标。这样,我们搞活动才有动力,有创新。

…… …… 余下全文

篇六 :武大ACM集训总结

武大ACM集训总结

有人说:“勇敢地踏出第一步就是成功的开始!”7月16号是我们来武汉大学ACM集训基地的第一天,第二天上午8点半,我们在江队长的带领下参加武大ACM集训,由于我本人对ACM比较生疏,之前也没有怎样接触过ACM,所以这应该说是我迈向ACM的第一步。

17号中午12:30~17:30是我们来到ACM集训基地的第一场比赛,该基地的队长曹伟同学将本次比赛的网址通过“武汉ACM”QQ群通知了参赛的同学,第一次登入队长发给我们的比赛网址时,我又惊又喜,起码到现在,我这个毛小子总可以体验一下正规的ACM比赛,感受一下比赛的难度。可是,因为缺少上机的实践训练,别人上机都做了近一个多小时的题,而我们还在忙着注册用户,于是,我们便请江队长帮忙,可他没说几句就忙自己的了,我又请教了其他的学长,等到我们进入题目界面时,比赛都过了一半。初一看题,他个神啦,纯英文版的,于是我慢慢静下心来,环顾了一下其他队的成员们,整个集训基地只听到急促的敲击键盘的声音,突然间,我感到很不自在,心里异常慌乱,一个题目看了一个多小时仍不明白其中的意思。渐渐地,五个小时过去了......

题目看了好几个,几乎动不了手,代码也没写多少。比赛结束后,听到有人说做出了3、4个题,我心里好不是滋味,感到压力很大,那一该,我深刻地意识到自己与他们相差好远,好远......

通过近一个月的集训,我渐渐克服了因长时间看电脑而引起的头痛头昏,注意力难以集中的症状。同时,这次集训也让我认识到了武大的学生在学计算机技术时,起点都是一样的,只是他们比我们更加勤学好问,学习的目标性更强,况且他们的接受能力也比较强,所以就产生了现在的差距。

在武大集训,给我最直接的感受就是单调,从第一天开始就单调,早上7点左右起床,我们一边吃早餐一边往ACM集训基地赶,那里有即将步入武大的5名高中毕业生,他们很早就接触了ACM,并且有一定的实战经验,他们可能就是武大未来参加ACM竞赛的精英。我们去那里,都干自己的事情,根本没有老师会提醒我们干些什么或不该干些什么。于是从第一天开始,我就安排好了自己的集训计划,首先,我在杭电ACM网站上找些简单题目练练, 毕竟自己刚出来乍道,况且我们平时一直忙于理论课程的学习与考试;其次,我要开始看数据结构,了解一些主流算法,比如DP,贪心算法等,到后来,练习的题目多了,反而觉得自己学数据结构非常有必要,因为很多题目很明显要用到数据结构方面的知识,所以我便利用晚上的时间来学习数据结构,还好自己把书带过来了。

…… …… 余下全文

篇七 :Mastercam加工方法总结

Mastercam加工方法总结Mastercam加工方法总结类型表面加工方法加工特点注意事项2D加工平面面铣可以选择一个或多个封闭区域进行加工单向铣削有利于提高加工质量,双向铣削有利于提高工作效率挖槽可以对某个封闭区域进行平面加工设置好合理的切削深度轮廓外形铣削加工可以进行内、外轮廓的加工1、加工内、外轮廓时要将串连方向和补偿方向结合起来考虑

2、加工内轮廓时要设置进/退刀向量

3、加工内、外轮廓要用控制器补偿沟槽

挖槽可以对个封闭区域进行挖槽加工并允许挖槽区域存在岛屿1、使用岛屿深度挖槽时,要打开岛屿上方的预留量,这样岛屿上方铣削整个区域,岛屿下方则可以绕开岛屿。

2、加工内、外轮廓时要将串连方向和补偿方向结合起来考虑。

3、要设置进/退刀向量孔钻孔可以利用循环指令进行孔的加工根据孔的深度与钻头直径选择合理的钻削方式圆孔全圆铣削对圆孔进行铣削加工需要选择螺旋进刀的方式进行铣削刻字挖槽可以刻阳文和阴文注意选择合适的字体外形铣削加工沿字体轮廓线的加工注意选择合适的字体3D加工平面等高(粗)+挖槽(精)对选定范围进行平面加工如果余量较小,可不必有进行粗加工挖槽(粗)+挖槽(精)对选定范围进行平面加工如果余量较小,可不必有进行粗加工平缓曲面等高/挖槽(粗)+浅平面加工平缓曲面1、可以选定角度范围进行加工

2、如果余量较小,可不必有进行粗加工等高/挖槽(粗)+环绕等距

加工平缓曲面对选定范围进行曲面加工陡曲面等高线加工加工陡曲面利用Z方向的间距对加工精度进行控制陡斜面加工加工陡曲面利用角度范围对加工区域进行控制球面等高/挖槽(粗)+放射线加工凹、凸球面合理设置角度增量扫描面(2.5D)平行铣削加工加工路径相互平行1、平行铣削选择切削路径允许连续下刀的提刀

2、允许沿面下降(-Z)和沿面上升(+Z)

3、对平面和陡曲面达不到要求流线面平行铣削(粗)+曲面流线沿曲面进行参数线加工1、平行铣削长箭头表示切削方向,短箭头表示步进方向

…… …… 余下全文

篇八 :20xxacm暑假集训总结_史傲凯

20xx 神奇的暑假

------20xx.8.30

(一) 八月之初

集训已经过去近20天,感觉进步了很多,虽然还有很多高级的玩意还不会,但总算已经入门了;基地是个好地方,身在基地时,状态和效率都是赞到极点的; 记得第一场集训赛,仅做了三道水题,另外两道中等难度,将近有一半的人数AC了,自己却没有跟上。也难怪,因为自从专题讲座结束了以后一直忙于期末考试,long long没有刷题了。之后几场名词也一直徘徊中下,直到第七场,不小心状态超神,单场名次拿到了第八。随即第八场组队赛,鉴于队友们努力和完美配合,体验了拿一血和顶榜的感觉,并且单场名词达到第三,可谓是一时的小辉煌。

遗憾的是短暂的灵光一现并没有大局遗失,rating名次最高也只是顶到30+ ;而且在紧接的Training#9中出现重大失误,事情源于一道简单题,由于没有考虑到精度误差一直WA;在几乎全部集训队员都AC的情况下,心情自然大受影响,以至于幼稚地把剩余时间都压在了上面,结果直到比赛终了都没能解决问题,至此把前两天积累的一点优势消散殆尽。这里不得不提一位和我在同题出现问题的同学,不同的是他在身下的时间中调转了方向,尽力解决了两道中等难度题,名次也自然不低,虽没有好的开场但却努力拿到了一个不错的结束,这一点深深地值得我学习。

再者值得写的就是关于解题的,同在一个训练场上,向对手学习是很重要的。每天的比赛结束回去的复习也特别重要,主要有进阶和回顾两种。进阶,就是对于自己在比赛时没有解决但有一定人数解决的问题,这些题是一些绝棒的资源,跨度不大,此及时解决必将极快提升自己;回顾,是指对于自己已经解决的,如有感觉方法不优,此时看一些优秀代码有点石成金之效。还有一件比较重要的事情就是适当建立一些经典算法的题解记录,对于新手来说关键时候帮助极大,毕竟刚学到一些算法理解不深刻时,再拍时有个参考极快的。

队长关心的一段来了,为了查阅方便这里队友介绍独成一段。第一场组队赛我的两个队友是 周洋和张宇鸿,赛前我看了CDOJ上rating榜,我们分别是39、40和41,可谓都不出众。可就是这么的组队创就了我们三个的最辉煌战绩,单场比赛挺近前三。由此我觉得不一定抱大腿就好,合适的队友才是中重要的。而且我觉得三人水平相当时,相互交流时更容易被对方理解,有助于队友间更默契配合。最重要的是善于倾听同时又不乏与思考,这点周洋和宇鸿做的都很好,且周洋谈话更易于交流,这是好队友必备素质,至于水平那是另一方面的事了;张宇鸿和我第二次组队的韩世欣,有些共同点,两个人拍码,敲键盘的速度是足够快。其次两个人都喜欢思维调度较大,一直可能没不能及时将完整信息传递给队友,太急了反而浪费时间。至于另一队友 高晨,是和周洋一个类型的,有一定的实力积累,还能与队友愉快交流,不过没有周洋主动热情。

…… …… 余下全文