☰
BHU 润石工作室 251019自建赛题解
2026/10/11 13:20:11 网站建设 项目流程

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

从小到大排序后判断a[i]*a[i-1]是否小于a[i]*a[i+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]); } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询