小试3——略加思考

1.

(ball.pas/c/cpp)

【问题描述】

CCC的足球比赛和传统的足球比赛有一点不同, 一次进球当且仅当先后接触到球的4名队员的球衣编号是升序排列的。

球员的球衣编号从过11500,并且每个人的编号都不同。

给出最后得分球员的球衣编号,请计算出有多少合法的球员组合能够产生这一进球。

【输入格式】

输入一个整数N1≤N1500,代表进球球员的球衣编号。

【输出格式】

输出只有一行,包含一个整数代表有多少种组合能够使得最后进球的球员编号为N

【样例】

ball.in

ball.out

2

0

5

4

【限制】

时限:1s

内存限制:128MB


2. 矩阵交换

(matrix.pas/c/cpp)

【问题描述

给定一个N*N的矩阵,要求支持3种操作:

R a b:交换第a行和第b行的所有元素;

C a b:交换第a列和第b列的所有元素;

A a b:询问第a行第b列元素的值。

输入格式

第一行两个整数NK表示矩阵大小和操作个数

接下来N行,每行N个整数,表示初始的矩阵。

接下来K行每行一个操作,格式如题目所述。

输出格式

对于每个询问,输出一行作为答案。

【样例】

matrix.in

matrix.out

3 5

1 2 3

4 5 6

7 8 9

A 3 2

R 3 2

C 2 3

A 2 2

A 3 2

8

9

6

【数据范围】

对于30%数据满足:1≤N≤1001≤K≤20000

对于100%数据满足:1≤N≤7001≤K≤1000000初始矩阵中的所有数值≤109

【限制】

时限:1s

内存限制:128MB


3. 砍树

(cut.pas/c/cpp)

【问题描述】

Smart在一条水平的马路上种了n棵树,过了几年树都长得很高大了,每棵树都可以看作是一棵长度为a[i]的竖线段。由于有的树过于高大,挡住了其它的树,使得另一些树得不到阳光。如果有两棵树iji的顶端与j的底端连线的倾角大于45度,我们就定义为树i挡住了树j。现在Smart希望将一些树砍低,使得不存在挡住的情况。他想知道总共最少需要砍掉多少长度,请你来帮他计算一下。

注意:如果同一位置有两棵树的话,根据题意,我们只能将这两棵都砍成高度为0才能保证它们不相互挡住,但是高度为0并不代表这棵树不存在。

【输入格式】

第一行一个整数,表示有n棵树。

接下来n行,每行两个正整数p[i]a[i],表示一棵树的位置和高度。

【输出格式】

输出一个数,表示最少砍断多少长度。

【样例】

cut.in

cut.out

3

0 2

3 3

1 2

3

【数据范围】

对于50%的数据满足:n100

对于100%的数据满足:n1000000<p[i],a[i]10000

【限制】

时限:1s

内存限制:128MB


4. 括号序列

(sqrbr.pas/c/cpp)

【问题描述】

对长度为2*N (N≤20)的括号序列,规定某些位置必须是左括号,试统计合法序列数目。

例如:下面两种括号序列是合法的:

[[]][[[]][]]

[[[][]]][][[]]

下面的这种括号序列就是不合法的:

[[[][]]][]][[]]

【输入格式】

第一行两个整数NK,表示要构造一个长度为2*N的括号序列,K表示规定有K个位置必须是左括号;

第二行有K个整数,表示规定为左括号的K个位置。

【输出格式】

一个整数,即满足要求的合法括号序列数目。

【样例】

sqrbr.in

sqrbr.out

3 1

2

3

【限制】

时限:1s

内存限制:128MB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值