当前位置:文档之家› ACM题目

ACM题目

ACM题目
ACM题目

1002: [NKPC1]Lucy的难题

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :5167(824 users)Accepted Submit :785(502 users)Page View : 12630

Font Style: Aa Aa Aa

Lucy上了初中,她很喜欢数学,经常做数学奥林匹克的题目,可是今天她遇到了难题,于是就向她在南开大学上学的哥哥Feagle请教,聪明的哥哥不一会功夫就编程解决了妹妹的问题(^_^,南开大学的学生就是优秀)!妹妹的题目是这样的:对给定的f(n) 当n>=50025002 的时候,f(n)=n-5;当n<50025002 的时候,f(n)=f(f(n+2005))。现在请您试试编程解决Lucy 的难题!

Input

输入有多个测试数据,每行一个-2147483647

Output

每行输出一个对应的f(n)

Sample Input

50025002

50025000

Sample Output

50024997

50026995

Hint

递归嵌套层数过多会导致Runtime Error 或Memory Limit Exceeded

1008: [NKPC2]三食堂宣传栏

Time Limit: 2000 ms Memory Limit: 10000 kB

Judge type: Multi-cases(Detailed Mode - 10 cases)

Total Submit :1079(228 users)Accepted Submit :271(176 users)Page View : 6052

Font Style: Aa Aa Aa

在南开大学,三食堂外的宣传栏是一个竞争很激烈的资源,每天总有大量的海报张贴,后贴的往往会盖住原先的,为此很多学生抱怨。学校相关部门下决心解决这个问题,他们要求海

报在张贴的前一天登记,然后他们根据各海报申请的位置确定第二天要贴哪些海报。选择的标准就是:海报的数量尽可能多,且不能相互重叠。

学校相关部门委托你编程选择最优的方案。

为了简化问题我们规定:

1.宣传栏用一个区间[-9999,9999]来表示;

2.海报的高度均与宣传栏的高度相同,各海报要登记两个整数left,right(right>left),

表示传单要占据区间[left,right];

3.其中左右边框left和right没有文字,所以可以重叠;

4.要求海报张贴的数量尽可能多,以最大程度满足需求。

Input

输入的第一行是一个整数n (n<1000),表示要张贴的海报张数。

下面有n行,每行两个整数left, right (不一定按大小顺序排列,-9999

-9999

Output

输出为一个整数,表示要张贴的海报数。

Sample Input

3

6 4

1 4

3 5

Sample Output

2

1010: [NKPC2]二主楼找座

Time Limit: 2000 ms Memory Limit: 10000 kB

Judge type: Multi-cases(Detailed Mode - 10 cases)

Total Submit :1336(281 users)Accepted Submit :242(194 users)Page View : 5420

Font Style: Aa Aa Aa

二主楼建成了,可以自习的教室也多了,所以,往常从不自习的Rock也开始上自习了。二主楼虽然很大而且座位众多,但找到满意座位也确实能算一门学问……

由于Rock找座不是很有经验,而且他还有一些特殊的要求,所以Rock请你来帮他选择座

位。

Rock 对于座位的要求有:

1.旁边有另一个空座位,可以是左边,也可以是右边(放书包用的...);

2.为了环境相对稳定,满足要求1的同时,Rock的座位必须是离两边过道最远的;

3.在教室的最后一排(-__-!)。

为了使问题更加明确,我们做以下假定:

1.只考虑教室最后一排中间部分的座位,两边就是过道;

2.每个座位都有一个编号,若有N(1<=N<=50)个座位,则座位编号从左到右依次为

0,1,2,…,N-1,

3.输入数据使用一个长度等于座位数的字符串Seat 表示,字符串中的每一个字符对应一

个座位的状态,其中的E(大写字母)表示座位没人,P(大写字母)表示座位已经有人了。

例如:Seat="EPEPEEE" 表示以下的情况:

现在需要你来找出满足Rock要求的座位的编号。

Input

输入数据的第一行是一个数字N,(1<=N<=50),表示该教室最后一排有N个座位。

第二行是一个字符串,表示字符串seat。

Output

输出只有一行,即为你所找到的座位的编号。

如果有多个符合条件的座位,则仅输出其中编号最小的那个;

如果不存在这样的座位,输出-1。

Sample Input

7

EPEPEEE

Sample Output

4

1019: 计算A+B (超级大数相加)

Time Limit: 2000 ms Memory Limit: 10000 kB

Judge type: Multi-cases

Total Submit :1094(387 users)Accepted Submit :416(333 users)Page View : 6234

Font Style: Aa Aa Aa

计算2个超级大数的和

Input

输入只有2个超级大数A,B,以空格分开。

A,B最多有100位。

Output

输出只有一个数即为A、B之和。

Sample Input

111111111111111111111111111 111111111111111111111111112

Sample Output

222222222222222222222222223

1020 小学生游戏

某天,无聊的小杰叫上几个同学玩游戏,其中有比较笨的小凤,比较傻的小雪,可爱的小鑫和自以为是的小练。他们去找聪明的小艺去给他们当裁判。判定谁取得游戏胜利。而这个游戏是:由小艺给出一个数 a ,再给出一个数 b ,经过规定的运算,使得数 a 变换成数 b ,且使用最少的变换次数n .谁先说对这个n ,谁就取得胜利。当然,因为都是小学生,所以假定如果n>6 ,就算是没有答案。那么裁判小艺试图通过编程来使自己尽快的获得答案。请你帮帮他吧......

问题描述:

题目给出数a(a是一个正整数,不超过50位),再给出目标数b(同样是一个正整数,不超过50位),

数的运算有三种:

1:使当前数加上1985429

2:使当前数加上2006

3:使当前数乘2

需要你求出这个最小的n,如果n>6,输出-1。(此为负一)。

例1:小艺给出数a=1,给出数b=1987437

那么最快我们经过3次指定运算可以使1变成1987437

1*2=2;(第3种变换)

2+1985429=1985431;(第1种变换)

1985431+2006=1987437;(第2种变换)

例2:小艺给出数a=1,给出数b=128

那么最快我们经过7次指定运算可以使1变成128

1*2*2*2*2*2*2*2=128(均采用第3种变换),但是因为n>6,所以按题意输出-1。

Input

输入仅包含两个整数A、B,每行一个数字,0

Output

输出只有一行,即为最少的变换次数n ,若n>6 则输出-1。

请注意结尾含有一个换行。

Sample Input

1

1987437

Sample Output

3

1021: [NKPC2]小S的子集

Time Limit: 2000 ms Memory Limit: 10000 kB

Judge type: Multi-cases(Detailed Mode - 10 cases)

Total Submit :665(185 users)Accepted Submit :203(138 users)Page View : 4503

Font Style: Aa Aa Aa

==============================================

【第二届"我为程序狂"[最终数据]】

===============================================

小S正在学习集合,他对各种有奇妙特征的集合很感兴趣。现在他在研究集合SP。

SP 是所有3的幂的集合,即SP={ 1,3,9,…… }。

他想知道SP 的所有子集中,按元素之和按递增顺序排在第n位的集合(SPn)是什么。

他知道你是编程高手,所以他请求你帮他解决这个问题。

Input

输入数据只有一个整数n(1

Output

输出即为SPn的元素。按递增顺序,每行输出一个。即每输出一个元素,就换一次行。

Sample Input

50

Sample Output

1

81

243

1038: Lotto

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :410(96 users)Accepted Submit :128(88 users)Page View : 3269

Font Style: Aa Aa Aa

In the German Lotto you have to select 6 numbers from the set {1,2,...,49}. A popular strategy to play Lotto - although it doesn't increase your chance of winning - is to select a subset(子集)S containing k (k>6) of these 49 numbers, and then play several games with choosing numbers only from S. For example, for k=8 and S = {1,2,3,5,8,13,21,34} there are 28 possible games: [1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ...

[3,5,8,13,21,34].

Your job is to write a program that reads in the number k and the set S and then prints all possible games choosing numbers only from S.

Input

The input file will contain one or more test cases. Each test case consists of one line containing several integers separated from each other by spaces. The first integer on the line will be the number k (6 < k < 13). Then k integers, specifying the set S, will follow in ascending(上升攀登)order. Input will be terminated by a value of zero (0) for k.

Output

For each test case, print all possible games, each game on one line. The numbers of each game have to be sorted in ascending order and separated from each other by exactly one space. The games themselves have to be sorted lexicographically, that means sorted by the lowest number first, then by the second lowest and so on, as demonstrated in the sample output below. The test cases have to be separated from each other by exactly one blank line. Do not put a blank line after the last test case.

Sample Input

7 1 2 3 4 5 6 7

8 1 2 3 5 8 13 21 34

Sample Output

1 2 3 4 5 6

1 2 3 4 5 7

1 2 3 4 6 7

1 2 3 5 6 7

1 2 4 5 6 7

1 3 4 5 6 7

2 3 4 5 6 7

1 2 3 5 8 13

1 2 3 5 8 21

1 2 3 5 8 34

1 2 3 5 13 21

1 2 3 5 13 34

1 2 3 5 21 34

1 2 3 8 13 21

1 2 3 8 13 34

1 2 3 8 21 34

1 2 3 13 21 34

1 2 5 8 13 21

1 2 5 8 13 34

1 2 5 8 21 34

1 2 5 13 21 34

1 2 8 13 21 34

1 3 5 8 13 21

1 3 5 8 13 34

1 3 5 8 21 34

1 3 5 13 21 34

1 3 8 13 21 34

1 5 8 13 21 34

2 3 5 8 13 21

2 3 5 8 13 34

2 3 5 8 21 34

2 3 5 13 21 34

2 3 8 13 21 34

2 5 8 1

3 21 34

3 5 8 13 21 34

1052: 圆的重叠问题

Time Limit: 1500 ms Memory Limit: 10000 kB

Judge type: Multi-cases

Total Submit :1160(261 users)Accepted Submit :330(239 users)Page View : 5461

Font Style: Aa Aa Aa

确定平面一般位置上n个互相交叠的圆所形成的区域数。

所谓互相交叠是指任意两个圆相交在不同的两点上,因此,不相交或相切的圆是不允许的。一般位置指不允许存在三个或三个以上的圆有一个公共交点。

Input

输入数据包含多组测试数据,每组测试数据仅包含一个正整数n,即平面一般位置上互相交叠的圆的个数。(1≤n≤65535)

Output

对每组输入数据,输出一个数,即这n个圆所形成的区域数。

Sample Input

1

6

Sample Output

2

32

Hint

本题目测试规模较大,请使用scanf()函数读入数据,printf()函数输出数据,以避免超时。

1053: 哥德巴赫猜想

Time Limit: 4000 ms Memory Limit: 10000 kB

Total Submit :1619(245 users)Accepted Submit :416(180 users)Page View : 5669

Font Style: Aa Aa Aa

哥德巴赫猜想:对于任一个大于或等于4的偶数n,至少存在一对素数p1和p2,使得n =p1+p2。

这个猜想目前既没有被证明,也没有被否定。没有人确定这个猜想是否成立。但是,如果对于给定的一个偶数,存在这样一对素数的话,人们是可以找到的。我们的要求是编写一个程序,对于给定的一个偶数,计算出存在多少对素数满足这个猜想。

在输入中给出一系列偶数。对于每一个数,程序输出存在的素数对数。注意:我们关心的是真正不同的数字对数,所以不能将(p1,p2)和(p2,p1)作为不同的两对数。

Input

每行给出一个整数。假设每个整数为偶数,并且大于或等于4,小于等于2的15次方。输入文件的结尾用0表示。

Output

每个输出行包含一个整数。不要在输出中出现其他字符。

Sample Input

6

10

12

Sample Output

1

2

1

1073: Number Triangle

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :785(156 users)Accepted Submit :252(139 users)Page View : 3576

Font Style: Aa Aa Aa

Consider the number triangle shown below. Write a program that calculates the highest sum of numbers that can be passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.

7

3

8

8

1

2

7

4

4

4

5

2

6

5

In the sample above, the route from 7 to 3 to 8 to 7 to 5 produces the highest sum: 30.

Input

There are multiple test cases.The first line of each test case contains R (1 <= R <= 1000), the number of rows. Each subsequent line contains the integers for that particular row of the triangle. All the supplied integers are non-negative and no larger than 100.

Output

Print a single line containing the largest sum using the traversal specified for each test case.

Sample Input

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

Sample Output

30

1081: All in All

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :352(73 users)Accepted Submit :117(66 users)Page View : 2846

Font Style: Aa Aa Aa

You have devised a new encryption technique which encodes a message by inserting between its characters randomly generated strings in a clever way. Because of pending patent issues we will not discuss in detail how the strings are generated and inserted into the original message. To validate your method, however, it is necessary to write a program that checks if the message is really encoded in the final string.

Given two strings s and t, you have to decide whether s is a subsequence of t, i.e. if you can remove characters from t such that the concatenation of the remaining characters is s. Input

The input contains several testcases. Each is specified by two strings s, t of alphanumeric ASCII characters separated by whitespace. Input is terminated by EOF.

Output

For each test case output, if s is a subsequence of t.

Sample Input

sequence subsequence

person compression

VERDI vivaVittorioEmanueleReDiItalia

caseDoesMatter CaseDoesMatter

Sample Output

Yes

No

Yes

No

1115 嫦娥姐姐的玉兔

传说嫦娥姐姐在月宫里闷得慌,想养一些玉兔。

于是,她在第一个月的时候,找来了一对新生的玉兔,第二个月它们成年,第三个月生下性别相反的玉兔一对,以后每月生产一对性别相反的玉兔,而所生玉兔亦在第二个月成年,第三个月生产另一对玉兔,以后亦每月生产一对玉兔。

嫦娥姐姐非常爱护她的兔子,玉兔都不会死亡,她想要知道,第n个月的时候,她一共养了多少对兔子。

Input

输入数据包括多组测试数据,每组测试数据仅有一行,仅包含一个数n。(n<=80)

Output

对每组测试数据,输出一行,即第n个月时,月宫里的兔子有几对。

Sample Input

2

13

Sample Output

1

233

1133: 铁皮容器

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :156(52 users)Accepted Submit :57(45 users)Page View : 2931

Font Style: Aa Aa Aa

使用白铁皮制作圆柱容器(有盖),其中每个容器耗用的铁皮量(表面积)固定为1000平方厘米。在已知容器的容积情况下,编程计算容器底半径的最小可能取值。其中容器的容积为整数,半径精确到小数点后面一位。

Input

输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数。后面紧接着k行,每行对应一个测试例,含一个整数n(0<=n<=20000),代表容积。

Output

每个测试例对应一行输出,含一个实数,表示半径的值,若无解则输出“NO”。

Sample Input

2

1000

3000

Sample Output

2.1

NO

1159: Triangle

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :215(63 users)Accepted Submit :69(60 users)Page View : 2309

Font Style: Aa Aa Aa

A lattice point is an ordered pair (x, y) where x and y are both integers. Given the coordinates of the vertices of a triangle (which happen to be lattice points), you are to count the number of lattice points which lie completely inside of the triangle (points on the edges or vertices of the triangle do not count).

Input

The input test file will contain multiple test cases. Each input test case consists of six integers x1, y1, x2, y2, x3, and y3, where (x1, y1), (x2, y2), and (x3, y3) are the coordinates of vertices of the triangle. All triangles in the input will be non-degenerate (will have positive area), and ?15000 ≤ x1, y1, x2, y2, x3, y3≤ 15000. The end-of-file is marked by a test case with x1 =y1 = x2 = y2 = x3 = y3 = 0 and should not be processed.

Output

For each input case, the program should print the number of internal lattice points on a single line.

Sample Input

0 0 1 0 0 1

0 0 5 0 0 5

0 0 0 0 0 0

Sample Output

6

1177: Rectangles

Time Limit: 9000 ms Memory Limit: 10000 kB

Total Submit :105(38 users)Accepted Submit :46(33 users)Page View : 1950

Font Style: Aa Aa Aa

A specialist in VLSI design testing must decide if there are some components that cover each other for a given design. A component is represented as a rectangle. Assume that each rectangle is rectilinearly oriented (sides parallel to the x and y axis), so that the representation of a rectangle consists of its minimum and maximum x and y coordinates.

Write a program that counts the rectangles that are entirely covered by another rectangle. Input

The input contains the text description of several sets of rectangles. The specification of a set consists of the number of rectangles in the set and the list of rectangles given by the minimum and maximum x and y coordinates separated by white spaces, in the format:

nr_rectangles

xmin1 xmax1 ymin1 ymax1

xmin2 xmax2 ymin2 ymax2

...

xmin n xmax n ymin n ymax n

For each set,there will be less than 5000 rectangles.

Output

The output should be printed on the standard output. For each given input data set, print one integer number in a single line that gives the result (the number of rectangles that are covered).

Sample Input

3

100 101 100 101

0 3 0 101

20 40 10 400

4

10 20 10 20

10 20 10 20

10 20 10 20

10 20 10 20

Sample Output

4

1200: Euclid's Game

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :185(46 users)Accepted Submit :59(42 users)Page View : 1871

Font Style: Aa Aa Aa

Two players, Stan and Ollie,

play, starting with two natural

numbers. Stan, the first player,

subtracts any positive multiple of

the lesser of the two numbers from

the greater of the two numbers,

provided that the resulting number

must be nonnegative. Then Ollie,

the second player, does the same

with the two resulting numbers,

then Stan, etc., alternately, until

one player is able to subtract a

multiple of the lesser number from

the greater to reach 0, and thereby wins. For example, the players may start with (25,7):

25 7

11 7

4 7

4 3

1 3

1 0

an Stan wins.

Input

The input consists of a number of lines. Each line contains two positive integers giving the starting two numbers of the game. Stan always starts.

Output

For each line of input, output one line saying either Stan wins or Ollie wins assuming that both of them play perfectly. The last line of input contains two zeroes and should not be processed.

Sample Input

34 12

15 24

0 0

Sample Output

Stan wins

Ollie wins

1215: 小鼠迷宫问题

Time Limit: 1500 ms Memory Limit: 10000 kB

Judge type: Multi-cases

Total Submit :180(45 users)Accepted Submit :60(36 users)Page View : 3340

Font Style: Aa Aa Aa

小鼠a与小鼠b身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿上,下,左,右4个方向进入未封闭的房间。小鼠a位于迷宫的(p,q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出所有通向小鼠b的最短道路。

编程任务

对于给定的小鼠的迷宫,编程计算小鼠a通向小鼠b的所有最短道路。

Input

本题有多组输入数据,你必须处理到EOF为止。

每组数据的第一行有3个正整数n,m,k,分别表示迷宫的行数,列数和封闭的房间数。接下来的k行中,每行2个正整数,表示被封闭的房间所在的行号和列号。最后的2行,每行也有2个正整数,分别表示小鼠a所处的方格(p,q)和小鼠b所处的方格(r,s)。

Output

对于每组数据,将计算出的小鼠a通向小鼠b的最短路长度和有多少条不同的最短路输出。每组数据输出两行,第一行是最短路长度;第2行是不同的最短路数。每组输出之间没有空行。如果小鼠a无法通向小鼠b则输出“No Solution!”。

Sample Input

8 8 3

3 3

4 5

6 6

2 1

7 7

Sample Output

11

96

1249: 分解素因子

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :538(258 users)Accepted Submit :301(254 users)Page View : 4840

Font Style: Aa Aa Aa

假设x是一个正整数,它的值不超过65535(即1

Input

输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。

Output

每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。

Sample Input

2

11

9828

Sample Output

11

2*2*3*3*3*7*13

1263: 粗心的物理学家

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :642(143 users)Accepted Submit :191(122 users)Page View : 3827

Font Style: Aa Aa Aa

世界著名的物理学家Albert正在计算的值。不幸的是,由于这项工作十分枯燥无味,这位伟大的物理学家得到了错误的答案。由于这一错误,它制造的几颗原子弹失去了控制,射向了五座重要的城市和一片热带雨林……

现在你的任务是帮助这位物理学家纠正这一错误,从而拯救世界。对于给定的n (n≤5*10^6),

计算代数式的值。

Input

输入数据由多组数据组成。每组数据一行,仅有一个整数,表示n的值。

Output

对于每组数据,输出代数式的值(小数点后保留12位有效数字)。

Sample Input

2

Sample Output

1.500000000000

1278: 区间相交问题

Time Limit: 1500 ms Memory Limit: 10000 kB

Judge type: Multi-cases

Total Submit :245(64 users)Accepted Submit :86(57 users)Page View : 3211

Font Style: Aa Aa Aa

给定x 轴上n 个闭区间。去掉尽可能少的闭区间,使剩下的闭区间都不相交。

编程任务:

给定n 个闭区间,编程计算去掉的最少闭区间数。

Input

第一行是正整数n,表示闭区间数。接下来的n行中,

每行有2 个整数,分别表示闭区间的2个端点。

Output

去掉的最少闭区间数。

Sample Input

3

10 20

10 15

20 15

Sample Output

2

1282: 计算循环冗余码

Time Limit: 1500 ms Memory Limit: 10000 kB

Total Submit :56(28 users)Accepted Submit :26(25 users)Page View : 2895

Font Style: Aa Aa Aa

计算机网络中采用循环冗余码来校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环冗余码,并随同原数据一起发送到接收方;接收方通过重新计算接收到的数据的循环冗余码,并和收到的循环冗余码进行比较,如果两者相同则可判定所收到的数据是正确的,否则说明数据是错误的。其中计算二进制数据的循环冗余码的计算过程如下:

1.协议事先约定一个二进制生成表达式,本题设为10011;

2.将待发送的二进制数据串的末尾加4个0;

3.将补上0的数据串按模2除法除于生成表达式,取余数;

4.该余数就是该二进制数据串的循环冗余码。

例如:

数据串为:1101011011

生成表达式为:10011

循环冗余码为:1110

计算过程如下:

根据上述的计算方法,请编写一个循环冗余码计算程序,假设二进制数据串的长度不超过20位,生成表达式固定为10011。

Input

输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数。后面紧接着k行,每行对应一个测试例,含一个N位二进制串(1<=N<=20),代表数据。

Output

每个测试例对应一行输出,含一个5位二进制串,表示循环冗余码。

Sample Input

2

1101011011

10101010

Sample Output

01110

01001

1430: Fibonacci

ACM练习题

ACM contests https://www.doczj.com/doc/012883775.html,

中庸之道(一) Time Limit: 1000 ms Memory Limit: 65535 kB Solved: 306 Tried: 1491 Description 读入三个整数a、b、c,找出中间数并输出。若有两个数相同,最大数作为中间数。Input 有多组测试数据。输入的第一行是整数T(0 int main() { int a,b,c,i,T; scanf("%d",&T); for(i=0;i

} return 0; } 或者 #include int main() { int a,b,c,T; scanf("%d",&T); while(T--) { //读入并处理当前组数据 } return 0; } 中庸之道(二) Time Limit: 1000 ms Memory Limit: 65535 kB Solved: 191 Tried: 629 Description 读入三个整数a、b、c,找出中间数并输出。若有两个数相同,最大数作为中间数。Input 有多组测试数据。每一组测试数据只有一行,分别为整数a、b和c,相邻两数之间有一个空格。该行没有其它多余的符号。如果一行三个数字均为0,表示输入结果,该行不需要处理。-2^31

ACM题

求体积 #include #include #define PI 3.1415927 int main() { double x; while(scanf("%lf",&x)!=EOF) { printf("%.3lf\n",(4.0*PI*x*x*x)/3.0); } return 0; } 求a+b II. #include #include #define N 1005 char A[N],B[N],sum[N]; int main() { int T,i,j,k,x,sign; while(scanf("%d",&T)!=EOF) { for(i=0;i

{ sum[x]=(A[j]-'0')+(B[k]-'0')+sign-10; sign=1; } } #include using namespace std; int main() { int a, b; while(cin >> a >> b) cout << a + b << endl; return 0; 求a+b #include using namespace std; int main() { int a,b,s; while(cin>>a>>b) { s=a+b; cout< #include int main() { char s[3],a,b,c,temp; while(scanf("%s",s)!=EOF) { a=s[0];b=s[1];c=s[2]; if(a>b) { temp=a; a=b;

acmicpc练习题

1、装箱问题:给定大小为S1,…,Sn的n个物件,其中0<Si≤1,寻找能够装进所有这些物件的最少数量的箱盒,每个箱盒容量为1。(提示:贪心法求解。) 2、已知一个包含n个元素的整型数组和一个整数K。试用O(NlogN)算法解决这样的问题:确定数组中是否存在两个数,它们的和等于给定的数K。一个数可以被使用两次。 例如,如果输入是8,5,2,7而K是12,则答案为yes(5和7)。 输入: 8 5 2 7 12 输出: yes 3、已知有2n个元素的无序数组a,试用O(n)算法将这2n个元素分别放入大小均为n的数组b和c。使得数组b中的所有元素均小于数组c中的任意元素。 输入: 5 7 10 4 2 6 9 1 8 3 5 输出: 4 2 1 3 5 7 10 6 9 8 (注意:输入第一行为1/2数组a的大小,第二行为数组a中的元素,输出时b、c数组中元素顺序不一定与示例一致)

4、令A为元素是0和1的N行N列矩阵。A的子矩阵S由形成方阵的任意一组相邻项组成。设计一种O(n2)算法,确定A中的全为1的最大子矩阵的阶数。 输入:(可以程序中初始化) 1 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 输出: 4 (输入:一个矩阵,输出:全为1的最大子矩阵阶数) (提示:动态规划解题。) 5、输入一批数据{34,27,56,12,25,78,94,36,58,90,66,77},从这 批数中找出最大值和第二大的值以及它们所在的位置。要求在同一个循环中既找出最大值又找出第二大值(只能使用一层循环)。不允许用排序的方法。 6、编写一个万年历程序。输入1900年后的某一年,要求显示该年份的日历, 日历以月份顺序排列,每月以星期顺序排列,类似于一般挂历上的格式。 7、一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的 习惯编排,每个页码都不含多余的前导数字0。例如,第6页用数字6表示,而不是06或006等。数字计数问题要求编写程序对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,3,4,……9. 8、用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2

ACM竞赛试题集锦

取石子游戏 Time Limit:1S Memory Limit:1000K Total Submit:505 Accepted:90 Description 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input 输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000。 Output 输出对应也有若干行,每行包含一个数字1或0,如果最后你是胜者,则为1,反之,则为0。 Sample Input

2 1 8 4 4 7 Sample Output 1 跳蚤 Time Limit:1S Memory Limit:1000K Total Submit:198 Accepted:44 Description Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。其中最后一个是M,而前N个数都不超过M,卡片上允许

有相同的数字。跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度。而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物。 比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务:他可以先向左跳10个单位长度,然后再连向左跳3次,每次15个单位长度,最后再向右连跳3次,每次18个单位长度。而持有卡片(12, 15, 18)的跳蚤,则怎么也不可能跳到距他左边一个单位长度的地方。 当确定N和M后,显然一共有M^N张不同的卡片。现在的问题是,在这所有的卡片中,有多少张可以完成任务。 Input 两个整数N和M(N <= 15 , M <= 100000000)。 Output 可以完成任务的卡片数。 Sample Input

ACM训练题集一

poj1035:拼写检查 时间限制: 2000毫秒内存限制: 65536K 提交总数: 11190 : 4140 说明 作为一个新的拼写检查程序的开发团队成员,你写的模块,将检查使用一切形式的所有已知的正确的话字典的 话的正确性。如果这个词在字典中缺席那么它可以取代正确的话(从字典)可以取得下列操作之一: 从单词的一个字母删去 ;在任意一个字母的单词一个字母 取代,插入一个?任意字母到单词 ,你的任务是编写程序,会发现每一个给定的单词从字典中所有可能的替代。 输入 输入文件的第一部分包含从字典中的所有单词。每个字中占有它自己的行。完成这部分是由一个单独的行上的单字符'#' 。所有的字是不同的。将有10000字的字典。 文件的下一部分,包含了所有的单词进行检查。每个字中占有它自己的行。这部分也完成了由一个单独的行上的单字符'#' 。将有最多50个字进行检查。 输入文件中的所有单词(从字典和被检查的词字)只包括小字母字符,每一个包含15个字符最多。 输出 写入到输出文件中完全检查它们在输入文件的第二部分中出现的顺序每个字一行。如果这个词是正确的(即它在字典中存在)写留言:“是正确的“,如果这个词是不正确的,那么先写这两个字,然后写字符。”:“(冒号),并在一个单独的空间写了所有可能的替代品,用空格隔开这些替代应在书面的顺序。其在字典中(在输入文件的第一部分)。出现,如果有这个字没有替换,然后换行,应立即按照冒号。 样例输入 我是有我更多的比赛,我太iF奖#我知道米的较量HAV OO或我的网络连接MRE#

输出范例 我是正确的认识到:奖米:我的我的比赛是正确的甲肝:已经有OO:太:我是正确的FI:我MRE:更多的我 poj3080:蓝色牛仔裤 时间限制: 1000毫秒内存限制: 65536K 提交总数: 6173 接受日期: 2560 说明 基因地理工程是IBM与国家地理学会,是分析,从成千上万的贡献者地图地球是如何填充DNA的研究伙伴关系,作为IBM的研究人员,你一直负责编写一个程序,会发现共性之间个人调查资料,以确定新的遗传标记,可与相关的DNA 片段。DNA碱基序列是指出在它们在分子中发现的顺序列出的氮基地。有四种碱基:腺嘌呤(A),胸腺嘧啶(T),鸟嘌呤(G),胞嘧啶(C)。一个6碱基的DNA序列可以作为TAGACC代表。鉴于一组DNA碱基序列,确定在所有序列中出现的最长的系列基地。 输入 输入到这个问题,将开始与行包含一个单一的整数n表示数据集的数目。每个数据集由以下几部分组成组成: ?一个正整数m(2 <= M <= 10)的碱基序列,在此数据集。 ?m行每片含60个碱基组成的单一碱基序列。 输出 对于每一个输入数据集,输出基地序列的最长共同所有的碱基序列。如果最长的公共子序列的长度小于3基地,显示字符串“没有显着的共性”。如果存在多个子序列相同的长度最长,只输出序列的按字母顺序排列第一。

ACM一期 基础训练计划

这个训练计划我也只是把我知道的知识点罗列出来而已. 其实acm还有很多方面的知识。 可能到acm生涯结束的时候还是无法把所有的知识都吃透 所以acm的知识能学多少算多少,知识重要的不是你知道的多,重要的是你能否熟练的运用他们! 题目注意事项: zoj:https://www.doczj.com/doc/012883775.html,/ grid:https://www.doczj.com/doc/012883775.html,/ hdu:https://www.doczj.com/doc/012883775.html,/ zquoj:也就是我们的oj 一.数据机构基础。 请自学完数据结构书:2,3,4,6,7,9.1,9.2.1 9.3 10 这几章,带*号可以暂时掠过,以后再看。然后自行完成oj DS开头的题目。 注意栈队列这些数据结构一般不用像书本那样写得那么严谨。在acm中,往往因为时间关系,一般写成简单的模式:请参考附件:栈与队列acm中的简单实现.txt 其它数据结构请自行简化。 二.其他数据结构 1.trie树 请看附件trie树的相关附件或到网上搜索。注意自己写好和简化模版。 Trie树最好使用静态分配实现! poj 3630 hdu 1251 2.并查集 Hdu:1558 1811 1829 1198 3.图论专题: 简单的说下图怎么存储。 图通常分为邻接表和邻接矩阵两种方式储存。 请先移步到数据结构书祥看这两种实现方式。 邻接表:我们知道要动态分配内存。这种方式有时会导致效率低下。我们可以模拟一下动态分配内存,详见附件静态分配。 这部分图论可参考 https://www.doczj.com/doc/012883775.html,/p-251720691.html 部分题目.这本书有讲解。 1.图的基本概念 poj:1659 2.图的遍历和活动问题 zoj:2110 1709 1649 2913 1060 2193 2412 1008 2165 1136 1361 1091 1083 poj:2935 1270 3687

ACM题目整理

题目来源:福州大学acm网站 代码:fpcdq 一、入门 熟悉ACM竞赛规则以及程序提交注意事项 例题: Problem 1000 A+B Problem Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description Calculate a + b. Input The input will consist of a series of pairs of integers a and b,separated by a space, one pair of integers per line. Output For each pair of input integers a and b you should output the sum of a and b in one line,and with one line of output for each line in input. Sample Input 1 5 2 3 Sample Output 6 5

My answer: #include main() { long a,b; while((scanf("%ld%ld",&a,&b))!=EOF) { printf("%ld\n",a+b); } } 详情参考https://www.doczj.com/doc/012883775.html,/faq.php 二、ACM分类 主流算法: 1.搜索//回溯 Problem 1019 猫捉老鼠 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description 一只猫和一只老鼠在10*10的迷宫中。迷宫中的每个方格可以是空的,或者含有障碍。猫和老鼠可以进入任意一个空的方格中。当他们相遇时,猫和老鼠在同一个方格中。但是,无论猫或老鼠都不能进入有障碍的方格。我们可以用字符组成的二维数组表示迷宫,如下图所示。

ACM经典算法及配套练习题

POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,p oj2255,poj3094) 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序(poj1094) (5)二分图的最大匹配(匈牙利算法) (poj3041,poj3020) (6)最大流的增广路算法(KM算法). (poj1459,poj3436) 三.数据结构. (1)串(poj1035,poj3080,poj1936) (2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299) (3)简单并查集的应用. (4)哈希表和二分查找等高效查找法(数的Hash,串的Hash) (poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503) (5)哈夫曼树(poj3253) (6)堆 (7)trie树(静态建树、动态建树) (poj2513) 四.简单搜索 (1)深度优先搜索(poj2488,poj3083,poj3009,poj1321,poj2251) (2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书page149): 1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533) 2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) (poj3176,poj1080,poj1159) 3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题) 六.数学 (1)组合数学:

Acm试题及答案

Acm试题及答案 1001 Sum Problem ............................................. 错误!未定义书签。1089 A+B for Input-Output Practice (I) ...................... 错误!未定义书签。1090 A+B for Input-Output Practice (II) ..................... 错误!未定义书签。1091 A+B for Input-Output Practice (III) .................... 错误!未定义书签。1092 A+B for Input-Output Practice (IV) ...................... 错误!未定义书签。1093 A+B for Input-Output Practice (V) ...................... 错误!未定义书签。1094 A+B for Input-Output Practice (VI) ..................... 错误!未定义书签。1095 A+B for Input-Output Practice (VII) ..................... 错误!未定义书签。1096 A+B for Input-Output Practice (VIII) ................... 错误!未定义书签。2000 ASCII码排序............................................ 错误!未定义书签。2001计算两点间的距离........................................ 错误!未定义书签。2002计算球体积.............................................. 错误!未定义书签。2003求绝对值................................................ 错误!未定义书签。2004成绩转换................................................ 错误!未定义书签。2005第几天.................................................. 错误!未定义书签。2006求奇数的乘积............................................ 错误!未定义书签。2007平方和与立方和.......................................... 错误!未定义书签。2008数值统计................................................ 错误!未定义书签。2009求数列的和.............................................. 错误!未定义书签。2010水仙花数................................................ 错误!未定义书签。2011多项式求和.............................................. 错误!未定义书签。2012素数判定................................................ 错误!未定义书签。2014青年歌手大奖赛_评委会打分............................... 错误!未定义书签。

ACM训练计划

ACM常用算法及练习 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换 第二阶段:练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。 5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp 6.博弈类算法。博弈树,二进制法等。 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统. 10. 双向广度搜索、A*算法,最小耗散优先. 相关的知识 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征 负边权最短路径 Bellman-Ford Bellman-Ford的Yen-氏优化 差分约束系统 Floyd 广义路径问题 传递闭包 极小极大距离/ 极大极小距离

Euler Path / Tour 圈套圈算法 混合图的Euler Path / Tour Hamilton Path / Tour 特殊图的Hamilton Path / Tour 构造 生成树问题 最小生成树 第k小生成树 最优比率生成树 0/1分数规划 度限制生成树 连通性问题 强大的DFS算法 无向图连通性 割点 割边 二连通分支 有向图连通性 强连通分支 2-SAT 最小点基 有向无环图 拓扑排序 有向无环图与动态规划的关系 二分图匹配问题 一般图问题与二分图问题的转换思路 最大匹配 有向图的最小路径覆盖 0 / 1矩阵的最小覆盖 完备匹配 最优匹配 稳定婚姻 网络流问题 网络流模型的简单特征和与线性规划的关系最大流最小割定理 最大流问题 有上下界的最大流问题 循环流 最小费用最大流/ 最大费用最大流

ACM题目

【题目 1】N皇后问题(含八皇后问题的扩展,规则同八皇后):在N*N的棋盘上,放置N个皇后,要求每一横行 每一列,每一对角线上均只能放置一个皇后,问可能的方案及方案数。 【题目 2】排球队员站位问题 ┏━━━━━━━━┓图为排球场的平面图,其中一、二、三、四、五、六为位置编号,┃ ┃二、三、四号位置为前排,一、六、五号位为后排。某队比赛时,┃ ┃一、四号位放主攻手,二、五号位放二传手,三、六号位放副攻┠──┬──┬──┨手。队员所穿球衣分别为1,2,3,4,5,6号,但每个队 ┃ 四 │ 三 │ 二 ┃员的球衣都与他们的站位号不同。已知1号、6号队员不在后排,┠──┼──┼──┨2号、3号队员不是二传手,3号、4号队员不在同一排,5号、┃ 五 │ 六 │ 一 ┃6号队员不是副攻手。 ┗━━┷━━┷━━┛编程求每个队员的站位情况。 【算法分析】本题可用一般的穷举法得出答案。也可用回溯法。以下为回溯解法。 【题目 2】把自然数N分解为若干个自然数之和。 【参考答案】 n │ total 5 │ 7 6 │ 11 7 │ 15 10 │ 42 100 │ 190569291 【题目 3】把自然数N分解为若干个自然数之积。 【题目 4】马的遍历问题。在N*M的棋盘中,马只能走日字。马从位置(x,y)处出发,把棋盘的每一格都走一次,且只走一次。找出所有路径。 【参考程序】 {深度优先搜索法} 【题目 5】加法分式分解。如:1/2=1/4+1/4.找出所有方案。 输入:N MN为要分解的分数的分母 M为分解成多少项 【题目 6】地图着色问题 【题目 7】在n*n的正方形中放置长为2,宽为1的长条块,问放置方案如何 【题目 8】找迷宫的最短路径。(广度优先搜索算法)

来自牛人的ACM经验

来自牛人的ACM经验 竞赛2010-07-16 09:51:43 阅读0 评论0 字号:大中小 转于:https://www.doczj.com/doc/012883775.html,/luxuejuncarl/ hacker名单 https://www.doczj.com/doc/012883775.html,/isbx posted @ 2007-03-19 21:30 路雪军阅读(120) | 评论(0) | 编辑收藏 Linux常用命令锦集 https://www.doczj.com/doc/012883775.html,/images/tech/linux/zhuanti/mingling/index.htm posted @ 2007-03-19 20:25 路雪军阅读(112) | 评论(0) | 编辑收藏 2007年3月5日 随想 记录下wonderful的sentences,背下来并加以应用is a good habit.. posted @ 2007-03-05 15:24 路雪军阅读(88) | 评论(0) | 编辑收藏 2007年3月3日 acm比赛经验(转) 在天大,偶参加的比赛可以算是最多的了,说说比赛经验。 可能现在说早了点,需要大家在正式比赛之前再看一遍。 推荐此篇文章打印,与模板放在一起。 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果W A,两道题同时做。交完每道题都要先打印。 2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的。基本上比赛中前几名的队都没人吃,除非领先很多。 3. 很多选手,尤其是第一次参加比赛的,到一个新环境,全当旅游了,参观的参观,找同学的找同学,玩玩乐乐就把正事抛到脑后了,结果比赛自然没什么好成绩,这样的例子太多了。所以到参赛地后要时刻不忘自己是来比赛的,好好休息、备战。 4. 参赛前一天要睡10个小时以上,非常有助于保持比赛中的精力,很多时候比赛到3个多小时队员就没劲了就是这个原因。前一天晚饭与当天早饭要吃好,理由同上,要知道下顿饭得下午3点赛后才能吃。 5. 到新环境,时刻注意远离疾病,感冒肠炎病不大,却是成绩的天敌。 6. 英语不好,看不懂的,要勤查词典,懒一次就少一道题,远离奖牌。 7. 可以紧张,杜绝慌张,慌张是出题的敌人,任何时候,如果发现自己或者队友出现慌张的情况,提醒深呼吸。 8. 照着纸敲代码和sample数据时不要敲错,特别注意文字信息。 9. 第一道简单题交给队中最稳的人做,万一遇到麻烦也不要慌,如果有很多队都出了就更不必着急了,它必定是简单题,必定是可以很快做出来的,晚几分钟也比罚掉20分好。另外注意不要PE。 10. 最后一小时是出题高峰,谁松懈,谁落后。最后一小时出一道是正常,出两道更好。 以上各条均有出处,每条都包含着以往教训,每条都可能浪费掉你一年的努力,不可小视。以下各条有些来自于其他学校,有些是总结: 11. 无论是否有人通过,所有题必须全读过,最好每道题都有两人以上读过,尽量杜绝讲题

ACM题目、测试用例及参考答案汇编——一次ACM协会内部测试

ACM题目、测试用例及参考答案汇编——一次ACM协会内部测试 第一题:梦境是虚幻吗? 时间限制:3000ms 内存限制:65535KB 难度:★★ 描述 《盗梦空间》是一部精彩的影片,在这部电影里,Cobb等人可以进入梦境之中,梦境里的时间会比现实中的时间过得快得多,这里假设现实中的3分钟,在梦里就是1小时。 然而,Cobb他们利用强效镇静剂,可以从第一层梦境进入第二层梦境,甚至进入三层,四层梦境,每层梦境都会产生同样的时间加速效果。那么现在给你Cobb在各层梦境中经历的时间,你能算出现实世界过了多长时间吗? 比如,Cobb先在第一层梦境待了1个小时,又在第二层梦境里待了1天,之后,返回第一层梦境之后立刻返回了现实。 那么在现实世界里,其实过了396秒(6.6分钟) 输入 第一行输入一个整数T(0<=T<=100),表示测试数据的组数。 每组测试数据的第一行是一个数字M(3<=M<=100) 随后的M行每行的开头是一个字符串,该字符串如果是"IN" 则Cobb向更深层的梦境出发了,如果是字符串"OUT"则表示Cobb从深层的梦回到了上一层。如果是首字符串是"STAY"则表示Cobb在该层梦境中停留了一段时间,本行随后将是一个整数S表示在该层停留了S分钟(1<=S<=10000000)。数据保证在现实世界中,时间过了整数秒。 输出 对于每组测试数据,输出现实世界过的时间(以秒为单位)。 样例输入 1 6 IN STAY 60 IN STAY 1440 OUT OUT 样例输出 396 测试输入 10 6 IN STAY 60 IN STAY 1440 OUT

OUT 6 IN IN IN OUT OUT OUT 7 IN IN IN STAY 0 OUT OUT OUT 2 IN STAY 20 3 IN STAY 0 OUT 3 IN STAY 10 OUT 4 IN STAY 10 STAY 10 OUT 5 IN STAY 20 STAY 20 OUT STAY 120 10 IN STAY 20 STAY 20 IN STAY 1440

整理出ACM所有题目及答案

1111111杭电: 1000 A + B Problem (4) 1001 Sum Problem (5) 1002 A + B Problem II (6) 1005 Number Sequence (8) 1008 Elevator (9) 1009 FatMouse' Trade (11) 1021 Fibonacci Again (13) 1089 A+B for Input-Output Practice (I) (14) 1090 A+B for Input-Output Practice (II) (15) 1091 A+B for Input-Output Practice (III) (16) 1092 A+B for Input-Output Practice (IV) (17) 1093 A+B for Input-Output Practice (V) (18) 1094 A+B for Input-Output Practice (VI) (20) 1095 A+B for Input-Output Practice (VII) (21) 1096 A+B for Input-Output Practice (VIII) (22) 1176 免费馅饼 (23) 1204 糖果大战 (25) 1213 How Many Tables (26) 2000 ASCII码排序 (32) 2001 计算两点间的距离 (34) 2002 计算球体积 (35) 2003 求绝对值 (36) 2004 成绩转换 (37) 2005 第几天? (38) 2006 求奇数的乘积 (40) 2007 平方和与立方和 (41) 2008 数值统计 (42) 2009 求数列的和 (43) 2010 水仙花数 (44) 2011 多项式求和 (46) 2012 素数判定 (47) 2014 青年歌手大奖赛_评委会打分 (49) 2015 偶数求和 (50) 2016 数据的交换输出 (52) 2017 字符串统计 (54) 2019 数列有序! (55) 2020 绝对值排序 (56) 2021 发工资咯:) (58) 2033 人见人爱A+B (59) 2037 今年暑假不AC (61) 2039 三角形 (63) 2040 亲和数 (64)

ACM集训队选拔赛第一场题目

Your job is to calculate the total score for a given user. Input The first line contains an integer np(1≤np≤300) which is the number of problems in Online Judge. The second line contains np integers representing the number of users who have solved this problem from problem 1000 to problem 1000+np-1. The third line contains an integers t(t≤10), which is the number of test cases. Each test case begins with an integer n, which is the number of problems the user has solved. Then it is followed by n distinct integers which are the problem ids. Problem id is labeled from 1000. Output For each test case, print the total score he can get on a single line. Sample Input 10 100 10 11 3 45 7 34 200 70 1 4 2 1000 1001 2 1001 1002 3 1000 1007 1008 Sample Output 12 18

ACM训练指南

ACM练习建议 一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm 主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换 第二阶段: 练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。 5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp 6.博弈类算法。博弈树,二进制法等。 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统. 10. 双向广度搜索、A*算法,最小耗散优先. 第三阶段: 前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法 。这就要平时多做做综合的题型了。 1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。

ACM入门练习

最少钱币数: 【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1 <= M <= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K 个互不相同的钱币面值Ki(1 <= Ki <= 1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

【问题描述】 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 【要求】 【数据输入】本题有多组数据,每组数据由一个正整数N组成。(N不大于100) 【数据输出】对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。 【样例输入】 5 【样例输出】 1 2 6 10 15 3 5 9 14 4 8 13 7 12 11

【问题描述】 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。 【要求】 【数据输入】输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。 【数据输出】输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible" 【样例输入】 1 2 3 4 5 【样例输出】 4

acm ZOJ刷题推荐

初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1334 1337 1338 1350 1365 1382 1383 1394 1402 1405 1414 1494 1514 1622 1715 1730 1755 1760 1763 1796 1813 1879 1889 1904 1915 1949 2001 2022 2099 2104 2108 2172 2176 2201 2208 2321 2345 2351 2376 2388 2405 2417 2433 模拟问题: 1006 1009 1012 1016 1019 1023 1026 1028 1038 1042 1045 1051 1056 1057 1058 1061 1065 1066 1068 1072 1073 1078 1087 1088 1097 1098 1099 1103 1111 1121 1124 1126 1128 1133 1138 1146 1152 1154 1160 1175 1178 1187 1194 1207 1222 1224 1244 1259 1267 1274 1275 1277 1278 1279 1281 1282 1294 1295 1300 1308 1317 1324 1339 1351 1362 1392 1393 1397 1398 1399 1400 1402 1432 1434 1444 1452 1475 1487 1493 1497 1517 1526 1527 1530 1531 1552 1569 1573 1592 1601 1610 1623 1631 1641 1652 1657 1659 1682 1692 1700 1702 1707 1708 1712 1728 1732 1737 1746 1747 1750 1752 1754 1758 1764 1768 1774 1797 1799 1804 1807 1811 1822 1824 1831 1834 1837 1838 1842 1844 1845 1854 1858 1862 1870 1881 1884 1889 1896 1906 1921 1951 1969 1978 2000 2022 2040 2046 2047 2051 2072 2084 2101 2112 2131 2133 2138 2148 2153 2156 2160 2164 2172 2178 2184 2185 2187 2189 2193 2196 2201 2204 2208 2211 2212 2220 2229 2233 2239 2240 2261 2262 2269 2277 2288 2301 2309 2311 2312 2316 2320 2321 2322 2328 2330 2350 2389 2405 2410 2414 2420 2421 2483 2508 2560 2569 2572 2593 2613 2617 2680 2681 2731 2732 2743 动态规划:

相关主题
文本预览
相关文档 最新文档