P1042 [NOIP2003 普及组] 乒乓球
时间: 2023-05-17 21:03:04 浏览: 78
这是一道算法题,需要使用循环和条件语句来解决。以下是一个可能的解决方案:
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int a = 0, b = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
int x;
cin >> x;
if (x == 1) {
a++;
} else if (x == -1) {
b++;
}
}
}
cout << a << " " << b << endl;
return 0;
}
这个程序会读入两个整数 n 和 m,表示乒乓球比赛的场次和每场比赛的局数。然后,程序会使用两个嵌套的循环来读入每一场比赛的得分,如果得分为 1,则表示 A 赢了这一局,如果得分为 -1,则表示 B 赢了这一局。最后,程序会输出 A 和 B 分别赢了多少局。
相关问题
p1042 [noip2003 普及组] 乒乓球
题目描述
在一个长为n的直线上,有m个点,第i个点在直线上的位置为ai,所有点坐标互不相同。我们现在在这条直线上放置一个“弹球”,开始时弹球位于直线上的某一点x0,弹球每次可以向左或向右移动一个单位长度,但不能移动到某个点上。当弹球移动到一个位置x时,它被弹到左边或右边的概率与 |x−ai−1|/(|x−ai−1|+|x−ai|)和 |x−ai|/(|x−ai−1|+|x−ai|) 成正比。设弹球被弹出左边或右边的概率分别为p1,p2,则当p1≠p2时,弹球被弹出的期望位置为 (p1a[i−1]+p2a[i])/2,否则弹球被弹出的位置为pi=a[i−1]+0.5,其中0≤i≤m,a[0]=-∞,a[m]=∞。
现在请你编写程序,计算出让弹球被弹出的期望位置最靠左(即最小)的放置位置x0。
输入格式
第一行包含两个整数n,m,表示直线长度和点数。
第二行包含m个整数,表示所有点的坐标。
输出格式
一个实数,表示期望位置的最小值,精确到小数点后两位。
输入样例
10 5
-2 1 4 7 11
输出样例
1.50
提示
样例解释:当弹球初始位置为1时,它有0.25的概率被弹出左边,0.75的概率被弹出右边。设左边的点为x,右边的点为y,则有:
当弹球被弹出左边时,期望位置为(x+1)/2。
当弹球被弹出右边时,期望位置为(y+1)/2。
综上,当弹球初始位置为1时,期望位置为(4+1)/2=2.5。
p1044 [noip2003 普及组] 栈
题目描述:
给定一个长度为n的序列a1,a2,...,an,你需要使用一个栈进行排序。排序的规则为:
每次弹出一个或多个元素,这些元素都是未出栈的元素中的最小值。
按照弹出的顺序将元素输出。
例如,如果输入序列为3 1 2,则有以下两种排序方式:
先弹出元素1,再弹出元素2,最后弹出元素3,得到排序序列1 2 3;
先弹出元素2和1,再弹出元素3,得到排序序列2 1 3。
输入格式
第一行包含一个整数n。
第二行包含n个整数,表示序列a。
输出格式
输出一个序列,表示通过栈排序得到的序列。
输入样例1:
5
5 4 3 2 1
输出样例1:
1 2 3 4 5
输入样例2:
5
5 4 3 2 1
输出样例2:
1 2 3 4 5
提示
数据范围
1≤n≤1000
数据范围的原因是栈的深度不能太深,否则会栈溢出,导致程序崩溃。