《简单计算题二.ppt》由会员分享,可在线阅读,更多相关《简单计算题二.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1/38简单计算题二 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望2/3812/6/20222关于本次比赛电子科技大学电子科技大学第九届程序设计竞赛暨西南地区高校邀请赛第九届程序设计竞赛暨西南地区高校邀请赛参赛选手来自电子科技大学在读学生(包括本科生、硕士和博士)决赛会邀请来自西南地区高校的ACM-ICPC专业队伍参加,但不参与校内评奖3/3812/6/20223关于本次比赛 报名报名报名时间:报名时间:3月月25日晚日晚9点点截止。截止。务必保证填写的个人信息
2、真实,务必保证填写的个人信息真实,被拒绝参赛的队伍可被拒绝参赛的队伍可能是因为填写信息有误或不完整能是因为填写信息有误或不完整。通过审核的队伍用注册的帐号和密码登录通过审核的队伍用注册的帐号和密码登录CDOJ参加比参加比赛。赛。若有任何疑问若有任何疑问/寻求组队可以在寻求组队可以在http:/ 晚上晚上9:00初赛采用网络赛形式,地址初赛采用网络赛形式,地址http:/ 9th UESTC Programming Contest Warmup 1(Public)2011-03-12 12:00:00 17:00:00The 9th UESTC Programming Contest Warmu
3、p 2(Private)2011-03-19 12:00:00 17:00:00初赛和热身赛期间,我们给使用电脑不方便的同学开放初赛和热身赛期间,我们给使用电脑不方便的同学开放科科研研2号楼号楼227作为比赛机房。作为比赛机房。初赛后公布所有选手代码,供交流和学习。严查作弊,组委会初赛后公布所有选手代码,供交流和学习。严查作弊,组委会判定代码雷同的选手将取消其成绩。判定代码雷同的选手将取消其成绩。5/3812/6/20225关于本次比赛决赛决赛The 9th UESTC Programming Contest Warmup 3 2011-04-01 12:00:00 17:00:00时间:时间
4、:4月月2日星期六日星期六13:00 18:00地点:地点:清水河校区清水河校区 科科A 227、229决赛会邀请来自西南地区高校的决赛会邀请来自西南地区高校的ACM/ICPC专业队伍专业队伍参加。外校队伍不参与校内评奖参加。外校队伍不参与校内评奖6/3812/6/20226关于本次比赛奖项设置奖项设置1.晋级决赛的同学将获得纪念晋级决赛的同学将获得纪念T-shirt2.获奖队员发给证书,作为学校评定奖学金加分与创获奖队员发给证书,作为学校评定奖学金加分与创新学分的依据。新学分的依据。3.比赛成绩会作为校比赛成绩会作为校ACM-ICPC队员选拔的重要依据队员选拔的重要依据4.表现突出的选手,将
5、有机会代表电子科技大学参加表现突出的选手,将有机会代表电子科技大学参加2011年四川省大学生程序设计竞赛。年四川省大学生程序设计竞赛。7/38校赛后请各位报名参加比赛的同学将你们的比赛校赛后请各位报名参加比赛的同学将你们的比赛账号和队员姓名发送到下列邮箱账号和队员姓名发送到下列邮箱yang_peng_;根据初赛和决赛所完成的题目数量进行打分,分根据初赛和决赛所完成的题目数量进行打分,分数成绩将作为各位同学中期测试成绩,约占期末数成绩将作为各位同学中期测试成绩,约占期末总成绩的总成绩的20%,希望大家都能努力拼一把!,希望大家都能努力拼一把!若有未参加比赛的和未发送邮件的同学将没有中若有未参加比
6、赛的和未发送邮件的同学将没有中期测试成绩;期测试成绩;收到邮件后将公布选课同学的校赛成绩统计结果。收到邮件后将公布选课同学的校赛成绩统计结果。8/38校赛往年题目精选校赛往年题目精选CDOJ_10048球胜负球胜负(eight)http:/ int main()int n;while(1)scanf(%d,&n);if(n=0)break;char str30;scanf(%s,str);int l=strlen(str)-1;/统计打进球的数量统计打进球的数量 bool flag;if(strl=B)/判断最后一个球是不是红方打进的黑球判断最后一个球是不是红方打进的黑球 int rc=0;f
7、or(int ct0=0;ct0l;ct0+)if(strct0=R)rc+;/统计黑球之前进了几个红球统计黑球之前进了几个红球 if(rc=7)flag=1;/进了进了7个红球则红方胜个红球则红方胜14/38 else flag=0;/否则黄方胜否则黄方胜 else/最后一个球是黄方打进的黑球最后一个球是黄方打进的黑球 int rc=0;for(int ct0=0;ct0l;ct0+)if(strct0=Y)rc+;/统计黑球之前进了几个黄球统计黑球之前进了几个黄球 if(rc=7)flag=0;/进了进了7个红球则黄方胜个红球则黄方胜 else flag=1;/否则红方胜否则红方胜 if(
8、flag)printf(Redn);else printf(Yellown);return 0;15/38CDOJ_1005点球大战点球大战(penalty)http:/ 在足球比赛中,有不少赛事,例如世界杯淘汰赛和欧在足球比赛中,有不少赛事,例如世界杯淘汰赛和欧洲冠军联赛淘汰赛中,当比赛双方经过正规比赛和加时赛洲冠军联赛淘汰赛中,当比赛双方经过正规比赛和加时赛之后仍然不分胜负时,需要进行点球大战来决定谁能够获之后仍然不分胜负时,需要进行点球大战来决定谁能够获得最终的胜利。点球大战的规则非常简单,两方轮流派出得最终的胜利。点球大战的规则非常简单,两方轮流派出球员罚点球,每方各罚球员罚点球,每方
9、各罚5个。当个。当5轮点球结束以后如果仍然轮点球结束以后如果仍然不分胜负,则进入一轮定胜负的阶段。两方各派一名球员不分胜负,则进入一轮定胜负的阶段。两方各派一名球员罚点球,直到有一方罚进而另一方没有进为止。罚点球,直到有一方罚进而另一方没有进为止。在北美职业冰球联赛中,也有点球大战。与足球的规则在北美职业冰球联赛中,也有点球大战。与足球的规则不同的是,它只先罚不同的是,它只先罚3轮点球,随后就进入一轮定胜负的轮点球,随后就进入一轮定胜负的阶段,而其他的规则完全一样。阶段,而其他的规则完全一样。在本题中,输入将给出每次点球是否罚进,而你的任务在本题中,输入将给出每次点球是否罚进,而你的任务则是输
10、出一个则是输出一个“比分板比分板”。17/38Input输入包含多组数据。每组数据的第一行包含一个整数输入包含多组数据。每组数据的第一行包含一个整数N(1=N=18),表示双方总共罚了多少个点球,表示双方总共罚了多少个点球,N=0表示输入结束。随后有表示输入结束。随后有N行,每行,每行是一个如下形式的字符串:行是一个如下形式的字符串:XXXXgood:表示这个点球罚进:表示这个点球罚进或者或者XXXXnogood:表示这个点球没有罚进:表示这个点球没有罚进其中其中XXXX表示球员名字(全部由字母和空格组成,保证不会出现歧表示球员名字(全部由字母和空格组成,保证不会出现歧义)义)每一行保证不超过
11、每一行保证不超过100个字符。个字符。XXXX和和good以及以及XXXX和和no、no和和good之间保证有且只有之间保证有且只有1个空格。个空格。good、nogood都是小写。本题是大小写相关的。都是小写。本题是大小写相关的。数据不保证点球大战一定结束,也不保证在结束以后立即结束这组数数据不保证点球大战一定结束,也不保证在结束以后立即结束这组数据(即:不用判断点球大战是否结束,只用把罚进的点球往比分上加据(即:不用判断点球大战是否结束,只用把罚进的点球往比分上加即可)。即可)。Output对每组数据,输出一个比分板。一个点球如果罚进,则在对应的地方对每组数据,输出一个比分板。一个点球如果
12、罚进,则在对应的地方标上标上O,如果没有进则标上,如果没有进则标上X。先罚球的队伍的信息在上面,。先罚球的队伍的信息在上面,后罚的在下面。最右边标上两队的比分。具体格式参考样例输出。注后罚的在下面。最右边标上两队的比分。具体格式参考样例输出。注意如果一轮点球只罚了一个,则后面那个点球对应的地方写上意如果一轮点球只罚了一个,则后面那个点球对应的地方写上-。18/38SampleInput 6Riise goodBallack goodGerrard no goodLampard no goodFernando Torres goodMalouda good9Christiano Ronaldo
13、no goodMessi no goodGiggs goodAbidal no goodCarrick goodRonaldinho goodRooney goodHenry no goodTevez good0SampleOutput 1 2 3 ScoreO X O 2O X O 21 2 3 4 5 ScoreX O O O O 4X X O X -119/38名字可以包含空格,甚至可以包含名字可以包含空格,甚至可以包含no、good(事(事实上,大部分数据都包含实上,大部分数据都包含no和和good中的至少一个中的至少一个),所以此题比较好的处理方法是找跳过名字,),所以此题比较好的处
14、理方法是找跳过名字,直接找倒数第二个单词,看它是不是直接找倒数第二个单词,看它是不是no,是就是,是就是没踢进,反之就是踢进;没踢进,反之就是踢进;数据出的很诡异,还有两种特殊情况,一种是只数据出的很诡异,还有两种特殊情况,一种是只有一个有一个good,另一种是直接,另一种是直接no good。这两组数。这两组数据不是太满足题意(第一组名字为空,第二组有据不是太满足题意(第一组名字为空,第二组有歧义)歧义)空格数要和样例输出一样,否则很可能会被判为空格数要和样例输出一样,否则很可能会被判为“格式错误格式错误”(PresentationError)。20/38#include bool judg
15、e(char*str)int l=strlen(str);int pos=l-1;while(strpos!=)pos-;/从一行字符串的最后开始向前寻找第一个空格从一行字符串的最后开始向前寻找第一个空格 strpos=0;int npos=pos-1;while(strnpos!=)npos-;/继续向前寻找第二个空格继续向前寻找第二个空格 if(strcmp(str+npos+1,no)=0)return 0;/比较从比较从npos+1所指向的空格后的第一个字符开始到所指向的空格后的第一个字符开始到 /“0”之间的字符串是否等同之间的字符串是否等同“no”return 1;参考源代码参考源
16、代码21/38int main()int n;while(1)scanf(%d,&n);if(n=0)break;int gg152=0;/至多至多15个回合,每回合两队各罚一次个回合,每回合两队各罚一次 char str110;gets(str);/扫描双方罚点球的人数扫描双方罚点球的人数 for(int ct0=0;ct0n;ct0+)gets(str);/扫描一行罚点球信息扫描一行罚点球信息 if(judge(str)/判断是否踢进点球判断是否踢进点球 ggct0/2ct0%2=1;/1或或2表示踢进,否则为表示踢进,否则为0 else ggct0/2ct0%2=2;int cct2=0
17、;/存放两队点球比分存放两队点球比分 for(int ct0=0;ct0(n+1)/2;ct0+)printf(%d,ct0+1);/输出点球进行的回合数量,之间空格隔开输出点球进行的回合数量,之间空格隔开22/38 printf(Scoren);for(int ct0=0;ct02;ct0+)for(int ct1=0;ct1(n+1)/2;ct1+)if(ggct1ct0=1)printf(O);cctct0+;else if(ggct1ct0=2)printf(X);else printf(-);printf(%dn,cctct0);return 0;23/38CDOJ_1048Cloc
18、khttp:/ main()int t,p,hh,mm,sh,sm,res;scanf(%d,&t);for(p=1;p=12)hh=hh-12;sh=hh*60+mm;sm=mm*12;if(shsm)res=sh-sm;else res=sm-sh;if(res=360)res=720-res;if(res%2=0)printf(%dn,res/2);else printf(%d/2n,res);return 0;29/38CDOJ_1049 Flagstonehttp:/ DescriptionIntheQingshuiheCampusofUESTC,themostannoyproble
19、mtostudentsaretheflagstonepathonthelawn.Thedesignerseemssostupidthattheflagstonepathoftenmakestudentsstepinthegap.Nowaperfectstepiswantedinordertonotstepinanygapsandsteponeveryflagstone.Thesteplengthisrequiredtobeconstantwhilethelengthoftheflagstoneandgaparegivendifferent.Theproblemisaskingyoutotell
20、theminimumlengthoftheperfectstep.Tosimplifythequestion,thefootisconsideredtobeapointandtheverybeginningistheforeedgeofthefirstflagstone,whichalsomeansthefirstflagstonehasalreadybeensteppedon.30/38InputThefirstlineoftheinputcontainsoneintegerT,whichindicatethenumberoftestcases.Ineachtestcase,thefirst
21、linecontainsanintegerN(2=N=1e5),indicatingthenumberofflagstone.FollowingNlines,andeachlineisthelengthofoneflagstone.AndthefollowingN-1linesarethelengthofthegaps.Alldataisinteger.Allthelengthwillbeapositiveinteger,andthesumofthemwillfitina32bitsignedinteger.OutputOnelineforeachtestcasecontainsonlyone
22、numberindicatingtheanswer.Onerealnumberindicatingtheperfectsteplengthshouldbeaccuratetotwodigitsaftertheradixpoint.Ifitisimpossibletofindoutaperfectstep,justoutput“impossible”!31/38SampleInput221020531020551000SampleOutput15.00impossible32/38每个石板踏且仅踏一次每个石板踏且仅踏一次对于第对于第i块石板,一定是踏了块石板,一定是踏了i-1步到达的。步到达的。
23、设第设第i块石板的左界和有界离起点的距离块石板的左界和有界离起点的距离L,R,可,可以确定步长必须在区间以确定步长必须在区间L/(i-1),R/(i-1)之内。之内。问题转化为求多个区间的交。如果交集为空,则问题转化为求多个区间的交。如果交集为空,则答案为答案为impossible,否则输出交区间的左界。,否则输出交区间的左界。33/38#includeint a100001;int b100001;int main()int t,p;int n,i;double h,l;double hh,ll;double s;scanf(%d,&t);for(p=1;p=t;p+)scanf(%d,&n
24、);for(i=1;i=n;i+)scanf(“%d”,&ai);/n块石板块石板for(i=1;in;i+)scanf(“%d”,&bi);/n-1个间隔个间隔34/38s=0;l=a1+b1;/第二块左边界第二块左边界h=a1+b1+a2;/第二块右边界第二块右边界for(i=1;il)l=ll;if(hhh)h=hh;/计算步长区间的交集计算步长区间的交集if(l=h)printf(“%.2lfn”,l);/交集存在交集存在else printf(impossiblen);return 0;35/38这些题目都是这些题目都是08、09年的初赛题目,大家年的初赛题目,大家觉得难度如何?觉得
25、难度如何?太简单了!太简单了!对于我们公选课的那对于我们公选课的那20%的期中测试成绩的期中测试成绩还有什么好担心的。还有什么好担心的。希望在这周日的网络赛场上见到教室中的希望在这周日的网络赛场上见到教室中的每一位同学每一位同学36/38CDOJ_1043输出前输出前m大的数据大的数据http:/ sort 常规的思想是?常规的思想是?常规的结果是?常规的结果是?数据的特点是?数据的特点是?加速的方法是?加速的方法是?如果数据可以重如果数据可以重复呢?复呢?用最好的排序用最好的排序TLE各不相同各不相同 HASH处理冲突处理冲突39/38#include#include#define N 10
26、00000int aN;int main(void)int i,j,n,m,t;while(scanf(%d%d,&n,&m)=2)memset(a,0,N*sizeof(int);for(i=0;in;i+)scanf(%d,&t);at+N/2+;/下标对应数下标对应数+N/2,元素值存储重复次数,元素值存储重复次数 for(t=0,i=N-1;t=0;)if(ai0)/对应有数对应有数 printf(%d,i-N/2);/打印对应的数打印对应的数 t+;/计数器增加计数器增加 if(-ai=0)i-;else i-;printf(n);return 0;40/38CDOJ_1010最短路最短路http:/