BHU 润石工作室 251019自建赛题解

A魔法对决

复制代码
#include<stdio.h>
int main(){
    int x, y;
    scanf("%d%d", &x, &y);
    if(x == 0 && y == 1 || x == 1 && y == 2 || x == 2 && y == 0){
        printf("Hongwins");
    }  else if(x == y){
        printf("Draw");
    }  else{
        printf("chengwins");
    }
    return 0;
}

0 是石头 1 是剪子 2是布

第一步:我在什么情况下会赢???

列举一下:0 >1 1>2 2 >0

第二步:什么时候平?

一样的时候

第三步:什么时候输?

除了前边两种情况,剩下的都是输

B四舍五入

复制代码
#include<stdio.h>
int main(){
    int n;
    scanf("%d", &n);
    int a, b;
    a = n / 10;
    b = n % 10;
   // 判断个位数是否大于等于5,决定是否向十位进位
    if(b >= 5){  // 如果个位数大于等于5,需要向十位进1
        printf("%d",(a + 1) * 10);  // 进位后,结果为(原十位数值+1)乘以10(如56→60)
    } else{  // 如果个位数小于5,不需要进位
        printf("%d",a * 10);  // 结果为原十位数值乘以10(如53→50)
    }
}

c判断闰年

复制代码
#include<stdio.h>  
int main(){  
    int n;
    scanf("%d", &n);
    if ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0)){
        printf("yes");
    } else {
        printf("no");
    }
    return 0;
}

Dhelloworld

复制代码
#include<stdio.h>
int main()
{
    printf("%c%c%c%c%c%c%c%c%c%c%c",'h'+1,'e'+1,'l'+1,'l'+1,'o'+1,' '+1,'w'+1,'o'+1,'r'+1,'l'+1,'d'+1);
    return 0;
}

E材料打印

这题就是先考虑便宜的能便宜就便宜

复制代码
#include<stdio.h>
int main()
{
    long long T;
    scanf("%lld", &T);
    long long a, b, x, y;
    for(int i = 0; i < T; i++)
    {
        scanf("%lld %lld %lld %lld", &a, &b, &x, &y);
        if(x <= y) {
            printf("%lld\n", a * x + b * y);
        } else {
            printf("%lld\n",a * y + b * y);
        }
    }
return 0;
}

F几何高手

核心考点是Π的使用 不会用这系列的去学

棍子+绳子是 棍子的轨道投影半径

S=ΠR方

复制代码
#include<stdio.h>
#include<math.h> 
int main()
{
    int a, b;
    double result;
    scanf("%d %d", &a, &b);
    result = M_PI * (a + b) * (a + b); //数学常量PI  java用Math.PI
    printf("%.10lf",result); //保留10位小数
    return 0;
}

G数组重排

这个就是一个快排

要求重排后a1 * a2 < a3 * a4

从小到大排序后判断ai*ai-1是否小于ai*ai+1

学一点c++ 用sort更方便

复制代码
#include <stdio.h>
#include <stdlib.h>
typedef long long ll;
ll a[10000000];
int compare(const void *x, const void *y) {
    ll num1 = *(ll *)x;
    ll num2 = *(ll *)y;
    if (num1 > num2) return 1;
    else if (num1 < num2) return -1;
    else return 0;
}
int main() {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        scanf("%lld", &a[i]);
    }
    qsort(a + 1, n, sizeof(ll), compare);
    
    //判断a[i]*a[i-1]是否小于a[i]*a[i+1]
    for (int i = 2; i < n; i++) {
        if (a[i] * a[i - 1] >= a[i] * a[i + 1]) {
            printf("NO\n");
            return 0;
        }
    }
    printf("YES\n");
    for (int i = 1; i <= n; i++) {
            printf("%lld ", a[i]);
    }
    
    return 0;
}

H前缀询问

找规律用数组记录某数字出现的次数 a【5】 = 9 意味着 5出现9次

复制代码
#include<stdio.h>
int main()
{
    long long n;
    scanf("%lld",&n);
    long long arr[n];
    for(long long i=0;i<n;i++)
    {
        scanf("%lld",&arr[i]);
    }
     
    for(long long i=0;i<n;i++)
    {
        long long m=0;
        for(long long j=0;j<=i;j++)
        {
            if(arr[j]==arr[i])
            {
                m=m+1;
            }
             
        }
        long long x=x+m-1;
        printf("%lld ",x);
    }
    return 0;
}

I分割序列

计算一个数组中所有元素对的距离和

复制代码
#include <stdio.h>
#include <stdlib.h>

// 比较函数,用于qsort排序
int compare(const void *a, const void *b) {
    return (*(int *)a - *(int *)b);
}

int main() {
    int n;
    scanf("%d", &n);

    int *arr = (int *)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    qsort(arr, n, sizeof(int), compare);
    long long max_cost = 0;
    for (int i = 0; i < n-1; i++)
    {
        max_cost +=(i + 1) * arr[i];
    }

    printf("%lld\n", max_cost);

    free(arr);
    return 0;
}

J收纳方块

复制代码
import java.util.*;
import java.math.*;

public class Main {
    private static Scanner sc= new Scanner(System.in);
    
    public static void main(String[] args) {
        int t = 1;
        t = sc.nextInt(); 
        while (t-- > 0) {
            solve();
        }
        sc.close();
    }
    
    public static void solve() {
        int n = sc.nextInt();
            long[] dp = new long[n + 2];
            dp[0] = 0;
            dp[1] = 1;
            dp[2] = 2;
            for(int i = 3; i <= n; i++){
                dp[i] = dp[i - 1] + dp[i - 2]; //每项由前两项和推出 因为每次可以选择1和2 所以他是-1 和 -2 项相加
            }
             System.out.println(dp[n]);
    }
}

K排列出来

复制代码
import java.util.*;
import java.io.*;
import java.math.*;
import java.time.*;

public class Main {

    static Scanner sc = new Scanner(System.in);
    static long MOD = (long) (1e9 + 7);

    public static void main(String[] args) {
        int t = 1;
//        t = sc.nextInt();
        while (t-- > 0) {
            solve();
        }
        sc.close();
    }

    public static void solve() {
        dfs("", 0);
    }

    public static void dfs(String s, int depth) {
        if (depth == 8) {
            System.out.println(s.trim());
            return;
        }
        for (int i = 1; i <= 8; i++) {
            if (!s.contains(String.valueOf(i))) {
                dfs(s + i + " ", depth + 1);
            }
        }
    }
}

L你要的模板

复制代码
    public static void main(String[] args) {
        int t = 1;
        t = sc.nextInt();
        while (t-- > 0) {
            solve();
        }
        sc.close();
    }
    public static void solve() {
        int n = sc.nextInt();
        int m = sc.nextInt();
        long[] dp = new long[m + 1];
        dp[0] = 0;
        
        for (int i = 0; i < n; i++) {
            int a = sc.nextInt(); 
            long[] v = new long[a + 1];
            long[] w = new long[a + 1];
            
            for (int j = 0; j < a; j++) {
                v[j] = sc.nextLong();
            }
            
            for (int j = 0; j < a; j++) {
                w[j] = sc.nextLong();
            }

            for (int j = m; j >= 0; j--) {
                for (int k = 0; k < a; k++) {
                    if (j >= w[k]) {
                        dp[j] = Math.max(dp[j], dp[j - (int)w[k]] + v[k]);
                    }
                }
            }
        }
        System.out.println(dp[m]);
    }
}
相关推荐
玩AI的奶茶2 小时前
24GB 显存能跑多大的模型?参数量、精度与显存占用对照表
人工智能·python·算法·ai·aigc·gpu算力·算力租赁
java_nnnn2 小时前
LeetCode刷题双指针(有效三角形的个数+三数之和)Java
算法·leetcode·职场和发展
人工智能培训3 小时前
智能博弈背景下中国AI国防建设的战略价值
大数据·人工智能·算法·重构·生活
flinn_small3 小时前
三分算法:原理、实现与实战应用
数据结构·算法·三分
思茂信息3 小时前
CST软件UV Slice切片后可直接删除指定一侧实体
算法·uv·emc·emi·cst·仿真软件
INGNIGHT3 小时前
944 · 最大子矩阵(前缀和)
数据结构·c++·算法
All for pursuit.4 小时前
【动态规划-6】96.不同的二叉搜索树
数据结构·c++·算法·leetcode·动态规划
rou4 小时前
Attention(注意力机制)
算法
信奥卷王5 小时前
[GESP202609 六级] 数组划分
数据结构·算法