蓝桥杯(C++ 矩形总面积 错误票据 分糖果1 三国游戏 分糖果2)

目录

一、矩形总面积 

思路:

代码: 

 二、错误票据

思路:

代码: 

 三、分糖果1

思路:

代码:

四、三国游戏

思路:

代码: 

五、分糖果2

思路:

代码:

一、矩形总面积 

思路:

1、分四种情况为没有重叠 (x[2] < x[3] || y[2] < y[3] || x[4] < x[1] || y[4] < y[1]),这种情况下输出为两矩形面积之和。

2、重叠的情况下输出为两个矩形的面积之和减去重叠面积之和。

3、重叠面积:

              长为:小的右上角坐标减去大的左下角坐标

              宽为:小的右上角坐标减去大的左下角坐标

              面积:长×宽

代码: 

#include <iostream>
using namespace std;
int main()
{
    long long x[5], y[5];
    for (int i = 1; i <= 4; i++)
        cin >> x[i] >> y[i];
    long long ans = (x[2] - x[1]) * (y[2] - y[1]) + (x[4] - x[3]) * (y[4] - y[3]);
    if (x[2] < x[3] || y[2] < y[3] || x[4] < x[1] || y[4] < y[1])//完全不重叠
        cout << ans;
    else
    {
        long long a = abs(max(x[1], x[3]) - min(x[2], x[4]));
        long long b = abs(max(y[1], y[3]) - min(y[2], y[4]));
        cout << ans - a * b;
    }
    return 0;
}

 二、错误票据

思路:

1、用数组下标来表示数,记录数出现的次数。

2、记录最小,最大值,从最小到最大遍历

3、等于0,则为断号ID;等于1,则出现一次;超过1,则为重号ID。

代码: 

#include <iostream>
using namespace std;
int main()
{
    int a[10010] = { 0 };
    int n, temp, max=0, min=1e9;
    cin >> n;
    while (n--)
    {
        while (cin >> temp)
        {
            if (temp > max)
                max = temp;
            if (temp < min)
                min = temp;
            a[temp]++;
        }
    }
    int m, d;
    for (int i = min; i <= max; i++)
    {
        if (a[i] == 0)
            m = i;
        else if (a[i] > 1)
            d = i;
    }
    cout << m << " " << d;
}

 三、分糖果1

思路:

1、将字符串从小到大排序

2、相差度要尽量小,分为三种情况

3、第一种:全都一样,则分成x组,奇数则后面的多加一个

      第二种:第x个与第一个一样,则从第x个到最后

      第三种:第1个到第x个都不一样,输出第x个

代码:

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int n, x;
	cin >> n >> x;
	char s[1000010];
	for(int i=1;i<=n;i++)
	      cin >> s[i];
	sort(s+1, s + n+1 );
	//for (int i = 1; i <= n; i++)
				//cout << s[i];
	if (s[1] == s[n])//全都一样,则分成x组,奇数则后面的多加一个
	{
		int cnt;
		if (n % x == 0)
			cnt = n / x;
		else
			cnt = n / x + 1;
		for (int i = 1; i <= cnt; i++)
			cout << s[i];
	}
	else if (s[x] == s[1])//第x个与第一个一样,则从第x个到最后
	{
		for (int i = x; i <= n; i++)
			cout << s[i];
	}
	else//输出第x个
		cout << s[x];
}

四、三国游戏

思路:

1、分三种情况:x赢,y赢,z赢

2、分三种情况排序,第一种根据x和(y+z)的差值排序,第二种根据y和(x+z)的差值排序,第三种根据z和(x+y)的差值排序

3、遍历,求出最大ans,没有则输出-1

代码: 

#include <iostream>
#include <algorithm>
using namespace std;
struct node
{
	int x, y, z;
}a[100010];
bool cmp1(node a, node b)//根据x 和(y+z)的差值排序
{
	return a.x - (a.y + a.z) > b.x - (b.y + b.z);
}
bool cmp2(node a, node b)//根据y 和(x+z)的差值排序
{
	return a.y - (a.x + a.z) > b.y - (b.x + b.z);
}
bool cmp3(node a, node b)//根据z 和(x+y)的差值排序
{
	return a.z - (a.y + a.x) > b.z - (b.y + b.x);
}
int main()
{
	int n;
	cin >> n;
	long long ans = -1, sum1 = 0, sum2 = 0;
	for (int i = 0; i < n; i++)
		cin >> a[i].x;
	for (int i = 0; i < n; i++)
		cin >> a[i].y;
	for (int i = 0; i < n; i++)
		cin >> a[i].z;
	sort(a, a + n, cmp1);//x赢
	for (int i = 0; i < n; i++)
	{
		sum1 += a[i].x;
		sum2 += a[i].y + a[i].z;
		if (sum1 > sum2 && ans <= i + 1)
			ans = i + 1;
	}
	sum1 = 0, sum2 = 0;
	sort(a, a + n, cmp2);//y赢
	for (int i = 0; i < n; i++)
	{
		sum1 += a[i].y;
		sum2 += a[i].x + a[i].z;
		if (sum1 > sum2 && ans <= i + 1)
			ans = i + 1;
	}
	sum1 = 0, sum2 = 0;
	sort(a, a + n, cmp3);//z赢
	for (int i = 0; i < n; i++)
	{
		sum1 += a[i].z;
		sum2 += a[i].y + a[i].x;
		if (sum1 > sum2 && ans <= i + 1)
			ans = i + 1;
	}
	cout << ans;
}

五、分糖果2

思路:

1、模拟传递糖果,分发糖果

2、每个小朋友每轮过后手上糖果数量为a[i] = a[i] / 2 + a[i + 1] / 2,最后一个小朋友的为a[n] = a[n] / 2 + a[1]/2;

3、循环,直到所有小朋友糖果都一样,跳出循环

代码:

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	int a[105];
	int ans = 0;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	while (1)
	{
		int temp = a[1] / 2;
		for (int i = 1; i < n; i++)
		{
			a[i] = a[i] / 2 + a[i + 1] / 2;
		}
		a[n] = a[n] / 2 + temp;
		int flag = 1;
		for (int i = 1; i <= n; i++)
		{
			if (a[i] != a[1])
			{
				flag = 0;
			}
			if (a[i] % 2 == 1)
			{
				a[i] += 1;
				ans++;
			}
		}
		if (flag == 1)
			break;
	}
	cout << ans;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS2机器人开发入门

ROS2学习 文章目录 ROS2学习ROS2对比ROS1的区别架构API编译系统OS 通讯节点模型进程安装命令 创建功能包 节点话题&#xff1a;节点间传输数据的桥梁发布者Publisher订阅者SubscriberROS2话题示例-发布图像话题ROS2话题示例-订阅图像话题usb相机的标准驱动 服务服务器端客户端 …

如何压缩视频到50m以内?这几个参数设置了吗?

在我们的日常生活中&#xff0c;视频文件经常占据较大的存储空间&#xff0c;给我们存储和传输带来了困扰&#xff0c;那么如何将视频文件压缩至50m以下呢&#xff1f;下面就为大家分享三个实用的方法&#xff0c;轻松解决视频过大问题。 方法一&#xff1a;调整视频分辨率 视…

亚马逊鲲鹏系统:强大防指纹技术引领全自动账号管理新时代

亚马逊作为全球最大的电商平台之一&#xff0c;一直都很受客户欢迎&#xff0c;而亚马逊鲲鹏系统的全新推出&#xff0c;旨在解决买家账号过多时的管理难题。据了解&#xff0c;这一系统不仅能够有效防止账号关联&#xff0c;而且在保障每个账号独立运行的同时&#xff0c;还拥…

JAVA——数据类型与运算符

数据类型 注意事项&#xff1a;1.初始化操作是可选的, 但是建议创建变量的时候都显式初始化. 2.最后不要忘记分号, 否则会编译失败. 3.初始化设定的值为 10L , 表示一个长整型的数字. 10l 也可以. 4.float 类型在 Java 中占四个字节, 遵守 IEEE 754 标准. 由于表示的数据精度范…

k8s的坑,从这里开始

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 以前刚接触k8s时踩了不少坑&#xff0c;比如这些&#xff1a; 问题1 1、在master节点使用kubectl命令时&#xff0c;报错&…

新手如何学习单片机入行?

新手如何学习单片机入行&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&…

使用 Docker 部署 的WAF: 雷池社区版

Web应用防火墙&#xff08;WAF&#xff09;是保护网站不受恶意攻击的关键组件。 使用 Docker 部署雷池社区版&#xff0c;可以大大简化安全管理工作。 一、WAF 雷池社区版简介 雷池社区版是一种流行的开源 Web 应用防火墙&#xff0c;它提供基本的安全保护&#xff0c;如防止…

10个常考的前端手写题,你全都会吗?

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

CentOS 6.10 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境&#xff0c;客观条件不得不用的话&#xff0c;优选7.9版本&#xff0c;8.5版本次之&#xff0c;最次6.10版本&#xff08;比如说Oracle 11GR2就建议在6版本上部署&#xff09;&#xff01; 引导和开始安装 选择倒计时结…

python爬虫--网页代码抓取

我回来了。 目录 前言一、爬虫是什么&#xff1f;二、使用步骤代码讲解第一版第二版第三版 总结 前言 爬虫&#xff0c;第一章 一、爬虫是什么&#xff1f; 爬虫是指一种自动化程序&#xff0c;通常被用于互联网上的数据采集。这些程序会模拟人类用户的行为&#xff0c;通过…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (12) | 视觉模型可视化与可解释性(Visualizing and Understanding)

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

【题解 优化dp】 B - Base Station Construction

题目描述&#xff1a; 分析&#xff1a; 当dp状态设定不好的时候&#xff0c;我们不妨从最简单的部分出发 设 f i f_i fi​表示必须在第i个点建设基站&#xff0c;并且i号点之前的线段全部满足要求时所需要的最小代价 为什么这么设呢&#xff1f; 这道题想要入手&#xff0c;…

数据结构Java版(2)——栈Stack

一、概念 栈也是一种线性数据结构&#xff0c;最主要的特点是入栈顺序和出栈顺序是相反的&#xff0c;操作时只能从栈顶进行操作&#xff0c;在Java中给我们提供了一个泛型栈——Stack&#xff0c;其中最常用的方法有&#xff1a; void push(E):进栈E pop():退栈E peek():查看…

Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)

List接口 要了解List接口&#xff0c;就不得不说起Java的集合框架。 &#xff08;该图来自菜鸟教程&#xff09; Collection接口和Map接口 Java 集合框架主要包括两种类型的容器&#xff0c;集合Collection和图Map。 Collection接口代表了单列集合&#xff0c;它包含了一组…

并发编程知识点梳理

并发编程 在了解并发编程基本知识&#xff0c;先了解几本书&#xff0c;方便学习提高&#xff0c;分别为&#xff1a;java编程思想、企业应用架构模式、并发编程实战。 多线程中的设计模式有&#xff1a;Future、Master-Worker、生产者-消费者。 本次课程分为以下几部分进行…

js - - - - - getSelection 对光标和选区的操作

window.getSelection getSelection示例代码属性方法 getSelection 官方MDN地址 示例代码 <template><div>这里是一段默认的文字内容</div> </template> <script> export default {name: "Home",mounted() {document.addEventListen…

在PyCharm中创建Flask项目

在 PyCharm 中创建 Flask 项目的步骤如下&#xff1a; 打开 PyCharm&#xff0c;并选择 "Create New Project"&#xff08;新建项目&#xff09;。在弹出的窗口中&#xff0c;选择左侧的 "Python" 选项&#xff0c;然后选择右侧的 "Flask" 项目…

iPerf3 使用指南

文章目录 iPerf3 使用指南1 iPerf3 简介2 安装指令2.1 Windows2.2 Linux 3 入门用法4 进阶用法4.1 启动服务端4.2 TCP 带宽测试4.3 UDP 带宽测试 5 iPerf3 命令说明 iPerf3 使用指南 1 iPerf3 简介 iPerf3 是用于主动测试 IP 网络上最大可用带宽的工具。它支持时序、缓冲区、…

快速评估您的IT事件管理实践

您在寻找提高事件响应效率和有效性的方法吗&#xff1f;为什么需要评估IT事件管理&#xff1f; 尽管改进组织的事件管理实践不会一蹴而就&#xff0c;但我们还是要从制定明确的事件响应计划开始。 使用ServiceDesk Plus&#xff0c;快速检查您的事件管理实践是否符合行业标准&a…

SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195)

1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数&#xff0c;该调用了自定义函数validScript&#xff0c;该函数中用户能够控制 functi…