2022年HNUCM信息科学与工程学院第五届新生赛——正式赛

news2024/9/20 6:04:08

2022年HNUCM信息科学与工程学院第五届新生赛——正式赛

A

打卡题,向下取整即可

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	cout << n / 7 << endl;
	return 0;
}

B

统计数量,注意要是不能整除需要向上取整的问题

#include<iostream>
using namespace std;
int main()
{
	char ch;
	int a = 0, b = 0;
	while (scanf("%c",&ch)!=EOF)
	{
		if (ch == 'M')
			a++;
		else
			b++;
	}
	cout << (a - 1) / 5 + 1 << " " << (b - 1) / 4 + 1 << endl;
	return 0;
}

C

按照题意来就行了

#include<iostream>
using namespace std;
int main()
{
	int ans = 0, a, b, c;
	int n;
	cin >> n;
	while (n--)
	{
		cin >> a >> b >> c;
		if (a >= 6 && b >= 6 && c >= 6 || a / 10 + b / 10 + c / 10)
			ans++;
	}
	cout << ans << endl;
	return 0;
}

D

这题最重要的是看懂题意,注意一个坑就是必须要两个人都到终点后其中有个人才能返回

看图就行,两种方案取最大值

在这里插入图片描述

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int a[4];
	for (int i = 0; i < 4; i++)
		cin >> a[i];
	sort(a, a + 4);
	cout << min(a[0] + 3 * a[1] + a[3], 2 * a[0] + a[1] + a[2] + a[3]) << endl;
	return 0;
}

E

从前往后依次出现“HNUCM”,出现一次完整的记录一次,原因自行领悟

#include<iostream>
#include<string>
#include<unordered_map>
using namespace std;
int main()
{
    string s;
    string s1 = "HNUCM";
    while (cin >> s)
    {
        int cnt = 0, ans = 0;
        for (char c : s)
        {
            if (c == s1[cnt])
                cnt++;
            if (cnt == 5)
                cnt = 0, ans++;
        }
        cout << ans << endl;
    }
    return 0;
}

F

数据量很小,直接可以暴力枚举每种价格选多少种菜,然后运用排列组合知识,就可以知道同一价值的n个菜选m个有多少种,接着分类相加,分布相乘即可

#include<iostream>
using namespace std;
int C(int m, int n)
{
	int ans = 1;
	for (int i = 1; i <= m; i++)
		ans = ans * (n - m + i) / i;
	return ans;
}
int main()
{
	int a, b, c;
	int ans = 0;
	cin >> a >> b >> c;
	for(int i=0;i<=a;i++)
		for(int j=0;j<=b;j++)
			for (int k = 0; k <= c; k++)
			{
				if (i + 2 * j + 3 * k == 10)
					ans += C(i, a) * C(j, b) * C(k, c);
			}
	cout << ans << endl;
	return 0;
}

G

动态规划题,和D题有点像的地方就是要找到合适的式子,且要分类讨论一下,加上里面的一些细节,在新生赛应该也算一个比较难的题了。这次的新生赛和蓝桥杯dp没有像往年考背包,倒都是考了线性dp。

令f[i] [j]为第i天选第j种外卖的总数,例如第i天选0的话,第i-1天选1,2加上第i-1天选0且i-2天不选0,这里需要注意的地方有两个,其中一个我在其中摔了个跟头。

  1. 第i-1天选0且i-2天不选0不能写成dp[i-1] [0]-dp[i-2] [0],因为dp[i-1] [j]!=dp[i-1] [0]+dp[i-1] [1]+dp[i-1] [2]
  2. 第二个就是取模的需要注意,int相加会超过范围,所以dp数组用longlong
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 100010, mod = 1e9 + 7;
long long f[maxn][3] = { {0,0,0},{1,1,1},{3,3,3} };
int main()
{
    int t, n;
    cin >> t;
    for (int i = 3; i <= maxn-10; ++i) {
        f[i][0] = (f[i - 2][1] + f[i - 2][2] + f[i - 1][1] + f[i - 1][2]) % mod;
        f[i][1] = (f[i - 2][0] + f[i - 2][2] + f[i - 1][0] + f[i - 1][2]) % mod;
        f[i][2] = (f[i - 2][1] + f[i - 2][0] + f[i - 1][1] + f[i - 1][0]) % mod;
    }
    /*
    for (int i = 3; i <= maxn - 10; i++)
        for (int j = 0; j < 3; j++)
            dp[i][j] = (dp[i - 1][0] + dp[i - 1][1] + dp[i - 1][2] + mod - dp[i - 2][j])%
            mod;
            错误写法,因为dp[i-1][j]!=dp[i-1][0]+dp[i-1][1]+dp[i-1][2]
    */
    while (t--)
    {
        cin >> n;
        cout << (f[n][0] + f[n][1] + f[n][2])%mod << endl;
    }
    return 0;
}

H

这题难的地方在于对于边界的讨论,但是我们可以将边界和其他点划分为一类,只要预处理一下矩阵就行

首先将问题拆分为两个子问题,1周围全是0的1的个数,0周围全是1的0的个数。

对于第一种,我们可以输入矩阵时行下标和列下标都从1开始,然后将第0,m+1行全部变为0,第0,n+1列全部变为0,这样我们就只需要判断每个1周围是否全部是0

对于第二种我们类似的将矩阵其全部预处理为1就行了

还有个问题就是输入老问题,回车问题,这里其实我们可以不需要用字符存储,我们用整型,可是怎么解决数字是连续输入的问题呢?我们只需要格式化输入%1d就行了

#include<iostream>
#include<cstring>
using namespace std;
int mp1[1005][1005], mp2[1005][1005];
int m, n;
int dir[8][2] = { -1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1,-1,-1 };
void init()
{
	for (int i = 0; i <= m + 1; i++)
		for (int j = 0; j <= n + 1; j++)
			mp1[i][j] = 0, mp2[i][j] = 1;
}
int main()
{
	cin >> m >> n;
	int ans = 0;
	init();
	for(int i=1;i<=m;i++)
		for (int j = 1; j <= n; j++)
		{
			scanf("%1d", &mp1[i][j]);
			mp2[i][j] = mp1[i][j];
		}
	for (int i = 1; i <= m; i++)
		for (int j = 1; j <= n; j++)
		{
			if (mp1[i][j] == 1)
			{
				bool flag = true;
				for (int k=0;k<8;k++)
					if (mp1[i + dir[k][0]][j + dir[k][1]] != 0)
					{
						flag = false;
						break;
					}
				ans+=flag;
			}
		}
	for (int i = 1; i <= m; i++)
		for (int j = 1; j <= n; j++)
		{
			if (mp2[i][j] == 0)
			{
				bool flag = true;
				for (int k = 0; k < 8; k++)
					if (mp2[i + dir[k][0]][j + dir[k][1]] != 1)
					{
						flag = false;
						break;
					}
				ans += flag;
			}
		}
	cout << ans << endl;
	return 0;
}

I

按照题目来模拟,输入老师评分和学生评分时分别记录他们的最大最小值和总分,最后平均值就是和减去最大最小除以8,再分别乘以0.6和0.4相加就行了

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	double maxx = -1, minx =111, sum = 0, x,ans=0;
	for (int i = 0; i < 10; i++)
	{
		cin >>x;
		maxx = max(x, maxx);
		minx = min(x, minx);
		sum += x;
	}
	ans += (sum - maxx - minx) / 8*0.6;
	sum = 0, maxx = -1, minx =111;
	for (int i = 0; i < 10; i++)
	{
		cin >> x;
		maxx = max(x, maxx);
		minx = min(x, minx);
		sum += x;
	}
	ans += (sum - maxx - minx) / 8*0.4;
	printf("%.2lf\n", ans);
	return 0;
}

J

又是一道和素数有关的题目

先写一个判断素数的函数备用,然后查找m到n之间为2 ^p-1且是素数的个数

#include<iostream>
#include<algorithm>
using namespace std;
bool is_prime(long long n)
{
	if (n == 1)
		return false;
	if (n == 2)
		return true;
	for (long long i = 2; i * i <= n; i++)
		if (n % i == 0)
			return false;
	return true;
}
int main()
{
	int n, m,ans=0;
	cin >> m >> n;
	long long i;
	for (i = 1; i-1 < m; i *= 2)
	{ }
	for (; i-1 <= n; i *= 2)
		if (is_prime(i - 1))
			ans++;
	cout << ans << endl;
	return 0;
}

K

照着题目模拟

不想写了,写了一下,看到那个表,无论写ifelse还是Switch都贼多,各位自己实现吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《痞子衡嵌入式半月刊》 第 62 期

痞子衡嵌入式半月刊&#xff1a; 第 62 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻&#xff0c;农历年分二十四节气&#xff0c;希望在每个交节之日准时发布一期。 本期刊是开源项目&#xff08;GitHub: JayHeng/pzh-mcu-bi-weekly&#xff09;&#xff0c;欢…

JAVA班主任管理系统(源代码+论文)

毕业综合实训报告 班主任管理系统设计与实践 目 录 摘要 ………………………………………………………………………Ⅰ &#xff08;空2行&#xff0c;本页行间距为最小值14磅&#xff09; 目录………………………………………………………………………………… 1 第1章 绪…

【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.1 效果演示、技术点

Qt 中绘图用到的类是 QPainter&#xff0c;可以实现点、线、矩形、圆形、多边形、圆弧、饼图、图片等的绘制 什么时候会用到绘图&#xff1f; 需要简单绘制时 比如&#xff0c;绘制温度的曲线时&#xff0c;如下&#xff1a; 自定义控件 绘图最大的一个应用场景就是自定义控…

三 TypeScript变量

流程控制 计算机执行程序的时候是按照从上到下从左到右逐行进行 我们常见的流程&#xff1a; 顺序 分支循环 分支结构 分支结构 单分支 语法结构 if(表达式){代码块}执行逻辑:当程序遇到if结构,首先判断表达式的值,如果表达式的值为真,则执行大括号里面的代码块,如果表达…

Spring - FactoryBean扩展接口

文章目录Preorg.springframework.beans.factory.FactoryBeanFactoryBean中的设计模式----工厂方法模式FactoryBean VS BeanFactory源码解析扩展示例Pre Spring Boot - 扩展接口一览 org.springframework.beans.factory.FactoryBean package org.springframework.beans.factory…

IDEA新建一个spark项目

第一步&#xff1a;新建一个maven工程 第二部&#xff1a;命名工程名 第三步&#xff1a;新建一个文件夹&#xff0c;并设置为sources root 第四步&#xff1a;pom编写 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http:/…

表格数据方法、分页方法及组件的封装和分页组件的复用

请假列表 1、数据获取与显示的通用方法封装 <template><div> <el-table:data"tableData"height"450"borderstyle"width: 100%":default-sort"{ prop: number, order: Ascending }"><!-- <el-table-column pr…

亚像素级精确度的角点

有时我们需要最大精度的角点检测。OpenCV为我们提供了函cv2.cornerSubPix()&#xff0c; 它可以提供亚像素级别的角点检测。下面是一个例子。首先我们要找到 Harris 角点&#xff0c;然后将角点的重心传给这个函数进行修正。Harris 角点用红色像素标出&#xff0c;绿色像素是修…

[附源码]计算机毕业设计社区疫情防控信息管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

jdk11新特性——新加的一些更实用的API

目录一、集合 增强1.1、List集合 of()方法1.2、Set集合 of()方法1.3、Map集合 of()方法1.4、List集合copyOf()方法1.5、of()和copyOf()方法创建集合的注意事项二、Stream 增强2.1、Stream 新增of()方法2.2、Stream 新增ofNullable()方法2.3、Stream 新增takeWhile() 和 dropWhi…

[附源码]Python计算机毕业设计Django网文论坛管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

torchnet简介

前言 最近项目开发过程中遇到了torchnet.metertorchnet.metertorchnet.meter来记录模型信息&#xff0c;搜了好多篇博客&#xff0c;都潦草草没有一点干货。于是参考了官方文档以及参考代码&#xff0c;根据自己的理解&#xff0c;在此做了一个其的使用教程&#xff1a; torc…

flink1.13.2 Streaming File Sink产生大量orc小文件的问题解决方案

Orc小文件合并问题 Orc小文件合并问题 现象:hdfs中出现大量ORC小文件 1.1. 已经映射为hive表ORC小文件合并 1.1.1. 非分区表 alter table 表名 concatenate; 示例: alter table ods_lxy_demo concatenate; 注意:可多次重复执行,每执行一次就会做一次文件合并,执行多次最终…

gitee/github上传远程仓库错误usage: git remote add [<options>] <name> <url>

gitee/github上传远程仓库错误gitee/github上传远程仓库错误错误截图版本错误出现时间错误检查及解决1.网址中含有空格2.关闭翻译软件3.git bash自身问题gitee/github上传远程仓库错误 不知道大家最近有没有碰到这个错误usage: git remote add [<options>] <name>…

[附源码]计算机毕业设计JAVA疫情防控期间网上教学管理

[附源码]计算机毕业设计JAVA疫情防控期间网上教学管理 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

Uniapp云开发(Uniapp入门)

前言&#xff1a; 今天这篇文章主要讲解的是Uniapp云开发基础&#xff0c;有了Uniapp云开发&#xff0c;我们就不用需要后端&#xff0c;前端自己就可以实现增删改查。还有就是案例很重要&#xff0c;一定要看&#xff0c;自己去尝试运行试试。 目录超详细一. 什么是Uniapp云开…

分布式配置中心Apollo

Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#xff0c;适用于微服务配置管理场景。 服务…

【Python百日进阶-数据分析】Day326 - plotly.express.scatter_geo():地理散点图

文章目录一、scatter_geo语法二、参数三、返回类型四、实例4.1 常规地理散点图4.2自定义地理散点图4.3GeoPandas 的基本示例一、scatter_geo语法 plotly.express.scatter_geo(data_frame None ,lat None ,lon None ,locations None ,locationmode None ,geojson None , …

MuziDB数据库-0.项目描述

前言 该项目写完也有一段时间了&#xff0c;为了避免以后忘记该项目的一些实现的原理&#xff0c;所以写下这篇博客来记录一下该项目的设计等 项目整体 MuziDB分为前端与后端&#xff0c;前后端交互通过socket进行交互&#xff0c;前端的作用就是读取用户输入并发送到后端进…

mybatis开发要点-insert主键ID获取和多参数传递

1.2、代码示例 二、查询如何传入多个参数 1、使用map传递参数&#xff1b; 2、使用注解传递参数&#xff1b; 3、使用Java Bean的方式传递参数&#xff1b; 一、插入数据主键ID获取 一般我们在做业务开发时&#xff0c;经常会遇到插入一条数据并使用到插入数据的ID情况。如…