Acwing第100周,周赛

 比赛(简单)

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 的集合。

集合中可能存在数值相同的元素。

请你从集合中挑选一些元素,要求同时满足以下所有条件:

  1. 被选中元素不少于 2 个。
  2. 所有被选中元素之和不小于 l 且不大于 r。
  3. 所有被选中元素之中最大元素与最小元素之差不小于 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的第三题有些相似,注意数组边界问题。困难题暂时没有去看

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值