杭电acm自己总结

合集下载

acm实践报告

acm实践报告

acm实践报告一、引言ACM(Association for Computing Machinery)是国际计算机科学领域最具影响力的学术组织之一,旨在促进计算机科学的发展和交流。

本报告旨在总结我参加ACM实践活动的经历和所获得的收获。

二、活动背景ACM实践活动是一项针对计算机科学专业学生的实践性培训活动,通过解决实际问题和参与团队竞赛,提升学生的编程能力和团队合作精神。

我所参与的ACM实践活动是一项与算法设计和编程相关的挑战赛。

三、挑战赛内容挑战赛主要涉及以解决一系列算法问题为目标的编程竞赛。

每个参赛队伍由三名队员组成,团队成员之间需要密切合作,共同克服问题,并在规定时间内提交解决方案。

挑战赛的题目不仅考察算法设计与分析能力,还对程序的时间和空间复杂度有一定的要求。

四、挑战过程在挑战过程中,我组与其他参赛队伍共同面对了许多复杂的问题。

我们首先通过研究每个问题的要求和限制条件,进行算法选择和设计。

随后,我们进行了深入的讨论和头脑风暴,共同找到解决方案。

在编码阶段,我们合理分工,互相协作,并且进行了严格的代码审查,以确保程序的正确性和效率。

最后,我们不断进行测试,修正程序中的错误,并提交我们的最终解决方案。

五、收获与成果参加ACM实践活动,我个人获得了许多宝贵的经验和技能。

首先,我加深了对算法的理解与应用能力,学习到了许多常用的算法和数据结构。

其次,我提高了编程的能力,锻炼了程序的调试和优化技巧。

此外,通过团队的合作与协作,我学会了有效沟通和项目管理的重要性。

最重要的是,这次实践活动培养了我面对挑战时的坚持和解决问题的毅力。

六、总结与展望通过参加ACM实践活动,我深刻体会到了理论与实践相结合的重要性。

实践活动不仅是对所学知识的应用,更是培养学生创新思维和解决实际问题能力的有效途径。

希望今后能继续积极参与ACM实践活动,不断提升自己的技能和能力。

七、致谢在此,我要向组织者和指导老师表达最诚挚的感谢。

ACM学习心得

ACM学习心得

这个非原创、、、、、但是,为了让更多人看到,无奈的原创一下、、、写的很好,虽然真正学习算法(说的好听是学算法,不好听就是A题)近一年了,但是,学习的效率非常低,最近才稍稍掌握点技巧。

这篇文章不知道是哪位大牛写的,在朋友的博客中看到了,觉得很有借鉴作用,就粘了过来,共勉。

加油!!!吖飒~~~~刻苦的训练我打算最后稍微提一下。

主要说后者:什么是有效地训练?我想说下我的理解。

很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。

其实,这既不是充分条件、也不会是必要条件。

我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。

其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,我们训练的目的是什么?我觉得有四点1、提高编程能力2、学习算法,(读书,读论文,包括做一些题目验证)3、准备好面临将到来的挑战(熟悉题型,调整心态)4、启发思维。

这里四个目的,从训练的角度上,重要性逐次递减;为什么呢?因为前面的因素是后面的基础。

而是后面的目的,想达成越为不易。

我觉得前3者能保证你ac掉你能做的题,即使难题始终不会做,也可以ac掉中等偏难的题目。

而需要一定思维难度的题,要以前三者为基础而且属于训练的后期,中期只能作为偶尔调节。

当然,我思维也烂得要死,对这点没什么发言权,大家可以鄙视我。

我这里想主要说下第2点。

对于算法,我发现,很多我们这样的弱校ACMer选手没有侧重好算法的学习。

下面要讲的几点,可能都很老套,但我想以035对比我自己的例子给大家做说明。

<1>算法学习是ACM比赛所要推广或者要提倡的一个方面记得曾经路过某人的blog,上面说他作比赛的时候遇到了一个dijkstra,他没做出来,然后评论到(大意):我才不会花时间去搞明白“这种”算法。

“这种”也许有可能是指:没什么实用性,对吧,这样我就不想评论了(又是有关科学和工程的讨论)。

【转】ACMICPC生涯总结暨退役宣言—alpc55

【转】ACMICPC生涯总结暨退役宣言—alpc55

【转】ACMICPC⽣涯总结暨退役宣⾔—alpc55转⾃:/accplaystation/item/ca4c2ec565fa0b7fced4f811ACM/ICPC⽣涯总结暨退役宣⾔—alpc55前⾔早就该写这篇⽂章了,但是也很不想去写。

毕竟是为之奋⽃了两年的⽬标,不是说舍得就舍得的。

然⽽,⾃⼰毕竟是到了该退的时候了,与其扭扭捏捏,不如挥⼀挥⾐袖,尚落得⼀份潇洒。

回⾸这两年来,有很多是需要总结的。

在这⾥不分巨细的记录下来,或许有点像流⽔账,但是更多的,是⼀份对过去的难忘。

童年我的ACM/ICPC的⽣涯可以追溯到⾃⼰⾼中搞竞赛的时候,那时的⾃⼰选择了OI,完全是出于好玩,也不努⼒学点什么,只满⾜于能把最基本的题⽬做出来就好,所以在⾼中的校集训队⾥也就混了个中不溜。

印象最深的是有⼀次⾼中教练组织我们搞了⼀场ACM/ICPC的模拟赛,那时也不懂啥是ACM/ICPC,判题和计时都是在⿊板上⼿动操作的。

当时我们倒数前三的分到⼀起,也不懂怎么配合,就是埋头苦做,结果却拿了个第⼀,原因是其他队伍要么因为思路分歧吵架去了,要么是光顾着钻难题去了。

当时权当作是玩了,也没啥想法。

后来考NOIP的⼀等奖⽼末的⾝份报送进了⼤学,由于信息流通不通畅,⼤⼀⼀年也没有ACM/ICPC的消息。

仔细算来,我接触ACM/ICPC 还是要晚于数模的。

⼀直到⼤⼆年终zzn他们第⼀次拿到出线权,学校才有了宣传,那时⾃⼰才晓得原来所在的⼤学也是可以搞ACM/ICPC 的。

当时是alpc10主持宣传的,第⼀次让我接触到了诸如pc^2,poj等字眼。

于是那个寒假,我就操起刚学会的C++,为来年的校赛做准备。

当然那个寒假其实也没⼲啥事,原因是⾃以为poj是按难度排列题⽬的,然后就卡死在1009上了……后来去闯USACO,更是⼀头⾎包啊……放假回来,做学校内部的oj,第⼀次见识到了alpc12和alpc62的强⼤。

后来的校赛预选赛更是12独领风骚。

ACM 学习心得

ACM 学习心得

学习ACM后的总结和下学期的计划大二上半学期,由于报了大学生电子商务竞赛而进入实验室。

在大一时,比较迷茫,不知道自己的专业什么内容重要,什么内容不重要。

所以在大一下半学期学习C语言这门最基础的程序设计课的时候,老师上课在讲自己也不认真听讲。

觉得只要考试能过就行了。

结果考试是过了,但对于C语言还是一窍不通。

在大二下班学期,由于选了面向对象程序设计和数据结构,老师的内容不怎么听的懂。

开始认识到C语言的重要性,自己从头开始自学,把非计算机专业的C语言借来看,慢慢的赶上去,不懂的就问问同学。

把书认真的看了两遍后,再接触接触计量OJ上的题目提高一下自己。

就这样我开始接触了ACM。

ACM=算法+数据结构。

第一次接触ACM,刚开始做简单题的时候我也感觉并不容易,比如有些英文题目看起来比较费劲,要看很久才能搞清楚题目意思,有时候简单题目交上去不正确,题目有很多trick,有时候代码看多了,人就会觉得很厌倦和郁闷,但是不要灰心,我觉得做什么事贵在坚持,只要坚持下来,就会越来越体会到ACM 的无穷乐趣了。

后来自己独立思考,把一些没有算法的题目基本上都提交成功了。

也觉得有一些成就感,从一点都不会到现在能把一些简单的题目解决。

有算法的题目,就自己百度或查一些资料,由于没有老师的指导,有些算法还是模棱两可。

在数据结构的课上,老师也给我们介绍了一些算法。

下面是我自己总结的算法:一.基本算法:(1)枚举.(2)贪心(3)递归和分治法(4)递推(5)构造法(6)模拟法二.图算法(1)图的深度优先遍历和广度优先遍历.(2)最短路径算法(3)最小生成树算法(4)拓扑排序(5)二分图的最大匹配(6)最大流的增广路算法(KM算法)三.数据结构(1)串(2)排序(快排、归并排(与逆序数有关)、堆排)(3)简单并查集的应用.(4)哈希表和二分查找等高效查找法(5)哈夫曼树(6)堆(7)trie树(静态建树、动态建树)四.简单搜索(1)深度优先搜索(2)广度优先搜索(3)简单搜索技巧和剪枝五.动态规划(1)背包问题.(2)型如下表的简单DP1.E[j]=opt{D+w(i,j)}2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)六.数学(1)组合数学:1.加法原理和乘法原理.2.排列组合.3.递推关系.(2)数论.1.素数与整除问题2.进制位.3.同余模运算.(3)计算方法.1.二分法求解单调函数相关知识七.计算几何学.(1)几何公式.(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等).(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)(4)凸包.对上述一些排序算法能熟练的掌握。

ACM期末总结

ACM期末总结

ACM期末总结在这个学期,我选了ACM这门选修课,感觉受益良多,老师在课堂的讲解让我全新体会到了ACM程序设计这门课。

ACM(Association for Computing Machinery )中文:美国计算机协会是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会。

ACM每年都出版大量计算机科学的专门期刊,并就每项专业设有兴趣小组。

美国计算机协会(Association for Computing Machinery , 简称ACM)它是一个世界性的计算机从业员专业组织,兴趣小组每年亦会在全世界(但主要在美国)举办世界性讲座及会谈,以供各会员分享他们的研究成果。

近年ACM 积极开拓网上学习的渠道,以供会员在空余或家中提升自己的专业技能。

1947年,即世界第一台电子数字计算机(ENIAC)问世的第二年,ACM即成为第一个,也一直是世界上最大的科学教育计算机组织。

它的创立者和成员都是数学家和电子工程师,其中之一是约翰.迈克利(John.Mauchly),他是ENIAC的发明家之一。

他们成立这个组织的初衷是为了计算机领域和新兴工业的科学家和技术人员能有一个共同交换信息、经验知识和创新思想的场合。

几十年的发展,ACM 的成员们为今天我们所称之为“信息时代”作出了贡献。

他们所取得的成就大部分出版在ACM印刷刊物上并获得了ACM颁发的在各种领域中的杰出贡献奖。

在我对ACM的认识里,我觉得ACM程序设计是一个对我们大学生来说一个既具有挑战的课程。

学习他让我对于程序设计有了新的理解,不再局限于大一时候上的C语言课中学到的简单程序编辑。

ACM它更难,在学习它的过程中,使我非常的困难。

也许我学得还是不够深度,但是,我不会放弃这门学问,因为我所学的专业和它息息相关。

所以,学习ACM程序设计是我人生中必备的。

然而我在一学期的学习后,我还学到了一个全新的学习程序设计的方法。

ACM 总结

ACM 总结

ACM培训总结在培训之前,我也一直在搞ACM 这个东西,但是从来没有能系统的搞一下,虽然之前在杭电上也做了一百来道题,但是都是挑的中文题还有简单的英文题来做的,也就是可以做一些简单的字符串处理,简单的排序,最多的是能搞定一两题贪心算法!对算法还没什么概念,就是拿到一个题目就按照自己乱七八糟的思路去做!培训开始的时第一天,讲的是枚举,好多题目都是一些以前或者小时候看过的智力题,当时当然就是猜答案了,而现在用计算机编程来实现,甚至是实现在不同情况下的实现方法,第一次觉得ACM是一个这么有趣的东西!之后的训练让我觉得ACM并不是有趣就可以形容的,有趣,有难度,做这个东西大概是需要一点天赋的,开始的培训没有涉及到什么具体的思想,题目做起来还是比较顺利,可能是因为符合我以前的风格吧,但是后来发现,ACM 真不是好惹的,有算法,有思路,但是你就是无法快速的用算法语言表达出来,有时候憋了一个多小时完成了代码,但是结果总是不符合要求,或者符合了自己的要求但是到OJ 上就是通过不了,顿时觉得ACM注定是一条艰辛的路。

再后来就是接触到一些真正的算法了,这些算法说实话基本上以前都多多少少接触过,在以前觉得是很难(现在还是不简单),没信心去搞明白,于是每次做题一遇到搜索之类比较抽象的一类算法的时候都是看一下题目就放弃了,但是现在培训,专门就来针对这些问题来训练,也就是说不管多难也都要懂,每天上午老师讲算法思想,分析代码,下午自行做相关方面的训练,一天基本上除了睡觉就是培训做题(其实感觉也挺爽的),每天差不多能做出五道题目左右,当然不是完全自己写出来的,也有好多是参考网上大牛的思想才写出来的,就是每天这样搞,对于我来说效果还不错,就这样每天的训练可以在最大程度上客服我的惰性,因为大家都在做题如果自己不做那么就会有一种落后的感觉(虽然我现在的水平还是相对较差,但是我从来都不习惯落后),还有就是在做题的时候偶尔也会和大家一起交流,认识了一些其他班的ACM相对比较牛的人,我觉得他们都挺厉害的,有时候他们的思想说出来却什是我想不到的,现在大概明白为什么ACM要三人组队了,人多了比较混乱,人少了缺少思想碰撞。

学习acm心得体会

学习acm心得体会

学习ACM的心得体会作为学计算机专业的学生,我想说我们要学的课程还真不不少,我也确实希望自己能多学一点东西,多懂一点知识。

对于acm,这种本来就隶属于计算机学科的知识或者说是学计算机专业学生的使命,我想它值得我花点时间去关注。

其实学院本来就有acm 这件事,有这个实验班存在,知识大一的时候我并没有选择去参加,因为那个时候我对软件实验班更感兴趣点。

不过后来,在大二这学期开始,选选修课的时候,我看到了有这个课程存在,所以我决定不要错过这次机会,至少我应该去认识一下。

也就是这样我进了老师的这个班级,在老师的带领下了解acm。

acm是一个学科?acm是干嘛的呢?acm学了后是不是更好找工作了?反正我有好多的疑问,大概想了一下acm应该和编计算机程序有关。

在老师的第一堂课中,我明白了一点,那就是想学acm,你就得能坚持住,一两轮培训下来如果你还在,这并不能说明什么,但风风雨雨中过后你还能坚持,说明你已经算走上正轨呢。

老师的课讲得很好,对acm习题的讲解,以及分析,不说我完全明白,但至少我每次都能听得懂,而且开始对acm有想法了。

其实我觉得学acm挺难得,不管是你要学还是想要学好。

刚开始接触他的时候还是有吃不消,觉得蛮难的,虽然我有c++的底子,但是acm对逻辑思维能力要求真的好强的。

尤其是听到老师说“有些大神做题目,有时两三天都是坐在电脑前围着一个题目,不做出不肯罢休”,我在想我能做到吗?真的我对自己还是没有放弃,即使是自己写不出代码,我还是去尝试。

我觉得做ACM,最重要的自己是对算法的理解和掌握,要多看一些这方面的书籍,最好的就是去图书馆找这些书先看先学。

然后上网找题目做。

比如老师经常提到的poj。

我打开北大acm试题的网站,开始感觉到的最大压力不是试题,因为我连题目都难看懂,这种英文题目太让我头疼了。

我下载金山词霸,试着努力先看懂题目,然后发现还是做不了。

我又回过头来做老师上课课件里讲的题目,因为我听了一遍,至少还有点印象。

ACM学习总结

ACM学习总结
注:还有好多很杂的问题难以归类。比如数学上的各种公式,它们思想的由来都值得研究。
2、编程水平的提升:
感觉根据算法直接写代码的能力强了很多,对稍微复杂问题的分析能力,解决问题能力得到了全面的提升。还有就是编程中出现的BUG越来越少了。熟悉很多有用的函数,对字符串的处理能力,简化代码的能力,调试代码的能力都提升了一个档次。
1、学到的算法小结:
掌握的非常熟悉的算法:
简单的动态规划:包括思考问题的方式和角度,能从简单的问题中提取出动态规划的状态转移方程,关于矩阵内部运算的DP问题比较熟悉,对常见的动态规划问题和经典问题也有一定的了解。
比较简单的贪心:贪心与其说是一种算法,更是一种思想。在构造最优解的每一步过程中,都在构造局部最优解,解这类问题关键是找到最优策略,并分析最优子结构能否构造全局最优解。
生成函数问题:稍微想几秒钟能马上把模板给写出来。
大数高精度问题,没什么技术含量,主要是细心,耐心。主要是在具体问题中要区分出哪些问题是大数问题。还有就是代码的简化。
PRIME算法求最小生成树,闭着眼睛可以写出来,其实也是贪心思想的应用吧。
求素数时用的筛法,能简化代码,并熟练运用。
二叉树的应用:判定树。
对数log的思想解决数论中的一些问题。
一些排序算法。
深度优先搜索的思想。
回朔搜索的思想。
二分与分治思想。
搜索中的剪枝技巧。
递规方法以及思想。
运用离散数学中的一些数理逻辑、简单图论、简单数论解决一些问题。
组合数学的一些思想方法:fabonacci数列问题、递推方法、排列组合算法的运用。
打表方法。
欧几里德算法。
调用sort排序。
组合数学上的catalan数的思想。

ACM算法竞赛模板个人总结汇总

ACM算法竞赛模板个人总结汇总

数学 (4)最大公约数、最小公倍数 (4)最大公约数——欧几里得算法O(n) (4)Stein算法O( log(max(a,b)) ) (4)最小公倍数: (4)素数相关 (5)普通素数判断 (5)筛法求素数[1,N] (5)二次筛法求素数[L,R] (6)Miller-Rabbin素数测试方法 (7)算术基本定理的定义和性质: (8)同余方程[组] 乘法模逆元中国剩余定理 (9)扩展欧几里得,求一组解x,y,使得gcd(a,b) = d = a * x + b * y (9)扩展欧几里得,求所有解x,y,使得c = a * x + b * y (10)扩展欧几里得,求a关于n的逆元a^-1,使得a * a^-1 ≡ 1(mod n) (10)扩展欧几里得,求解x,满足同余方程组x ≡ Ri(mod Ai) (10)扩展欧几里得,求解x,满足高次同余方程A^x ≡ B(mod C) (11)中国剩余定理: (13)中国剩余定理最小非负数解的算法: (14)求解a*x + b*y = c的其中一组解,使得|x| + |y|尽可能小,若相等,则a|x| + b|y|尽可能小。

(15)整数快速幂 (16)矩阵快速幂 (16)整数分解 (18)试除法整数分解 (18)筛法整数分解 (18)PollardRho大整数分解 (19)欧拉函数 (22)直接欧拉函数 (22)递推快速求欧拉函数 (23)容斥原理 (23)母函数 (24)普通母函数 (24)指数型母函数 (25)其他相关 (27)九余数定理:一个数N各位数字的和,对9取余等于这个数对9取余 (27)给你一个奇数N,求1~N的奇数平方和: S = N*(N+1)*(N+2)/6 (27)约瑟夫问题:有N个人,编号为1~N,按顺时针围成一个圈,每数k个人,就将这个人从圈中消除,问:最终只留下一个人的编号。

(27)给你整数x和y的和以及x和y的积,是否能找到满足这两个式子的整数x和整数y。

acm实践报告

acm实践报告

acm实践报告ACM(Association for Computing Machinery)是计算机科学领域的国际学术组织,旨在促进计算机科学的发展和应用。

作为计算机领域的学生,我参加了ACM的实践活动,并进行了一次实践报告,分享我的经验和收获。

1. 活动背景和意义ACM每年都会举办各类实践活动,旨在帮助学生扩展计算机知识、提升解决问题的能力,并促进合作与团队精神的培养。

这些活动包括编程竞赛、算法训练和软件开发等。

参加ACM的实践活动,对于学生的成长和职业发展具有重要意义。

2. 我参加的ACM实践活动我参加了一次ACM的编程竞赛活动。

这个活动是一个团队赛,由三人组成一个小组。

每个小组在赛场上通过解决一系列算法和编程问题来获取高分。

除了测试解题能力外,比赛还考察团队合作、压力处理以及时间管理等方面的能力。

3. 准备工作在活动前,我们的团队进行了充分的准备工作。

首先,我们对过去的ACM比赛题目进行了研究,分析常见的算法问题和解题思路。

然后,我们每个成员都阅读了相关的计算机科学和算法导论书籍,提升自身的编程和算法基础。

此外,我们还进行了模拟训练,通过解决一些ACM比赛的往年题目来提高解题速度和准确度。

4. 比赛经历比赛当天,我们早早到达了比赛场地。

整个比赛过程紧张而充实,我们需要在短时间内解决尽可能多的问题。

在比赛中,我们遇到了一些难题,但我们保持冷静,团队合作默契,共同努力解决。

在解题过程中,我们发现团队的互补性很重要,每个人都能发挥出自己的优势,并通过交流和合作加深了解题的理解和思考。

5. 收获和反思参加ACM实践活动,我不仅提高了编程和算法能力,还培养了团队合作和解决问题的能力。

在比赛中,我们学会了分析问题、主动寻求帮助和灵活应对。

同时,我们也深刻认识到知识的广度和深度对于解决实际问题的重要性。

这次实践经历让我明白理论知识只是解决问题的基础,真正的能力在于将理论应用到实践中。

6. 未来的计划基于这次实践经验,我计划继续学习和参与ACM的实践活动。

ACM模式归纳总结

ACM模式归纳总结

ACM模式归纳总结ACM竞赛是一项专注于算法和编程的比赛,旨在锻炼参赛者的解决问题的能力和创新思维。

在参加ACM竞赛的过程中,我逐渐领悟到一些常见的解题模式,这些模式可以帮助选手更好地解决问题,提高算法设计和优化能力。

本文将对我在ACM竞赛中使用的一些常见模式进行归纳和总结,希望对学习和参与ACM竞赛的同学有所帮助。

模式一:贪心算法贪心算法是一种直观简单的算法思想,通常在需要做出一系列选择并且每次选择最优解时使用。

关键点是每一步都选择当前最好的解,而不考虑全局最优。

在ACM竞赛中,贪心算法常用于优化问题、调度问题和区间问题等。

举例来说,在解决约束有限的任务调度问题时,可以使用贪心算法找到最佳的任务执行顺序。

模式二:动态规划动态规划是一种基于分治策略的算法思想,通常用于求解最优化问题。

关键点是将复杂问题分解为重叠子问题,并通过对子问题的求解得到全局最优解。

在ACM竞赛中,动态规划常用于解决最长公共子序列、背包问题和字符串编辑距离等。

举例来说,在解决最长递增子序列问题时,可以使用动态规划记录每个位置的最长递增子序列长度,并不断更新得到最终结果。

模式三:搜索算法搜索算法是一种通过遍历问题的解空间来寻找最优解的算法思想。

关键点是遵循规则进行搜索,并逐步找到满足条件的解。

在ACM竞赛中,搜索算法常用于解决全排列、图的遍历和状态空间搜索等问题。

举例来说,在解决图的最短路径问题时,可以使用广度优先搜索或者迪杰斯特拉算法找到最短路径。

模式四:图论算法图论算法是一种研究图的理论和应用的算法思想,用于解决与图相关的问题。

关键点是通过节点和边之间的关系来表示问题,并使用图的性质和算法求解。

在ACM竞赛中,图论算法常用于解决最小生成树、最短路径和网络流等问题。

举例来说,在解决最小生成树问题时,可以使用克鲁斯卡尔算法或者普里姆算法找到最小生成树。

模式五:位运算位运算是一种对二进制数进行操作的算法思想,常用于优化和加速计算过程。

ACM自我总结

ACM自我总结

1.密码#include<stdio.h>#include <conio.h>#include <string.h>void pass(){char num[6]={'1','2','3','4','5'},password[6];int i;//for(i=0;i<=5;i++)// password[i]='\0';while(1){for(i=0;i<5;i++){password[i]=getch();printf("*");}if(strcmp(num,password)==0){printf("\n密码正确!\n");break;}elseprintf("\n密码错误,请重输!\n");}}void main(){pass();getch();}2.杨辉三角#include <stdio.h>#include <string.h>int main(){int i,j,c[101][101];for(i=0;i<=100;i++){for(j=0;j<=100;j++){if(i==j&&i==0)c[i][j]=1;elsec[j][i]=c[j-1][i]+c[j-1][i-1];}}printf("%d\n",c[5][3]);return 0;}3.二叉树先中后序遍历#include <stdio.h>#include <malloc.h>#define SIZE 100typedef struct BitNode //定义二叉树节点结构{char data; //数据域struct BitNode *lchild,*rchild; //左右孩子指针域}BitNode,*Bitree;void createBitree(Bitree &BT){char ch;int a;scanf("%c",&ch);a=getchar();if(ch=='*'){ BT=NULL;return ;}//*表示空树else{BT=(BitNode *)malloc(sizeof(BitNode));BT->data=ch;createBitree(BT->lchild);createBitree(BT->rchild);}}void preTree(BitNode *p)//先序{if(p){printf("%c",p->data);preTree(p->lchild);preTree(p->rchild);}void midTree(BitNode *p)//中序{if(p){midTree(p->lchild);printf("%c",p->data);midTree(p->rchild);}}void lastTree(BitNode *p)//后序{if(p){lastTree(p->lchild);lastTree(p->rchild);printf("%c",p->data);}}int main(void){int m;Bitree Bt;printf("*表示结束\n");createBitree(Bt);printf("1.先序\n");printf("2.中序\n");printf("3.后序\n");printf("请选择序号:");while(1){printf("\n");scanf("%d",&m);switch(m){case 1:printf("输入二叉树://先序遍历\n");preTree(Bt);break;case 2:printf("输入二叉树://中序遍历\n");midTree(Bt);break;case 3:printf("输入二叉树://后序遍历\n");lastTree(Bt);break;}}return 0;4.DFS搜索例题湘大1375#include <stdio.h>#include <stdlib.h>#include <string.h>bool route[10001][10001];bool v[50001];int m,ans,n,a,b,count;void search(int i){int j;for(j=1;j<=n;j++){if(route[i][j]){if(v[j]){count++;v[j]=false;}route[i][j]=false;search(j);route[i][j]=true;}}}int main(void){scanf("%d%d",&m,&n);for(int i=1;i<=n;i++){scanf("%d%d",&a,&b);route[b][a]=true;}for(i=1;i<=n;i++){count=0;memset(v,1,sizeof(v));v[i]=false;search(i);if(count==n-1) ans++;}printf("%d\n",ans);return 0;}5.克鲁斯卡尔算法最小生成树#include"stdio.h"#include"stdlib.h"#define N 100#define inf 32767typedef struct // 存储结点的双亲信息{int parent;}ver;typedef struct //存储边的相关信息{unsigned weight; //边的权int vi,vj; //边的两个端点}edge;ver dot[N];edge node[N];int find_mfset(int d,int n) //查找结点d所在的集合的根{int v;if(d<1||d>n)return -1; //点d不在集合内for(v=d;dot[v].parent>0;v=dot[v].parent);return v;}void merge_mfset(int vi,int vj,int n) //vi,vj属于两个不相交的子集,求这两个子集的并集{dot[find_mfset(vi,n)].parent=vj;}void route(int m,int n) // 用来找出最小生成树,并输出其边及顶点{int i,j,k;edge cd;for(i=1;i<m;i++) //将node数组按边权值由小到大排序{for(j=0;j<m-i;j++)if(node[j].weight>node[j+1].weight){cd=node[j];node[j]=node[j+1];node[j+1]=cd;}}for(k=1;k<=m;k++) //寻找最小代价边,并且要求其两个端点不在同一个子集合内if(find_mfset(node[k].vi,n)!=find_mfset(node[k].vj,n)){merge_mfset(node[k].vi,node[k].vj,n); //将符合条件的边两个端点所在的集合求并集printf("(%d,%d,%d)\n",node[k].vi,node[k].vj,node[k].weight);}}int main(void){int m,n,k;printf("请输入图的顶点数和边数(中间用空格隔开)\n");scanf("%d%d",&n,&m);//printf("请分别输入%d的起点,终点及边的权值:\n",m);for(k=1;k<=m;k++){printf("请输入第%d个顶点的起点,终点及权值:",k);scanf("%d%d%d",&node[k].vi,&node[k].vj,&node[k].weight);}for(k=1;k<=m;k++) //顶点数组双亲信息赋初值dot[k].parent=0;printf("最小生成树的边为");printf("起点终点权值\n");route(m,n);system("pause");return 0;}选择排序#include <stdio.h>int main(void){int a[10],k,temp,i,j;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++){k=i;for(j=i+1;j<10;j++){if(a[k]>a[j]){temp=a[k];a[k]=a[j];a[j]=temp;}}}for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");return 0;}Qsort快速排序#include <stdio.h>#include <stdlib.h>#include <string.h>int cmp(const void *a,const void *b){return (*(int *)a-*(int *)b);}int main(void){int a[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);qsort(a,10,sizeof(a[0]),cmp);for(i=0;i<10;i++)printf("%d ",a[i]);return 0;}基本快速排序(6 4 3 5 7 8 9)#include <stdio.h>void qsort(int a[],int h,int r){int i,j,t,p;i=h,j=r;//i,j接受首尾数字t=a[(h+r)/2];//t为标志do{while(a[i]<t) i++;//找一个小于t的数while(a[j]>t) j--;//找一个大于t的数if(i<=j)//如果刚好在t的左右两边就互换{p=a[i];a[i]=a[j];a[j]=p;i++;j--;}}while(i<j);if(i<r) qsort(a,i,r);if(j>h) qsort(a,h,j);};int main(void){int i,a[7];for(i=0;i<7;i++)scanf("%d",&a[i]);qsort(a,0,6);for(i=0;i<7;i++)printf("%d ",a[i]);printf("\n");return 0;}插入排序#include <stdio.h>#include <stdlib.h>#define m 11void Insertqort(int a[]){int i,j;for(i=2;i<m;i++){if(a[i-1]>a[i]){a[0]=a[i];a[i]=a[i-1];}for(j=i-2;a[j]>a[0]&&j>0;j--)a[j+1]=a[j];a[j+1]=a[0];}}int main(void){int i,j;int a[m]={0,9,8,7,6,5,4,3,2,1,0};printf("排序之前的元素:");for(i=1;i<m;i++)printf("%d ",a[i]);printf("\n");Insertqort(a);printf("输出后的结果为:");for(i=1;i<m;i++)printf("%d ",a[i]);}快排排序22void QuickSort(int a[],int b[],int l,int r) {int i=l,j=r,t,p;if(l<r){t=a[l],p=b[l];while(i!=j){while(a[j]*p<t*b[j])j--;if(i<j){a[i]=a[j];b[i]=b[j];i++;}while(a[i]*p>t*b[i])i++;if(i<j){a[j]=a[i];b[j]=b[i];j--;}}a[i]=t;b[i]=p;QuickSort(a,b,l,i-1);QuickSort(a,b,i+1,r);}}。

楼天城ACM竞赛经历总结

楼天城ACM竞赛经历总结
用假期空闲之时,将这几年 GCJ,ACM,TopCoder 参加的一些重要比赛作个 回顾。昨天是 GCJ2006 的回忆,今天时间上更早一些吧,我现在还清晰记得 3 年 前,我刚刚参加 ACM 时参加北京赛区 2005 和杭州赛区 2005 的情况。 2005 年 ACM-ICPC——酸甜苦辣 我进入清华大学开始本科学习的时间是 2004 年 8 月,在进入清华大学的第一 年里,由于基础课学习比较紧张,再加上计算机系不允许大一学生自带电脑,我没 有参加 2004 年的 ACM 比赛。不过在大一一年中没有停止这方面的练习,对 ACM 还是热情高涨。 大概在 2005 年 7 月底,与同班同学 shell(贝小辉)和 superzn(张宁)一起 决定组队参加 ACM 比赛。对于队名没有太多的想法,就随便取了一个字典序靠前 一点的 bomber。随后进行的几场训练中,我的编程状态一直保持得很好,训练比 赛的主要方式都是:我主写程序,shell 和 superzn 负责翻译题目,思考算法和测试。 这种组队模式一直沿用到我们后面的所有比赛中。 2005 年底,我们报名参加了 2005 年的北京赛区和杭州赛区的比赛。顺利通过 了预赛进入了现场决赛。记得当时北京赛区预赛的力过了 6 题,最后以第二名的资格参加 北京赛区现场比赛。 北京赛区: 2005 年的北京赛区地点设在隔壁的北京大学,由于交通非常方便,我们没有 和大部分选手住在一起,不过也没有参加 Java-Challenge 和晚上的表演。 练习赛之前,说到比赛位置抽签,本身意义不是很大,可是邬老师神奇的 RP 把两只清华的队伍抽在一起,结果练习赛进行了一半,另一只清华的队伍 THU1 (队员是:吴景岳,栗师和金凯,好像后来队名改成了 DreamCatcher,不是很确 定)被要求换到一个比较远的地方,理由是有些学校觉得这样不合理。后来很多赛 区也出现过队伍座位在一起的情况,邬老师的 RP 果然不是盖的。 记得练习赛时和复旦的 LemonTree(盛城)一起在场地里闲逛,结果果然不到 10 分钟就被要求回座位了。还有当时比赛场地是一个体育馆,有些队伍把气球放 飞之后气球就飘在天花板下了,总裁判李文新老师还威胁我们说,如果明天正式比 赛把气球放飞,就不算通过相应的题目,除非有办法把气球取下来。 然后就是比赛的过程了,下面有底纹的文字是我找到的当时留下的比赛总结: E:快速排序。5 分钟 1Y。 我想 5 分钟的时间可以争取这几年 ACM 国内赛区的最快出题记录了吧。 G:二分答案+最小生成树。25 分钟 1Y。 这题就是经典的最优比例生成树问题,我们一致认为这题比较简单。不过后来 被李文新老师批评了,说法是误导其他的队伍。不过说到最优比例生成树问题, TCO2006 的时候 fwj 和 tomek 竟然都没有见过这道题目,这题可是源于 POI 呀。我 想我们认为这道题目简单的主要原因是我们都在冬令营上见过这到题目,如果第一 次看见,想出算法可能确实需要一些时间。在这里向被我们影响的队伍的道歉,最 终 G 提交了 200 多次,但是只有 8 个队伍 AC。 C:二分图最大匹配。42 分钟 1Y 题目要求计算一张图的最小覆盖集,可能唯一的 tricky 是发现图是二分图。 D:遇到了一定的困难,发现 A 很简单,于是先放一下 D 是一道比较综合的题目,设计一些简单的计算几何和字符串处理的知识。 A:简单的几何问题,出现了一个低级错误,提交了 3 次均为 WA。

ACM训练总结10.11

ACM训练总结10.11

ACM训练总结10.11第⼀次正式训练。

刚开始先看了A题,⽕柴棍拼数字的问题,数据范围很⼩,可以直接搜索暴⼒。

看完题⽬直接开始打,很快就打完了,但是被⽂件输⼊输出坑了两发,好在是过了,这时是8min。

看⼀眼以前的榜,A在2min的时候就被⼀⾎了,下⼀道被过的题⽬是G。

G题是⼀道⽤if就能过的题⽬,但还是wa了⼀次,少考虑了⼀些情况,在22min的时候过了,读题⽤了⽐较长的时间。

再看⼀眼榜,D和B和J题有⼈过了,D题⽐较短,就先看了。

D是⼀道很有趣的题⽬,盲猜⼀⼿数据n=5000时答案的集合的最⼤数不会太⼤,且第⼀次凑出n=x的集合的答案必定是最⼩。

这个结论貌似是对的,⼀发就过了。

时间是39min。

J题是⼀道结合了物理知识的题⽬,暂时不会。

B题应该是个简单的贪⼼,⼀开始想的是,先排序好,对于⼀个百分⽐buff,如果加⼊这个buff的增量会⽐下⼀个加buff⾼,那就加⼊。

然⽽这是错误的,增量最优并不是全局最优,排序好之后,根据加buff的序列结尾的变化,所成的结果应该是先增后减的,这样⼀来,只需要找到第⼀个下降的位置,那⾥就是最⼤值了。

其实正确写法早就想到了,但我误以为它和我想的错误贪⼼本质相同,贪⼼⼜⽐较好打,所以就没有去写,也没有⽤它来对拍。

54min第⼀次提交,1h44min才过,⽽且交了12发,前11发都是对错误贪⼼的提交,正解⼀次就过了,吐了。

接下来就是漫长的看题时间。

即使借助翻译,我还是没看懂C和E。

剩下的过的⽐较多的题⽬是I,J,HH是⼀个类似于组合数+dp的东西,推不动。

J是物理题。

I题很难读。

去读了⼀下F,感觉很可做,但不知道怎么下⼿。

J题后来发现,对于风的向量只需要叠加就好,看看只凭风⼒能飞到哪⾥,飞到的位置可不可以通过⾃⾝的速度来到达,也就是说,⾃⼰的速度和⽅向其实可以完全不变。

这次也是⼀次过。

但时间已经到3h27min了,中间看榜看题想题消耗了⼤量时间,尤其在F题上,在这道⽆⼈题上⾯⽤了很多时间。

acm实践报告

acm实践报告

acm实践报告概述:ACM(ACM国际大学生程序设计竞赛)是一项世界知名的计算机编程竞赛,旨在培养学生在编程、算法和问题求解方面的能力。

本报告旨在总结我参加ACM实践的经历和收获。

一、背景介绍ACM国际大学生程序设计竞赛是由国际计算机专业实验室(ICPC)主办的世界级比赛。

该竞赛面向全球大学生,在一定时间内解决一系列算法和数据结构问题。

竞赛以团队形式进行,要求选手分析问题、设计算法并在规定时间内编写正确的程序。

二、参赛经历我所在的学校每年都会组织学生参加ACM实践,为了更好地锻炼自己的编程能力和团队合作精神,我决定参加这项挑战。

1. 组队在参加ACM实践之前,我与两位优秀的同学组成了一个团队。

我们互补的技能和良好的合作关系为我们的竞争提供了坚实的基础。

2. 学习算法与数据结构为了在竞赛中取得好成绩,我们花费大量时间学习常用的算法和数据结构,如搜索算法、排序算法、图论等。

我们通过自学、参加课外培训和解题讨论会来提高自己的编程能力。

3. 参加模拟赛为了磨练自己的竞赛技巧,我们多次参加ACM模拟赛。

通过参加模拟赛,我们能够熟悉比赛规则,并发现自己在算法设计和实现上的不足之处。

4. 实践训练除了参加模拟赛外,我们还积极参加实践训练。

我们从ACM历年的题目中选择一些经典题目进行解决,不断提升自己的编程水平和解题能力。

三、收获与体会通过参加ACM实践,我获得了许多宝贵的经验和收获。

1. 算法与数据结构的应用:在实践中,我学会了将各种算法和数据结构应用于解决实际问题,提高了解决问题的效率和准确性。

2. 团队合作精神:在团队协作的过程中,我深刻体会到了团队合作的重要性。

我们通过合理的分工、高效的沟通和互相支持,不断提升自己的团队合作能力。

3. 解决问题的能力:ACM实践给予了我解决复杂问题的机会,挑战了我的思维和分析能力。

通过不断实践和总结,我的问题解决能力得到了显著提升。

4. 耐心与坚持:在参加ACM实践的过程中,我也遇到了许多困难和挫折。

算法竞赛生涯年度总结(3篇)

算法竞赛生涯年度总结(3篇)

第1篇引言转眼间,一年又即将过去,回首这一年,我的算法竞赛生涯充满了挑战与收获。

在这篇文章中,我将对自己在算法竞赛中的经历进行总结,分享我的心得体会,以及对未来的展望。

第一章:初入竞赛之门2023年,对我来说是算法竞赛生涯的开端。

那时,我还是一个对编程一知半解的新手,对算法竞赛充满了好奇与期待。

在一次偶然的机会下,我接触到了编程,并逐渐对算法产生了浓厚的兴趣。

于是,我决定投身于算法竞赛的世界。

第二章:初识算法之美在刚开始接触算法竞赛时,我对各种算法一窍不通。

为了弥补自己的不足,我利用业余时间学习编程语言,阅读算法书籍,观看教学视频。

通过不懈的努力,我逐渐掌握了诸如贪心、动态规划、二分等基本算法。

在这个过程中,我体会到了算法之美,也找到了自己在竞赛中的定位。

第三章:实战磨砺,积累经验为了检验自己的学习成果,我积极参加各类线上线下的算法竞赛。

在比赛中,我学会了如何分析问题、设计算法、编写代码。

尽管在初期,我的成绩并不理想,但我从未放弃。

每一次的失败都是一次宝贵的经验,让我更加坚定地走在算法竞赛的道路上。

第四章:团队协作,共创辉煌在算法竞赛中,团队协作至关重要。

这一年,我有幸加入了优秀的团队,与队友们并肩作战。

在比赛中,我们互相鼓励、共同进步。

正是这种团结一心的精神,让我们在多个比赛中取得了优异成绩。

第五章:挑战自我,勇攀高峰在经历了无数个日夜的奋战后,我终于迎来了人生中第一个重要的比赛——全国大学生程序设计竞赛(ACM ICPC)。

虽然我们在比赛中遇到了诸多困难,但凭借着坚定的信念和精湛的技艺,我们成功闯入了决赛。

虽然最终未能夺冠,但这段经历让我更加深刻地认识到自己的不足,也为我今后的算法竞赛生涯奠定了坚实的基础。

第六章:收获与感悟回首这一年,我收获颇丰。

在算法竞赛中,我不仅学到了知识,更学会了如何面对挑战、战胜困难。

以下是我这一年来的几点感悟:1. 坚持不懈:在算法竞赛的道路上,没有捷径可走。

只有通过不懈的努力,才能取得优异的成绩。

杭州电子科技大学acm2篇

杭州电子科技大学acm2篇

杭州电子科技大学acm杭州电子科技大学ACM简介杭州电子科技大学ACM (Association for Computing Machinery) 团队是该校计算机科学与技术学院的一个重要学术组织。

ACM是全球最大的科技计算机组织之一,旨在促进计算机科学和信息技术的发展和应用,并为学生提供一个展示和发展他们在计算机科学方面技能的平台。

作为杭州电子科技大学ACM团队的成员,我们致力于在计算机科学领域中的学习和研究。

我们的团队成员都是对计算机科学充满热爱和追求卓越的学生。

我们定期组织各种学术活动,如讲座、研讨会和技术培训等,以提高团队成员的学术水平和技术能力。

同时,我们积极参与ACM国际大学生程序设计竞赛 (ACM International Collegiate Programming Contest),这是全球范围内最有影响力和最具挑战性的学生程序设计竞赛之一。

我们的团队成员经过长期的准备和培训,参加比赛并在各个赛区中取得了优异的成绩。

除了学术上的努力,杭州电子科技大学ACM团队也注重团队建设和社区服务。

我们定期组织团队活动,如户外拓展训练、团队旅行和志愿者活动等,以提高团队成员之间的合作精神和凝聚力。

我们也参与校内外的各种社区服务项目,为推动计算机科学的应用和发展做出贡献。

杭州电子科技大学ACM团队的目标是培养学生的计算机科学素养,提高他们在计算机科学领域的创新能力和解决问题的能力。

通过参与各种学术和竞赛活动,我们努力为团队成员提供一个广阔的平台,展示他们的才华和激情。

总之,杭州电子科技大学ACM团队是一个积极向上、充满活力的学术组织,致力于促进学生在计算机科学领域的学习和发展。

我们相信通过团队的努力和追求,我们能够在计算机科学领域取得更多的成就,并为社会发展做出贡献。

第二篇:杭州电子科技大学ACM竞赛成绩杭州电子科技大学ACM团队作为该校最具竞争实力的学术组织之一,一直在国内外的ACM竞赛中取得优异的成绩。

《ACM集训心得体会》

《ACM集训心得体会》

《ACM集训心得体会》第一篇:acm集训心得体会冬季培训心得体会寒假这一个星期的学习培训,是我对acm有了更深层次的理解,知识面也有所扩展。

下面,我来谈谈对这次培训活动的几点心得。

一,凡事贵在坚持。

acm对一个人的逻辑思维能力要求很强。

当在做题过程中碰到难题时要耐得住心,沉住气,不断地思考,有不做出不罢休的精神。

二,对自己要有信心,要相信自己。

当一个题目做出来提交出差后,不要急,回过头来把题目再认真读一遍,注意输入输出的格式,对照代码进行修改,改好了再提交,不能因为一次有错就盲目的提交。

在修改代码的过程中要多想想为什么,这样才能提高自己。

三,有目的有针对性的训练。

在做题之前,我们要明确自己的定位,然后根据自身的情况找有针对性的题目进行练习,在不断地练习中形成系统的知识体系。

四,量变带来质变。

我们都知道不积小流无以成江海,不积跬步无以至千里。

学习也是一样的,需要一定的练习量才能达到质的飞越。

在平时自己找题目进行练习,多积累一些经典的算法是很有必要的。

五,有目标有计划。

在这次的学习培训结束后,我结合自身的情况,做了规划。

在做题上坚持之前的计划认真完成;在改程序时不仅仅局限于改错,还要能将复杂的程序简单化;每做完一定的题目后都要进行归纳和总结,复习回顾也是重要的。

第二篇:acm集训心得体会(大全)冬季培训心得体会寒假这一个星期的学习培训,是我对acm有了更深层次的理解,知识面也有所扩展。

下面,我来谈谈对这次培训活动的几点心得。

一,凡事贵在坚持。

acm对一个人的逻辑思维能力要求很强。

当在做题过程中碰到难题时要耐得住心,沉住气,不断地思考,有不做出不罢休的精神。

二,对自己要有信心,要相信自己。

当一个题目做出来提交出差后,不要急,回过头来把题目再认真读一遍,注意输入输出的格式,对照代码进行修改,改好了再提交,不能因为一次有错就盲目的提交。

在修改代码的过程中要多想想为什么,这样才能提高自己。

三,有目的有针对性的训练。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<iostream>
using namespace std;
int main()
{
int a,b,n,i,s[1000];
while(scanf("%d%d%d",&a,&b,&n)==3)
{
if(!(a||b||n))
break;
1006
Problem Description
The three hands of the clock are rotating every second and meeting each other many times everyday. Finally, they get bored of this and each of them would like to stay away from the other two. A hand is happy if it is at least D degrees from any of the rest. You are to calculate how much time in a day that all the hands are happy.
// 从 D <= a - bS <= D1 中解出区间
Segment makeSeg2(double,double);
//--------------------------- 主函数 ---------------------------//
int main(){
if( seg.a >= seg.b )
seg.a = seg.b = 0.0;
return seg;
}
// “快乐时光”临界角度
double D;
// 从 D <= bS - a <= D1 中解出区间
Segment makeSeg1(double,double);
// ---- 如果时、分确定,那么我们就得到关于秒的线性不等式组,其解集必定是一些区间的交或并.
// ---- 容易从区间的交或并中统计出“快乐时光”的长度. 具体如下:
// ---- 设当前的时间为 H:M:S, 其中 0 <= H < 12, 0 <= M < 60, 0 <= S < 60, H,M皆为整数, S为实数
// ---- 于是时针、分针、秒针相对于时刻 0:0:0 的转角分别为
// ---- A(H) = 30H + M/2 + S/120;
// ---- A(M) = 6M + S/10;
// ---- A(S) = 6S;
// ---- 设题目中的临界夹角为 D,则“快乐时光”是同时满足以下不等式的解:
Output
For each test case, print the value of f(n) on a single line.
Sample Input
1 1 3
1 2 10
0 0 0
Sample Out有循环,所以只需要求出前50个数据就可以了,后面的根据这50个结果推出来。计算出前50个结果,题目就简单了。
}
return 0;
}
正确代码:
[code=C/C++]
// Problem 1006 Tick and Tick// Algorithm:
// ---- 稍加分析,可以发现对时间离散化计数行不通,因为要想达到精度,则必定超时.
// ---- 既然离散地统计不行,那就改为统计时间段. 试想,指针之间的夹角是关于时、分、秒的线性函数,
break;
}
n%=i-2;
if(n==0)
n=i-3;
else
n--;
cout<<s[n]<<endl;
}
1、这是大概是数论的问题,循环周期应该是7^变量个数,变量是两个,那么循环周期就是7^2=49。
2、因为num[i]是%7后得出的结果,而%7后有7种结果0,1,2,3,4,5,6;
那每次都是这7种结果中的一个,那最多7*7组结果就一定会出现循环;
例如第一组(每组7个数)第一个数0,第二组第一个数是1,一次类推,第七组第一个数是6;那么无论下一组第一个数出现的是什么都一定能这7组中找到一组与之相同;
if(tmp1 + EPS < tmp || tmp2 + EPS < tmp || tmp3 + EPS < tmp)continue;
ans += 1.0;
}
printf("%.3lf\n",ans/(60.0*432.0));
// ---- [ (a+D)/b, (a+360-D)/b) ] 并 [ (a+D-360)/b, (a-D)/b ], 即两个闭区间的并集.
// ---- 设由式(i)得到的解集为 Si1 并 Si2, 那么“快乐时光”在时、分确定的情况下,其秒的解集为
// ---- [0,60] 交 (S11 并 S12) 交 (S21 并 S22) 交 (S31 并 S32)
// ---- D <= | A(H) - A(M) | <= 360-D; (1)
// ---- D <= | A(H) - A(S) | <= 360-D; (2)
// ---- D <= | A(M) - A(S) | <= 360-D; (3)
// ---- 上面各式的绝对值中的形式为 bS - a,(a,b为常数,b>0) 故解的形式为
s[0]=1;
s[1]=1;
for(i=2;i<50;i++)
{
s[i]=(s[i-1]*a+s[i-2]*b)%7;
if(i>4&&s[i]==s[2]&&s[i-1]==s[1]&&s[i-2]==s[0])
Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.
double tmp1,tmp2,tmp3;
tmp1 = fabs(a - b);
tmp2 = fabs(a - c);
tmp3 = fabs(b - c);
int main(){
int n;
while (scanf("%d",&n) != EOF){
if(n == -1)break;
double ans = 0.0,tmp = n*1.0;
for(int i = 0; i < 60*43200; ++i){ //1秒拆成了60份
// Date: 2008-08-29
// Compiler: Visual Studio 2005
#include <iostream>
#include <iomanip>
using namespace std;
#define max(a,b) a>b?a:b;
#define min(a,b) a<b?a:b;
1005 Number Sequence
Problem Description
A number sequence is defined as follows:
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Given A, B, and n, you are to calculate the value of f(n).
Output
For each D, print in a single line the percentage of time in a day that all of the hands are happy, accurate up to 3 decimal places.
Sample Input
// ---- 上面的集合容易化成 S1 并 S2 并 S3 并 S4 并 S5 并 S6 并 S7 并 S8 的形式,其中 S1,S2,...皆为闭区间.
// ---- 求区间的并的总长度没有困难,而这个总长度就是由时、分确定的“快乐时光”的长度.
// Author: obtuseSword
double a,b,c;
a = (double)(i%2592000)/7200.0;
b = (double)(i%216000)/600.0;
c = (double)(i%3600)/10.0;
0
120
90
-1
Sample Output
100.000
0.000
6.251
错误代码:
#include <cstdio>
#include <cstring>
相关文档
最新文档