蓝桥杯(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;elsecnt = 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最长上升子序列模型(LIS)

最长上升子序列模型就像它的名字一样&#xff0c;用来从区间中找出最长上升的子序列。它主要用来处理区间中的挑选问题&#xff0c;可以处理上升序列也可以处理下降序列&#xff0c;原序列本身的顺序并不重要。 模型 895. 最长上升子序列&#xff08;活动 - AcWing&#xff0…

Android中矩阵Matrix实现平移,旋转,缩放和翻转的用法详细介绍

一&#xff0c;矩阵Matrix的数学原理 矩阵的数学原理涉及到矩阵的运算和变换&#xff0c;是高等代数学中的重要概念。在图形变换中&#xff0c;矩阵起到关键作用&#xff0c;通过矩阵的变换可以改变图形的位置、形状和大小。矩阵的运算是数值分析领域的重要问题&#xff0c;对…

2024 前端高频面试题之 HTML/CSS 篇

【前言】随着市场的逐渐恶劣&#xff0c;通过总结面试题的方式来帮助更多的coder&#xff0c;也是记录自己的学习过程&#xff0c;温故而知新。欢迎各位同胞大大点评补充~ 前端面试题之 HTML/CSS 篇 1、HTML 语义化&#xff1f;2、块级元素&内联样式3、盒子模型的理解&…

【并发编程】synchornized原理

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 目录 Monitor概念 Java对象头 普通对象 数组对象 Monitor(锁) Monitor结构如下&#xff1a; 注意&#xff1a; 原理之synchornized 轻量…

在PyCharm中创建Flask项目

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

移动云助力智慧交通数智化升级

智慧交通是在整个交通运输领域充分利用物联网、空间感知、云计算、移动互联网等新一代信息技术&#xff0c;综合运用交通科学、系统方法、人工智能、知识挖掘等理论与工具&#xff0c;以全面感知、深度融合、主动服务、科学决策为目标&#xff0c;推动交通运输更安全、更高效、…

AbstractHttpMessageConverter + easyexcell优雅下载附件

介绍 AbstractHttpMessageConverter 是 Spring 框架中用于处理 HTTP 消息转换的抽象基类。它用于处理来自 HTTP 请求的消息,并将其转换为特定的 Java 对象,或者将 Java 对象转换为 HTTP 响应消息。 这个抽象类允许开发人员创建自定义的 HTTP 消息转换器,以便在 Spring MVC…

HTML 表单

文章目录 表单什么是表单GET和POST两种提交方式有什么不同?表单元素表单项外文本单行文本输入框单行文本密码框单选框复选框下拉列表框上传文件隐藏域填写邮箱填写电话填写数字填写日期进度条多行文本输入框提交按钮取消按钮 用户注册案例 表单 什么是表单 form:表单元素 此…

游戏《泰坦陨落2》msvcr120.dll丢失的多种解决方法分享

在Windows 11操作系统环境下&#xff0c;众多玩家在体验《泰坦陨落2》这款备受瞩目的射击游戏时&#xff0c;遭遇了一个令人困扰的技术问题&#xff1a;系统提示缺失msvcr120.dll文件。这一关键的动态链接库文件对于游戏的正常运行至关重要&#xff0c;它的缺失直接导致了《泰坦…

Producer源码解读

Producer源码解读 在 Kafka 中, 我们把产生消息的一方称为 Producer 即 生产者, 它是 Kafka 的核心组件之一, 也是消息的来源所在。它的主要功能是将客户端的请求打包封装发送到 kafka 集群的某个 Topic 的某个分区上。那么这些生产者产生的消息是怎么传到 Kafka 服务端的呢&a…

基于小波多普勒变换的回波信号检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1小波变换基础 4.2 多普勒效应与多普勒变换 4.3 小波多普勒变换 4.4 回波信号检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 %回波…

跨Android、iOS、鸿蒙多平台框架ArkUI-X

ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具&#xff0c;帮助您提升移动应用界面开发效率30%。您只需使用一套ArkTS API&#xff0c;就能在Android、iOS、鸿蒙多个平台上提供生动而流畅的用户界面体验。 一…