首页 > 编程语言 >【蓝桥杯】C++ 第20场 小白入门赛

【蓝桥杯】C++ 第20场 小白入门赛

时间:2024-10-20 16:58:37浏览次数:1  
标签:long 20 int cin C++ 蓝桥 dp 客房 等级

一、四个亲戚

题目

四个亲戚

 题目分析

字面意思:Daiyu+‘kind’

代码

#include <iostream>
using namespace std;
int main()
{
  cout<<"Daiyu'kind'";
  return 0;
}

二、黛玉泡茶

题目

黛玉泡茶

 

题目分析

1.我们可以c

2.然后c

3.计算c,如果不能,整除后的答案还要加1

 代码

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int n, m, k;
	int c[1000];
	cin >> n >> m >> k;
	for (int i = 0; i < n; i++)
	{
		cin >> c[i];
	}
	sort(c, c + n);//需要斟满的茶杯最小容量
	long long int sum = 0, count = 0;
	for (int i = 0; i < k; i++) //需要斟满的茶杯最小容量
	{
		sum += c[i];
	}
	if (sum % m != 0)//需要斟满的茶杯最小容量
	{
		count = sum / m + 1;
	}
	else
	{
		count = sum / m;
	}
	cout << count;
	return 0;
}

三、宝玉请安

题目

宝玉请安

 

 

 题目分析

分为三种情况,将宝玉、衡芜苑和潇湘馆所在位置距离正门的步数分别记为x,y,z。

1.当x<y且x<z时,步数为y与z两者之中最大者减去x

2.当x>y且x>z时,步数为x减去y与z两者之中最小者

3.当x位于y,z之间,先计算x距离y的距离与x距离z的距离那个小,即为mid,然后再将mid加上y与z之间的距离即为最大步数

代码

#include <iostream>
using namespace std;
int main()
{
	int t;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		int x, y, z, count=0;
		cin >> x >> y >> z;
		if (x < y && x < z)
		{
			count = max(y, z) - x;
		}
		else if (x > y && x > z)
		{
			count = x - min(y, z);
		}
		else
		{
			int mid = min(max(y, z) - x, x - min(y, z));
			count = mid + (max(y, z) - min(y, z));
		}
		cout << count << endl;
	}
	return 0;
}

四、贾母祝寿

题目

贾母祝寿

 

 题目分析

思路一

这个思路是考试的时候写题想的,样例是对的,但是不能过。

过程就是硬推操作过程,然后将数组进行绝对值处理,然后排序,输出最大值

思路二

后面发现只需要抓住一个点,最值只会出现在首尾。

每次操作时,如果是1,则让首加y,如果是2,则让尾减y,还要注意x==n的特殊情况

代码

代码一

#include <iostream>  
#include <vector>  
#include <algorithm>  
#include <cmath> 
using namespace std;

int main()
{
    long long int n, q;
    cin >> n >> q;
    vector<long long int> a(n, 0);

    for (long long int i = 0; i < q; i++)
    {
        long long int t, x, y;
        cin >> t >> x >> y;

        if (t == 1)
        {
            for (long long int j = 0; j < x ; j++)
            {
                a[j] += y;
            }
        }
        else if (t == 2)
        {
            // 从数组末尾开始向前遍历 x 个元素  
            for (long long int j = n - 1; j >= n - x ; j--)
            {
                a[j] -= y;
            }
        }
    }
    transform(a.begin(), a.end(), a.begin(), [](long long int val) { return abs(val); });

    auto max_brightness = *max_element(a.begin(), a.end());

    // 输出最大亮度值  
    cout << max_brightness << endl;

    return 0;
}

代码二

#include <iostream>
using namespace std;

int main()
{
	int n, q;
	long long int ans1 = 0, ans2 = 0;
	cin >> n >> q;
	for (int i = 0; i < q; i++)
	{
		int t, x, y;
		cin >> t >> x >> y;
		if (t == 1)
		{
			ans1 += y;
			if (x == n)
			{
				ans2 += y;
			}
		}
		else
		{
			ans2 -= y;
			if (x == n)
			{
				ans1 -= y;
			}
		}
	}
	ans2 = -ans2;
	if (ans1 > ans2)
	{
		cout << ans1;
	}
	else
	{
		cout << ans2;
	}
	return 0;
}

五、清洁客房

题目

清洁客房

 

题目分析

1.使用动态规划的方法

2.当只有1间客房时,且要求使用1种清洁等级(至少为1),则有9种方案(从1到9),所以为dp[1][1]=9

3.对于第i间客房,如果只用1种清洁等级,那么它必须和前一间客房使用相同的等级,所以 dp[i][1] = dp[i-1][1]

4.如果用2种清洁等级,那么第i间客房可以选择和前一间客房相同的等级(此时前i-1间客房已经用了2种等级),或者选择一个新的等级(此时前i-1间客房只用了1种等级,且第i间客房的等级不能和前一间相同,所以有9-1=8种选择)。因此,dp[i][2] = dp[i-1][2] * 2 + dp[i-1][1] * 9

5.如果用3种清洁等级,那么第i间客房可以选择和前一间客房相同的等级(此时前i-1间客房已经用了3种等级),或者选择一个新的等级(此时前i-1间客房用了2种等级,且第i间客房的等级不能和前一间相同,也不能和之前已经用过的另一种等级相同,所以有9-2=7种选择,但因为前i-1间客房的两种等级可以互换,所以实际上是8种选择)。因此,dp[i][3] = dp[i-1][3] * 3 + dp[i-1][2] * 8

 举例

假设n=3,我们要求的是3间客房使用3种不同清洁等级的方案数。

  • 对于第1间客房,有9种选择(1到9)。
  • 对于第2间客房,如果它和第1间客房使用相同的等级,那么前2间客房只用了1种等级;如果它选择一个新的等级,那么前2间客房用了2种等级。
  • 对于第3间客房,如果它和前一间客房使用相同的等级,那么前3间客房可能用了1种或2种或3种等级;如果它选择一个新的等级,那么前3间客房一定用了3种等级

代码

#include <iostream>
using namespace std;
const int mod = 1e9 + 7;
const int n = 1e5 + 6;
long long int dp[n][4];
int main()
{
	dp[1][1] = 9;//当只有1间客房时,且要求使用1种清洁等级(至少为1),则有9种方案(从1到9)
	for (int i = 2; i < n; i++)
	{
		//对于i间客房,使用1种清洁等级时,只能继承前一间客房的1种清洁等级
		dp[i][1] = dp[i - 1][1] % mod;
		/*对于i间客房,使用2种清洁等级时,可以是在前一间客房使用2种等级的
		基础上再添加一种相同的等级(乘以2),或者是在前一间客房使用1种等级
		的基础上添加一种新的等级(乘以9,因为新的等级可以是1到9中的任意一
		种,但不能是之前使用的那个等级,但0不能作为新的等级)*/
		dp[i][2] = (dp[i - 1][2] * 2 + dp[i - 1][1] * 9) % mod;
		/*对于i间客房,使用3种清洁等级时,可以是在前一间客房使用3种等级的
		基础上再添加一种相同的等级(乘以3,因为3种等级都可以作为新的“相
		同”等级),或者是在前一间客房使用2种等级的基础上添加一种新的等级
		(乘以8,因为新的等级可以是剩下的7种等级中的任意一种,但0不能作为新的等级)*/
		dp[i][3] = (dp[i - 1][3] * 3 + dp[i - 1][2] * 8) % mod;
	}

	int t;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		int n;
		cin >> n;
		cout << dp[n][3] << endl;
	}
	return 0;
}

 

 

标签:long,20,int,cin,C++,蓝桥,dp,客房,等级
From: https://www.cnblogs.com/hcrzhi/p/18487512

相关文章

  • 2024-2025-1 20241314 《计算机基础与程序设计》第四周学习总结
    2024-2025-120241314《计算机基础与程序设计》第四周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第四周作业作业正文正文教材学习内容总结计算机系统计算机组成:中央处理......
  • (2024-2025-1)20241420《计算机基础与程序设计》第四周学习总结
    学期(如2024-2025-1)20241420《计算机基础与程序设计》第四周学习总结<班级链接>https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/join?id=CfDJ8AOXHS93SCdEnLt5HW8VuxQ23KfVCDd17M92RURIJwdTBPMF7locrEwU_PbdKakofz0zTbJuc7KceG9Y6oQCShgfHFT19twYLe61kME6CedB920aZMY90TR......
  • # 2024-2025-1 20241408陈烨南 《计算机基础与程序设计》第4周学习总结
    2024-2025-120241408陈烨南《计算机基础与程序设计》第4周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标门电路,组合电......
  • 2024-2025-1 20241301 《计算机基础与程序设计》第四周学习总结
    |这个作业属于哪个课程|<2024-2025-1-计算机基础与程序设计>||这个作业要求在哪里|<2024-2025-1计算机基础与程序设计第一周作业>||这个作业的目标|<巩固知识,夯实基础>||作业正文|https://www.cnblogs.com/HonJo/p/18487439|教材学习内容总结1.pep9的体系结构PEP9是一个教......
  • TD导航zlibrary镜像网站最新国内可访问地址(2024更新)
    TD导航是一个综合性的网址导航网站,它致力于为用户提供便捷、高效的上网体验。在这个平台上,用户可以轻松找到各类热门网站和实用工具,无论是新闻资讯、社交娱乐、购物消费,还是学习教育、工作办公等领域,TD导航都提供了丰富的资源链接。zlibrary镜像网址zlibrary最新国内可访问:h......
  • 2024-2025-1(20241321)《计算机基础与程序设计》第四周学习总结
    这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<了解并学习AI功能,回顾一周课程心得>作业正文...本博客链接https://www.cnblogs.com/guchua......
  • 学期2024-2025-1 学号20241317 《计算机基础与程序设计》第四周学习总结
    学期2024-2025-1学号20241317《计算机基础与程序设计》第四周学习总结作业信息https://www.cnblogs.com/manurios/p/18487427这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程......
  • 20241020比赛总结
    T1Reversehttps://www.gxyzoj.com/d/hzoj/p/P980假设1在点i时,这个1可以通过一次翻转到达那些点,将这些点和i连边,此时答案就是s到x的最短路但是,此时边数也会到达\(n^2\)级别考虑优化,因为边权均为1,所以可以直接bfs,可以发现每个点能转移的点的奇偶性是有限制的,而且每个点至多被更......
  • 20222422 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    一.实验内容(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程(2)使用socat获取主机操作Shell,任务计划启动(3)使用MSFmeterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运......
  • 2024-2025-1 20241328 《计算机基础与程序设计》第四周学习总结
    学期(如2024-2025-1)学号20241428《计算机基础与程序设计》第4周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标门电路,组......