比赛(简单)
n个人参加乒乓球比赛。
比赛一共进行了 n−1 场。
每场比赛举办方都需要准备 2×b+1 瓶水,其中 2×b瓶水给选手(每场比赛 2 人参加,每人 b 瓶),1 瓶水给裁判。
此外,所有参加比赛的 n 名选手,每名选手在比赛期间总共会得到举办方准备的 p 条毛巾。
请你计算,举办方一共需要准备多少瓶水和多少条毛巾。
输入格式
共一行,三个整数 n,b,p。
输出格式
两个整数,表示所需准备的水的数量和毛巾的数量。
数据范围
前 3 个测试点满足 1≤n,b,p≤10。
所有测试点满足 1≤n,b,p≤500。
输入样例1:
5 2 3
输出样例1:
20 15
输入样例2:
8 2 4
输出样例2:
35 32
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n,b,p;
n=in.nextInt();
b=in.nextInt();
p=in.nextInt();
System.out.print((n-1)*(2*b+1)+" ");
System.out.println(n*p);
}
}
总结
简单题,用来打卡
挑选(中等)
给定一个包含 n 个正整数 a1,a2,…,an 的集合。
集合中可能存在数值相同的元素。
请你从集合中挑选一些元素,要求同时满足以下所有条件:
- 被选中元素不少于 2 个。
- 所有被选中元素之和不小于 l 且不大于 r。
- 所有被选中元素之中最大元素与最小元素之差不小于 x。
请问,一共有多少种不同的选法。
注意:
- 不考虑元素顺序,{a1,a2} 和 {a2,a1} 应当视为同一种选法。
- 不同元素即使数值相同,也应当视为不同个体,即使 a1=a2,{a1,a3} 和 {a2,a3} 也应当视为不同选法。
输入格式
第一行包含四个整数 n,l,r,x。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
一个整数,表示不同选法的数量。
数据范围
前 33 个测试点满足 1≤n≤5。
所有测试点满足 1≤n≤15,1≤l≤r≤10e9,1≤x≤10e6,1≤ai≤10e6。
输入样例1:
3 5 6 1
1 2 3
输出样例1:
2
输入样例2:
4 40 50 10
10 20 30 25
输出样例2:
2
输入样例3:
5 25 35 10
10 10 20 10 20
输出样例3:
6
import java.util.Scanner;
public class Main{
static int n,l,r,x;
static int[] arr;
static long ans=0;
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
n=in.nextInt();
arr=new int[n+1];
l=in.nextInt();
r=in.nextInt();
x=in.nextInt();
for (int i = 1; i <=n; i++) {
arr[i]=in.nextInt();
}
for (int i = 1; i <=n; i++) {
bfs(1,i+1,arr[i],arr[i],arr[i]);
}
System.out.println(ans);
}
static void bfs(int count,int next,long sum,int max,int min){
if(sum>r){
return;
}
if(count>=2){
if(sum>=l&&max-min>=x){
ans++;
}
}
for(int i=next;i<=n;i++){
bfs(count+1,i+1,sum+arr[i],Math.max(max,arr[i]),Math.min(min,arr[i]));
}
}
}
总结
中等题,数据给的少可以直接暴搜bfs,或者是剪枝去枚举所有组合,与今年蓝桥杯Java的第三题有些相似,注意数组边界问题。困难题暂时没有去看