国际大学生程序设计竞赛试题与分析(一)
ACM国际大学生程序设计竞赛简介

1.ACM国际大学生程序设计竞赛简介1)背景与历史1970年在美国TexasA&M大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕。
1977年,该项竞赛被分为两个级别:区域赛和总决赛,这便是现代ACM竞赛的开始。
在亚洲、美国、欧洲、太平洋地区均设有区域赛点。
1995至1996年,来自世界各地的一千多支s代表队参加了ACM区域竞赛。
ACM大学生程序设计竞赛由美国计算机协会(ACM)举办,旨在向全世界的大学生提供一个展示和锻炼其解决问题和运用计算机能力的机会,现已成为全世界范围内历史最悠久、规模最大的大学生程序设计竞赛。
2)竞赛组织竞赛在由各高等院校派出的3人一组的队伍间进行,分两个级别。
参赛队应首先参加每年9月至11月在世界各地举行的“区域竞赛(Regional Contest)”。
各区域竞赛得分最高的队伍自动进入第二年3月在美国举行的“总决赛(Final Contest)”,其它的高分队伍也有可能被邀请参加决赛。
每个学校有一名教师主管队伍,称为“领队”(faculty advisor),他负责选手的资格认定并指定或自己担任该队的教练(coach)。
每支队伍最多由三名选手(contestant)组成,每个选手必须是正在主管学校攻读学位的学生。
每支队伍最多允许有一名选手具有学士学位,已经参加两次决赛的选手不得再参加区域竞赛。
3)竞赛形式与评分办法竞赛进行5个小时,一般有6~8道试题,由同队的三名选手使用同一台计算机协作完成。
当解决了一道试题之后,将其提交给评委,由评委判断其是否正确。
若提交的程序运行不正确,则该程序将被退回给参赛队,参赛队可以进行修改后再一次提交该问题。
程序运行不正确是指出现以下4种情况之一:(1)运行出错(run-time error);(2)运行超时〔time-limit exceeded〕;(3)运行结果错误(wrong answer);(4)运行结果输出格式错误(presentation error)。
ACM国际大学生程序设计竞赛吉林大学选拔赛

ACM国际大学生程序设计竞赛吉林大学选拔赛暨吉林大学第一届程序设计竞赛竞赛宗旨进入二十一世纪以来,计算机与信息技术正在全球以令人难以置信的速度突飞猛进, 计算机应用发展水平已经成为国家竞争力的重要标志,网络与知识经济受到了世界各国政府的高度重视。
发展计算机和信息产业的关键在于培养高素质人才。
对一流人才的培养和竞争已成为各国政府、学校和科研机构、各大公司等的头等重要的战略任务。
在此宏观背景下,各种旨在考察学生计算机应用能力的校内、国内、国际竞赛为选拔和培养高素质人才提供了广阔的舞台。
ACM/ICPC作为具有国际权威性和影响力的国际大学生程序设计竞赛,已成为衡量大学生程序设计能力和学校计算机学科水平的重要标准之一。
ACM/ICPC 比赛是学校教务处组织的重点学生科技竞赛活动,是培养学生创新精神和能力的组成部分,受到全校同学的热切关注。
吉林大学2002年首次组队参赛,取得了较为理想的成绩。
为丰富校园学术气氛,进一步提高我校同学的计算机编程实践能力,鼓励和培养具有创新思维的人才,提供给更多学生展示自己才能的机会。
我校将举办2003年ACM/ICPC选拔赛暨吉林大学首届程序设计竞赛。
本次比赛由吉林大学教务处、吉林大学计算机科学与技术学院主办,旨在从全校同学中选拔优秀的程序设计人才,作为新一届吉林大学ACM竞赛代表队的预备队员代表学校参加全国比赛,并对优秀选手进行奖励竞赛计划于2003年4月13日在吉林大学前卫校区举行。
竞赛组织竞赛由学校教务处和计算机科学与技术学院共同组成ACM/ICPC竞赛委员会,负责竞赛组织、指导和具体问题安排。
组长:赵继副组长:张长海、房蔓楠成员:戴继周、罗辉竞赛委员会下设竞赛裁判组,由郭东伟负责;竞赛常务组,由李强负责。
同时邀请吉林大学计算机领域知名专家组成顾问组。
成员:鞠九滨、金成植、周春光、孙吉贵、刘磊竞赛联系地点在前卫校区萃文楼443,联系电话5166476-3,联系人:郭东伟、李强。
ACM国际大学生程序设计大赛相关知识

ACM国际大学生程序设计大赛相关知识ACM国际大学生程序设计竞赛ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。
经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。
赛事目前由IBM公司赞助。
历史竞赛的历史可以上溯到1970年,当时在美国得克萨斯A&M大学举办了首届比赛。
当时的主办方是the Alpha Chapter of the UPE Computer Science Honor Society。
作为一种全新的发现和培养计算机科学顶尖学生的方式,竞赛很快得到美国和加拿大各大学的积极响应。
1977年,在ACM计算机科学会议期间举办了首次总决赛,并演变成为目前的一年一届的多国参与的国际性比赛。
迄今已经举办了29届。
最初几届比赛的参赛队伍主要来自美国和加拿大,后来逐渐发展成为一项世界范围内的竞赛。
特别是自1997年IBM开始赞助赛事之后,赛事规模增长迅速。
1997年,总共有来自560所大学的840支队伍参加比赛。
而到了2004年,这一数字迅速增加到840所大学的4109支队伍并以每年10-20%的速度在增长。
1980年代,ACM将竞赛的总部设在位于美国得克萨斯州的贝勒大学。
在赛事的早期,冠军多为美国和加拿大的大学获得。
而进入1990年代后期以来,俄罗斯和其它一些东欧国家的大学连夺数次冠军。
来自中国大陆的上海交通大学代表队则在2002年美国夏威夷的第26届和2005年上海的第29届全球总决赛上两夺冠军。
这也是目前为止亚洲大学在该竞赛上取得的最好成绩。
赛事的竞争格局已经由最初的北美大学一枝独秀演变成目前的亚欧对抗的局面。
国际大学生程序设计大赛(ACM-icpc)输入输出介绍

本类输入解决方案:
C语法: scanf("%d",&n) ; for( i=0 ; i<n ; i++ ) { .... } C++语法: cin >> n; for( i=0 ; i<n ; i++ ) { .... }
2012-3-26 12
输入第三类:
输入不说明有多少个Input Block,但以某个特殊输入为结束标志。 ex-3
2012-3-26 10
ex-2源代码:
#include <stdio.h> int main() { int n,i,a,b; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d %d",&a, &b); printf("%d\n",a+b); } }
2012-3-26 11
ACM程序设计
输入输出格式
2012-3-26
1
ACM题目特点
由于ACM竞赛题目的输入数据和输出 数据一般有多组(不定),并且格式多 种多样,所以,如何处理题目的输入输 出是对大家的一项最基本的要求。这也 是困扰初学者的一大问题。 下面,分类介绍:
2012-3-26
2
一个超级简单的题目(ex-1):
5
输入第一类:
输入不说明有多少个Input Block, 以EOF为结束标志。 参见:ex-1.
2012-3-26
6
ex-1源代码:
#include <stdio.h> int main() { int a,b; while(scanf("%d %d",&a, &b) != EOF) printf("%d\n",a+b); }
大学生程序设计竞赛试题(正式赛)

中原工学院第一届大学生程序设计竞赛正式比赛试题主办:中原工学院教务处学生处校团委计算机学院承办:中原工学院计算机学院地点:计算机学院实验中心406实验室时间:2010年4月11日【试题一】兔子【题目描述】兔子具有很强的繁殖能力。
一对成年兔子每个月可以繁殖一对小兔子,而一对小兔子经过m个月之后,就会长成一对成年兔子。
通过分析,我们可以看出:若m=2的时候,每个月兔子的对数构成了一个Fibonacci数列。
但是,若m<>2,这个问题看起来就不那么简单了。
你的任务是计算:假定初始只有一对兔子,那么,经过d个月之后,共有多少对兔子?可以假定,在此阶段没有任何兔子死亡。
【输入】输入包括多组测试数据。
每组测试数据的一行中包括2个整数m(1<=m<=10),d(1<=d<=30)。
当测试数据遇到一行中有两个0时,即m=d=0,测试数据结束。
【输出】针对每组测试数据,在每一行输出经过d个月后共有多少对兔子。
【输入样例】2 33 50 0【输出样例】59【试题二】网页浏览器【题目描述】Mozilla Firefox是一个自由的,开放源码的网页浏览器,适用于Windows, Linux 和MacOS X等平台。
Firefox火狐校园大使是Mozilla开源社区项目的一部分,针对在校的高年级本科生和研究生以及众多技术爱好者,在校园中推广开源项目和开放技术,让更多的开发人员受益于Mozilla的开放技术和免费资源。
你很荣幸得到了这样一个机会,为Firefox编写一个重要的导航模块。
正如上图所示,导航模块要接受用户的后退、前进、进入用户输入的网址以及清空浏览记录等操作。
【输入】为了简化问题,用户所有的操作都以字符的形式从标准输入读入。
每一行描述一个操作,各操作的格式和功能如下所示:操作功能back 如果当前页面不是第一个页面,则跳到到前一个页面,并输出这个页面的网址forward 如果当前页面不是最后一个页面,则跳到到后一个页面,并输出这个页面的网址url 网址跳转到用户输入的网址(网址不含空格)clear 清空浏览记录(当前页面除外)exit 退出浏览器浏览器启动时默认进入中原工学院的主页” ”【输出】对于每一个需要输出网址的操作,输出对应的网址。
ACM 国际大学生程序设计竞赛(ICPC) 规则

ACM 国际大学生程序设计竞赛(ICPC) 规则.txt其实全世界最幸福的童话,不过是一起度过柴米油盐的岁月。
一个人愿意等待,另一个人才愿意出现。
感情有时候只是一个人的事,和任何人无关。
爱,或者不爱,只能自行了断。
发信人: delphiking (brenda), 信区: ACM_ICPC 标题: ACM 国际大学生程序设计竞赛(ICPC) 规则发信站: 兵马俑BBS (Mon Aug 22 10:45:30 2005), 本站(202.117.1.8)ACM 国际大学生程序设计竞赛(ICPC) 规则竞赛宗旨ACM国际大学生程序设计竞赛(ICPC)是由ACM协会提供给大学生的一个展示和提高解题与编程能力的机会。
ACM国际大学生程序设计竞赛亚洲赛区邀请亚洲学生参加,以增进友谊,开展编程方面的公平竞赛。
地区预赛组织ACM竞赛中由代表高等教育机构的学生组队参加2-4轮比赛,首先是每年10月至12月举行的地区预赛,每个赛区的第一名队伍自动取得参加决赛的资格。
(地区预赛前的选拔规则参见下一章《地区二级预赛和学校选拔赛》)国际大学生程序设计竞赛的规则由ACM世界竞赛决赛指导委员会制订。
其中,竞赛主任是负责人,由竞赛主任独立负责解释竞赛规则。
当遇到无法预料的情况时,竞赛主任有权作出最终决定。
亚洲地区包括亚洲所有的地区和国家,例如香港、台湾、韩国、朝鲜、日本、中国、新加坡、马来西亚、泰国、菲律宾、印度尼西亚、印度、斯里兰卡、缅甸、越南、土耳其、澳门,蒙古、西伯利亚地区、巴基斯坦、孟加拉国、中亚地区、以色列、伊朗以及中东国家等。
亚洲赛区在地区竞赛主任的指导下进行管理。
在获得竞赛主任的同意的前提下,由地区竞赛主任负责执行亚洲赛区的规则和指导方针。
每年由地区竞赛主任在亚洲选择几个比赛地点举办亚洲赛区的竞赛,地区竞赛主任根据ACM国际大学生程序设计竞赛指导方针负责计划、组织和举行亚洲赛区的比赛。
亚洲赛区不按照政治概念来分割赛区,参加决赛的队伍代表学校,而不代表政治概念上的地区。
【综合】Acm竞赛简介
Parity(ceoi99)(肖天)
• 建立sum数组,sum[i]表示从1到i之和是奇(true)还是偶 (false),sum[0]=false。这样题目中给的任意问题(a,b) 的答案都可以用sum[b] xor sum[a-1]表示。 • 开始我们并不知道sum[1..n]的值,不妨设为false,这时任意 sum[a],sum[b]都是独立的。对于每对问答(a,b,c),都可以 知道sum[b] xor sum[a-1]=c,由此把sum[b]和sum[a-1] 联系起来。这步操作可以用并查集完成,对于问答(a,b,c)如 果sum[a-1],sum[b]不属于一个集合就把它们并起来,否则 如果sum[a-1] xor sum[b]不等于c则说明出现矛盾,输出总 句数,退出。 • 对于不出现矛盾的sum数组,对于每个集合分为两个部分,我 们指定其中一个部分为true,另一个部分为false,则可以确定 sum数组,利用sum[i] xor sum[i-1]可以求出第i位的数字, 由于不同集合之间没有问答出现,所以此数列是一可行解,证 明算法正确。
• 但有时却是最好的办法
22
Pizza Anyone? (ZOJ 1219)
• 题目大意: 你需要为你和你的朋友们订一个皮萨。 每个朋友都会告诉你他们想和不想放进皮萨 里的东西。 你是否能订一个皮萨,让他满足每个人 至少一个条件。 假设一共有16种东西可以放进皮萨。
23
2 65536
16
是个对计算机很 小的数
3
ACM
ACM (Association for Computing Machinery) 成立于计算机诞生次年,是目前计算机学界中历史最 悠久、最具权威性的组织,是推进信息技术专业人员 和学生提高技巧的主要力量。ACM通过提供前沿技 术信息和从理论到实践的转化,为其全球7.5万名成 员服务,并已经成为信息科技领域的一个基本信息来 源。
第八届程序设计大赛初赛试题及答案
第八届程序设计大赛初赛试题说明:请将所有答案写到试卷第1页及第2页。
一、读程序写结果(40分)1、(5分)2、(5分)3、(10分)结果:结果:结果:4、(10分)5、(5分)6、(5分)结果:结果:结果:二、代码填空(30分)1、(5分)2、(5分)空一:____acm / lg (5分)空一:if(begin>end) return (5分)3、(12分)4、(8分)空一:siruan /= 10 (3分)空一:s[i] - '0' (4分)空二:hm - lg (3分)空二:siruan[sum % 11] (4分)空三:lghm = acm(lghm) (6分)三、思维题(15分)数据1:T1=1,T2=2,T3=3,T4 = 4 数据2:T1=1,T2=2,T3=5,T4 = 10 答案:(acm)1 2->(siruan) 2min 答案:(acm)1 2->(siruan) 2min (acm) <-1 (siruan) 1min (acm) <-1 (siruan) 1min(acm) 1 3->(siruan) 3min (acm) 5 10->(siruan) 10min(acm) <-1 (siruan) 1min (acm) <-2 (siruan) 2min(acm) 1 4-> (siruan) 4min (acm) 1 2-> (siruan) 2min最短时间:2+1+3+1+4 = 11min 最短时间:2+1+10+2+2 = 17min数据3:T1 = 5,T2 = 2,T3=1,T4=10,T5=8 答案:(acm)1 2->(siruan) 2min(acm) <-1 (siruan) 1min(acm) 8 10->(siruan) 10min(acm) <-2 (siruan) 2min(acm) 1 2-> (siruan) 2min(acm) <-1 (siruan) 1min(acm) 1 5 ->(siruan) 5min最短时间:2+1+10+2+2+1+5 = 23min四、编程题(15分)程序代码:#include<stdio.h>#include<string.h>int s[110];int main(){int i;int a, n, m;while (scanf("%d%d", &a, &n)!=EOF){memset(s, 0x00, sizeof(s));m = n;for (i=0; i<m; i++){s[i] += a * (n--);s[i+1] = s[i] / 10;s[i] %= 10;}if (s[m]) printf("%d", s[i]);for (i=m-1; i>=0; i--)printf("%d", s[i]);printf("\n");}return 0;}一、读程序写结果(40分)1、(5分)#include <stdio.h>int main(){char acm[] = "I love acm!";char siruan[] = "I love siruan!";char def[] = "Welcome to join us!";int chose = 0;switch (chose){case 0: printf("%s\n", acm);case 1: printf("%s\n", siruan);default : printf("%s", def);}return 0;}输出结果:2.(5分)#include <stdio.h>int main(){int acm = 0, siruan = 1;if (acm = siruan) printf("%s", "May you success!");else printf("%s", "May you success,too!");return 0;}输出结果:3.(10分)#include <stdio.h>#include <math.h>int main(){int i,j,k,n;char lghm[14]="ILOVEACMSIRUAN";n = 3;for (i=0; i<n-1; i++) printf(" ");printf("%c\n",lghm[0]);for (i=1; i<n; i++){for (j=abs(n-i-1); j>0; j--) //abs(n)返回值为整形n的绝对值printf(" ");printf("%c",lghm[2*i-1]);for (k=1; k<=2*i-1; k++) printf(" ");printf("%c\n",lghm[2*i]);}for (i=n; i<=2*n-3; i++){for (j=abs(n-i-1); j>0; j--) printf(" ");printf("%c",lghm[2*i-1]);for (k=1; k<=4*n-5-2*i; k++) printf(" ");printf("%c\n",lghm[2*i]);}for (i=0; i<n-1; i++) printf(" ");printf("%c\n",lghm[4*n-5]);return 0;}输出结果:4.(10分)#include <stdio.h>#include <string.h>struct Student{char name[20];int num;} stu[5];{stu[0].num = 521; strcpy(stu[0].name, "sichuan wenchuan");stu[1].num = 521; strcpy(stu[1].name, "bless");stu[2].num = 420; strcpy(stu[2].name, "sichuan yaan");stu[3].num = 420; strcpy(stu[3].name, "love");stu[4].num = 420; strcpy(stu[4].name, "god");}void swap(int a, int b){struct Student tmp;tmp.num = stu[a].num;stu[a].num = stu[b].num;stu[b].num = tmp.num;strcpy(, stu[a].name);strcpy(stu[a].name, stu[b].name);strcpy(stu[b].name, );}void bubble_sort(int n){int i,j,flag,temp;for(i = 0; i < n-1; i++){flag = 1;for(j = 0; j < n-i-1; j++){if(stu[j].num > stu[j+1].num){swap(j, j+1);flag = 0;}else if (stu[j].num == stu[j+1].num && strcmp(stu[j].name,stu[j+1].name)<0){ swap(j, j+1);}}if(flag) break;}}int main(){init();bubble_sort(5);for (i=0; i<5; i++)printf("%-4d%s\n", stu[i].num, stu[i].name);return 0;}输出结果:6.(5分)#include <stdio.h>int acm(){int lg = 1314520;int hm = 0;while(lg > 0){hm = hm * 10 + lg % 10;lg /= 10;}return hm;}int main(){int siruan = acm();printf("%d", siruan);return 0;}输出结果:二、代码填空(30分)1.(5)如果没有计算器,我们如何求3的平方根?可以先猜测一个数,比如1.5,然后用3除以这个数字。
“知乎杯”2018CCF大学生计算机系统与程序设计竞赛贪心算法(greedy)
“知乎杯”2018CCF⼤学⽣计算机系统与程序设计竞赛贪⼼算法(greedy)-->贪⼼算法1)题解•分别⽤V0、V1和V>=2表⽰度为0、1以及⾄少为2的顶点集合•对于每个顶点,维护三个属性:•degree 邻居的个数•degree2邻居中度为2的顶点数•id 编号Pseudo-code•initialize V0, V1, V>=2 and (degree, degree2, id) of each node•while G is not empty•if V0 is not empty•choose v ∈ V0 with the smallest id•output v, delete v from V0 and G•else if V1 is not empty•choose v ∈ V1 with the smallest id, and find the neighbor u of v•output v, delete v from V0 and G, delete u from V1(or V>=2) and G•else•choose v ∈ V>=2 with the largest (degree, degree2, id)•delete v from V>=2 and G索引的维护•需要注意的是,每个顶点的属性以及顶点集合V0、V1和V>=2并⾮⼀成不变。
•当从图中删去某个顶点u时,u邻居的degree均会减⼀;如果u的degree恰好为2,那么u邻居的degree2也会减⼀。
•如果某个邻居v的degree恰好从3减少到2或从2减到1,那么还会进⼀步影响到v的邻居的degree2属性。
•对于那些degree减⼀的顶点,还需要相应地更新V0、V1和V>=2。
Delete Node u from G•for v ∈ Neighbor(u)•v.degree decreases by one•if u.degree == 2 then v.degree2 decreases by one•if v.degree == 0•move v from V1 to V0•else if v.degree == 1•move v from V>=2 to V1•find the only neighbor w of v•w.degree2 decreases by one•else if v.degree == 2•for w ∈ Neighbor(v) do w.degree2 increases by one2)复杂度分析V0和V1 {node_id}•插⼊、删除顶点,但每个顶点最多⼀次;•查询id最⼩的顶点。
大学生程序设计竞赛研究与实践
一
、
引言
如 果 多支 队伍 解题 数量 相 同 ,则根 据解 题 总时 间短 的优先 胜 出 ,
A M 国 际 大 学 生 程 序 设 计 竞 赛 ( C I tra in l C A M n en to a C le it r gam n o t s ,简称 AM IP )是 由 AM组 o lg a eP or m igCn e t C/ CC c
每 错误 提 交一 次要 增加 惩 罚时 间 。正确 解题 数最 多且 总用 时最 少
的队伍 为 冠军 。
织 的年 度性 竞 赛 ,它始 于 17 ,是全 球 大学 生展 示编 程 能力 、 90年 解 决 问题 能力 和 团 队合 作 能力 的平 台 。 17 年举 办 了首届 总 决 97
30多支 队伍 近 10 人 参赛 。本专科 学 生 同堂参 赛 ,分 开划 分 等 0 00 级 ,高 职学 生也 参 与 了这个 AM竞 赛平 台,约 占参 赛总 人数 的三 C
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国际大学生程序设计竞赛试题与分析(一)
郭嵩山;崔吴
【期刊名称】《现代计算机:上半月版》
【年(卷),期】2000(000)085
【总页数】5页(P89-93)
【作者】郭嵩山;崔吴
【作者单位】中山大学信息科学与技术学院计算机科学系;中山大学信息科学与技术学院计算机科学系
【正文语种】中文
【中图分类】TP311
【相关文献】
1.推动世界大学生程序设计竞赛(ACM/ICPC)在中国的发展——《世界大学生程序设计竞赛(ACM/ICPC)高级教程》建设实践 [J], 秦绪好;孟欣
2.国际大学生程序设计竞赛试题与算法分析(三):动态规划… [J], 郭嵩山;陈明睿
3.国际大学生程序设计竞赛试题与分析(四):动态规划及其… [J], 谢剑辉;郭嵩山
4.国际大学生程序设计竞赛试题与算法分析(二) 回溯算法 [J], 郭嵩山;吴汉荣
5.北京师范大学大学生在第38届ACM国际大学生程序设计竞赛全球总决赛中取得好成绩 [J], 肖希
因版权原因,仅展示原文概要,查看原文内容请购买。