安徽省年度“达内杯”程序设计大赛解题报告58.docx
《安徽省年度“达内杯”程序设计大赛解题报告58.docx》由会员分享,可在线阅读,更多相关《安徽省年度“达内杯”程序设计大赛解题报告58.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、n更多企业业学院:中小企企业管理理全能版版183套套讲座+897700份份资料总经理理、高层层管理49套讲讲座+1163888份资料中层管管理学院院46套讲讲座+660200份资料国学智智慧、易易经46套讲讲座人力资资源学院院56套讲讲座+2271223份资料各阶段段员工培培训学院院77套讲讲座+ 3244份资料员工管管理企业业学院67套讲讲座+ 87220份资料工厂生生产管理理学院52套讲讲座+ 139920份份资料财务管管理学院院53套讲讲座+ 179945份份资料销售经经理学院院56套讲讲座+ 143350份份资料销售人人员培训训学院72套讲讲座+ 48779份资料安徽省220111“达
2、内内杯”程程序设计计大赛解解题报告告A-幸运运数字此题只需需题目描描述解即即可,没没有任何何算法和和triick.#inccludde usinng nnameespaace stdd;int maiin() intt n; whiile (sccanff(%d, &nn) != EEOF) innt tt = n, s = 0; whhilee (tt) ss += t % 110; tt /= 100; iff (nn % s = 00) pprinntf(yeesnn); ellse priintff(nnonn); retturnn 0;B-转换换二叉树树首先根根据先序序序列和和中序序
3、序列建立立二叉树树,然后后按要求求先序遍遍历一遍遍二叉树树即可。当然,由由于建树树过程实实际也是是在先序序遍历二二叉树,所所以可以以不用实实际建树树,只是是模拟那那个过程程,然后后再过程程中输出出即可。建树过过程简单单的说就就是以先先序序列列定根节节点,以以中序序序列和和和根节点点定左右右子树。#inccludde #inccludde usinng nnameespaace stdd;consst iint maxxn = 277;int N;charr PrreOrrderrmaaxn, IInOrrderrmaaxn;voidd DFFS(iint PreeStaart, innt PP
4、reEEnd, innt IInSttartt, iint InEEnd) intt poos; forr (ppos = IInSttartt; PPreOOrdeerPPreSStarrt != InOOrdeerppos; ppos+) if (poos != IInSttartt) prrinttf(); DFFS(PPreSStarrt + 1, PrreSttartt + poss - InSStarrt, InSStarrt, poss - 1); prrinttf(); priintff(%c, PrreOrrderrPrreSttartt); if (poos != IInE
5、nnd) prrinttf(); DFFS(PPreSStarrt + poos - InnStaart + 11, PPreEEnd, poos + 1, InnEndd); prrinttf(); int maiin() intt i, leen; scaanf(%dd, &N); gettchaar(); forr (ii = 0; i N; i+) sccanff(%s %s, PrreOrrderr, IInOrrderr); leen = sttrleen(PPreOOrdeer); DFFS(00, llen - 11, 00, llen - 11); prrinttf(n);
6、retturnn 0;C-取石石子首先给给出必胜胜结论,只只要n != 2xx,则先先手必胜胜。证明明:假设设n = 122,将它它转换为为二进制制则为11000。先手手第一次次取只需需把二进进制中从从低位数数起第一一个1取走即即可。在在这个例例子中,先先手留给给后手石石子数的的二进制制为110000。这这样后手手能取的的石子数数的二进进制范围围为000011-01000,无无论后手手怎么取取,它都都不可能能把所有有数字都都取完,而而且取了了之后剩剩下的石石子数的的二进制制后3位位肯定有有一个1。先手只只需再次次将从低低位数起起的第一一个11取走走即可重重复上述述过程直直至游戏戏结束。而如果果
7、先手第第一次面面对的石石子数是是2xx个,由由于他第第一次不不能把石石子都取取完,所所以他无无论如何何取都会会把上述述必胜状状态留给给对手。同样根根据上述述证明方方法可以以证明如如果先手手必胜,那那么他第第一次取取的最少少石子数数就是石石子数的的二进制制中,从从低位数数起的第第一个1。#inccludde usinng nnameespaace stdd;int maiin() intt n, t; whiile (sccanff(%d, &nn) != EEOF) t = 11; whhilee (!(n & 11) nn = 11; tt = 11; iff (nn = 1) prrint
8、tf(lossenn); ellse priintff(wwin %dn, t); retturnn 0;D-关键键词统计计这题最最佳解法法是先建建立单词词的字典典树,然然后再把把文章中中的单词词一个一一个抠出出来进行行匹配,时时间复杂杂度是OO(m+n)。m是文文章长度度,n是是单词总总长度。但是省省赛时我我们数据据放得比比较松,只只要是把把单词一一个一个个抠出来来比较的的都能过过。#inccludde usinng nnameespaace stdd;consst iint maxxn = 1001622;consst iint maxxm = 20000005;struuct Nodde
9、 intt neext26; intt inndexx; voiid iinitt() meemseet(nnextt, -1, sizzeoff(neext); inndexx = -1; tiiremaxxn*55;charr sttrmmaxmm, worrd550;int cunntmmaxnn, nxttmaaxn, ssz, idxx;voidd innserrt(ccharr *ss) intt p = 00; whiile (*ss) innt vv = *s - a; iff (ttireep.neextv = -1) ttireep.neextv = +szz; ttire
10、eszz.iinitt(); p = ttireep.neextv; s+; nxttiddx = ttireep.inndexx; tirrepp.iindeex = iddx+;voidd fiind(chaar *s) intt p = 00; whiile (*ss) innt vv = *s - a; iff (ttireep.neextv = -1) rretuurn; p = ttireep.neextv; s+; forr (pp = tirrepp.iindeex; p != -1; p = nxxtpp) cuuntp+;booll loowerrcasse(cconsst
11、 ccharr &cc) retturnn aa = cc & c = z;booll uppperrcasse(cconsst ccharr &cc) retturnn AA = cc & c = Z;int maiin() intt n, i, t; getts(sstr); scaanf(%dd%*cc, &n); memmsett(cuunt, 0, 4 * nn); tirre00.iinitt(); forr (ii = 0; i n; i+) sccanff(%s, woord); innserrt(wwordd); forr (ii = t = 0; ; i+) iff (ll
12、oweercaase(strri) wworddt+ = sstri; ellse if (uppperrcasse(sstri) wworddt+ = sstri + 332; ellse if (t) wworddt = 00; ffindd(woord); tt = 0; iff (!strri) bbreaak; forr (ii = 0; i n; i+) prrinttf(%dn, cuunti); retturnn 0;E-搬书书这题很很多人可可能想复复杂了,比比赛中有有的队是是用DPP过的。但其实实只要对对体积进进行二分分,然后后暴力法法测试即即可。二二分体积积时间复复杂度OO
13、(loogd),测试试时间复复杂度OO(n+m)。所以总总的时间间复杂度度是O(n+m)llogdd),其其中d是是箱子体体积最大大可能值值和最小小可能值值之差,nn是书的的数量,mm是箱子子的数量量。#inccludde usinng nnameespaace stdd;consst iint maxxn = 10000;int vmmaxnn;int maiin() intt n, m; intt maaxv, miinv; intt leeft, riightt, mmid, cuunt, pttr, leaave; whiile (sccanff(%d %d, &nn, &m) !=
14、EOFF) maaxv = mminvv = 0; foor (intt i = 00; ii miinv) minnv = vi; leeft = mminvv, rrighht = maaxv; whhilee (lleftt rigght) mmid = (lefft + riightt) / 2; ccuntt = 0; lleavve = 0; ffor (pttr = 0; pttr n & cunnt = vptrr) leeavee -= vptrr; elsse leeavee = midd - vpptr; cuunt+; iif (cunnt = mm) rigght =
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安徽省 年度 达内杯 程序设计 大赛 解题 报告 58
限制150内