【题解(c++)】「蓝桥·算法双周赛」第十五场分级赛——强者挑战赛

news2024/11/21 0:12:59

竞赛链接

目录

  • 老君炼丹【算法赛】
    • 大意
    • 思路
  • 拯救美猴王【算法赛】
    • 大意
    • 思路
    • 打卡蓝桥杯周赛!

老君炼丹【算法赛】

大意

有一个数组,每一次可以选择两个元素 a i , a i ≤ 0 a_i,a_i\le0 ai,ai0和一个 a j , a j ≥ 0 a_j,a_j\ge0 aj,aj0,将他们删除,然后将他们的和 a i + a j a_i+a_j ai+aj作为新元素加入到数组中,问最后能否使得最后数组只剩一个元素

思路

首先,不论如何操作,数组元素之和 s u m sum sum是不变的,那么,数组和为正数时,如果除了最大数之外的元素之和也是正数,最后就会剩下两个正数(想象成用所有负数去消耗剩下的正数,还消耗不完),无法操作;数组和为负数时同理。

具体实现就是,先求数组和,排序,判断即可。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
/***************main****************/
vector<ll> a;
ll sum = 0;
bool sol(ll l, ll r) {
  if (sum > 0) {
    if (sum - a[r] > 0)
      return false;
    else
      return true;
  } else if (sum < 0) {
    if (sum - a[0] < 0)
      return false;
    else
      return true;
  } else
    return true;
}
int main() {
  int N;
  cin >> N;
  for (int i = 0; i < N; ++i) {
    ll x;
    cin>>x;
    sum += x;
    a.push_back(x);
  }
  sort(a.begin(), a.end());
  cout << (sol(0, N - 1) ? "Y" : "N");
  return 0;
}

拯救美猴王【算法赛】

大意

给定一个大小为 N N N的数组,请问有多少个五元组 ( a , b , c , d , e ) (a,b,c,d,e) (a,b,c,d,e)的下标组合满足以下条件:
1 ≤ a < b < c < d < e ≤ N 1≤a<b<c<d<e≤N 1a<b<c<d<eN. A a + A b = A c = A d + A e A_a+A_b=A_c=A_d+ A_e Aa+Ab=Ac=Ad+Ae

思路

枚举c,并用两个map分别记录[0,i-1],[i+1,n-1]两个区间的满足 A a + A b = A c = A d + A e A_a+A_b=A_c=A_d+ A_e Aa+Ab=Ac=Ad+Ae的数对数量,也就是在[0,i-1]内找满足条件的a,b的数量,在[i+1,n-1]内找满足条件的d,e的数量,将二者数量相乘,就是下标为c对答案的贡献,累加这个贡献即可。

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
/***************main****************/
ll sol(map<ll, ll>& m, ll x) {
  ll res = 0;
  for (auto& [v, c] : m) {
    if (v * 2 == x)
      res += (c * (c - 1));
    else if (m.find(x - v) != m.end())
      res += c * m[x - v];
  }
  return (res >> 1ll);
}
int main() {
  int N;
  cin >> N;
  vector<ll> A(N);
  map<ll, ll> m1, m2;
  for (ll i = 0; i < N; ++i) {
    cin >> A[i];
    m2[A[i]]++;
  }
  ll ans = 0;
  for (ll i = 0; i < N - 2; ++i) {
    m2[A[i]]--;
    if (i > 1) ans += sol(m1, A[i]) * sol(m2, A[i]);
    m1[A[i]]++;
  }
  cout << ans << endl;
  return 0;
}

打卡蓝桥杯周赛!

蓝桥杯比赛界面:
蓝桥杯比赛界面
蓝桥杯比赛,奖励丰厚!
在这里插入图片描述

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

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

相关文章

前端必知必会-html布局和响应式网页设计

文章目录 HTML 布局CSS 框架CSS 浮动布局CSS flex布局CSS 网格布局HTML 响应式网页设计设置viewport响应式图像使用 max-width 属性根据浏览器宽度显示不同的图像响应式文本大小媒体查询Bootstrap总结 HTML 布局 HTML5 有几个语义元素&#xff0c;它们定义网页的不同部分&#…

【Python系列】Python 中的垃圾收集:深入理解与实践

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

vue中使用Marked实现预览md文件(base64编码图片)

vue中使用Marked实现预览md文件&#xff08;base64编码图片&#xff09; 在上一篇vue-markdown实现预览md文件时&#xff0c;后端返回的图片格式是base64格式的&#xff0c;试了很多方法都不能显示&#xff0c;因此换成了marked插件进行预览&#xff0c;同时也支持显示大纲目录…

入门 PyQt6 看过来(案例)12~ 列表增删排序

本文介绍如何实现列表增加删除和排序的功能&#xff0c;效果如下&#xff1a; 1 页面设计 1.1 列表 #列表数据self.list [福宝, 萌兰, 金虎,蓝天]# 创建四行一列标准数据模型self.modeQStandardItemModel(4,1)# 将数据中的列表项作为标准数据模型输出for i in range(self.mod…

17.延迟队列

介绍 延迟队列&#xff0c;队列内部是有序的&#xff0c;延迟队列中的元素是希望在指定时间到了以后或之前取出和处理。 死信队列中&#xff0c;消息TTL过期的情况其实就是延迟队列。 使用场景 1.订单在十分钟内未支付则自动取消。 2.新创建的店铺&#xff0c;如果十天内没…

tomat 启动项目请求中文乱码 日志乱码

tomat 启动项目请求中文乱码 日志乱码 tomat 启动项目请求中文乱码 日志乱码检查tomcat编码检查项目编码检查服务器编码修改catalina.bat 测试 tomat 启动项目请求中文乱码 日志乱码 项目部署后 请求信息中文乱码 {""address":"娴嬭瘯", "Prov…

【Django】ajax和django接口交互(获取新密码)

文章目录 一、需求1. 效果图 二、实验1. 写get接口后端2. 写html后端3. 写前端4. 测试 一、需求 1. 效果图 二、实验 1. 写get接口后端 写views import string import random def getnewpwd(request):words list(string.ascii_lowercasestring.ascii_uppercasestring.digi…

C# form的移植工作

前言&#xff1a; 目标&#xff0c;将一个项目的form移植到新的工程下&#xff0c;且能够正确编译执行&#xff1a; 1 Copy form的两个文件到新工程下&#xff1a; 比如笔者的logo form 2 修改命名空间&#xff1a; 然后&#xff0c;找到新项目的主程序&#xff1a; 的命名…

Hive3:Hive初体验

1、创建表 CREATE TABLE test(id INT, name STRING, gender STRING);2、新增数据 INSERT INTO test VALUES(1, 王力红, 男); INSERT INTO test VALUES(2, 钉钉盯, 女); INSERT INTO test VALUES(3, 咔咔咔, 女);3、查询数据 简单查询 select * from test;带聚合函数的查询 …

vue2和el-input无法修改和写入,并且不报错

文章目录 一. 业务场景描述二. 原因分析三.解决方案3.1 方案一 原生标签&#xff08;不建议&#xff09;3.2 方案二 父子传递&#xff08;不建议&#xff09;3.3 方案三 vuex&#xff0c;pinia 状态传值&#xff08;不建议&#xff09;3.4 方案四 vue初始化属性 &#xff08;建…

C语言程序设计之链表篇1

程序设计之链表1 链表问题1_1代码1_1结果1_1 问题1_2代码1_2结果1_2 问题1_3代码1_3结果1_3 链表 考查链表的数据结构&#xff0c;需利用指针变量才能实现&#xff0c;一个结点中应包含一个指针变量&#xff0c;用来存放下一个结点的地址。 建立单向链表的一般步骤是&a…

Ubuntu上安装anaconda创建虚拟环境(各种踩坑版)

之前都是在Windows桌面版进行深度学习的环境部署及训练&#xff0c;今天尝试了一下在Ubuntu上进行环境部署&#xff0c;踩了不少坑&#xff0c;提供一些解决办法给大家避雷。 目录 一、下载和安装anaconda 1. 下载 2. 安装 二、创建虚拟环境 一、下载和安装anaconda 1. …

项目管理工具-Maven

文章目录 Maven概述俩个经典的作用Maven 仓库 Maven 常用命令Maven 指令的生命周期Maven 的概念模型Maven 工程的认识 Maven概述 Maven 是一个项目管理工具&#xff0c;它包含了一个项目对象模型 (POM&#xff1a;Project Object Model)&#xff0c;一组标准集合&#xff0c;一…

记录一次Linux服务器被人使用SSH字典爆破

2024年1.20凌晨睡了一觉&#xff0c;早上起来用termux远程ssh登录小主机发现密码没法登录了&#xff0c;一直显示密码错误&#xff0c;到了晚上用电脑ssh连接小主机&#xff0c;发现小主机真的没法登录了&#xff0c;直接把小主机接上屏幕查看&#xff0c;发现密码被人修改了&a…

什么是Socket、Socket在Java中的应用、Socket和SocketChannel区别

目录 什么是Socket TCP\IP UDP体系结构 Socket和TCP\IP的关系 Socket在Java中的应用 Socket和SocketChannel的区别 SocketChannel和Selector的关系 服务器的设计演化历程---多线程版 服务器的设计演化历程---线程池版 服务器的设计演化历程---Selector版 参考链接 什么…

深度学习loss

pytorch模型训练demo代码 在PyTorch中&#xff0c;模型训练通常涉及几个关键步骤&#xff1a;定义模型、定义损失函数、选择优化器、准备数据加载器、编写训练循环。以下是一个简单的PyTorch模型训练演示代码&#xff0c;该代码实现了一个用于手写数字识别&#xff08;使用MNIS…

大数据——HBase原理

摘要 HBase 是一个开源的、非关系型的分布式数据库系统&#xff0c;主要用于存储海量的结构化和半结构化数据。它是基于谷歌的 Bigtable 论文实现的&#xff0c;运行在 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;之上&#xff0c;并且可以与 Hadoop 生态系统的其他组…

线程与进程的区别与联系,线程状态的切换

目录 什么是线程&#xff1f;进程&#xff1f;协程&#xff1f; 线程和进程的区别&#xff1f; 多线程的好处&#xff1a; 单核CPU有没有必要上多线程&#xff1f; 为什么没有变成单进程多线程的操作系统&#xff1f; 线程的状态 sleep &#xff08;&#xff09; 和wait&…

1.4 操作系统结构

操作系统的体系结构&#xff1a;操作系统的内核设计&#xff08;本节内容简要了解即可&#xff09; 宏内核 & 微内核 操作系统的内核 计算机系统的层次结构将操作系统部分更详细地划分为内核部分和非内核部分 宏内核 & 微内核 从操作系统的内核架构来划分&#xff…

【初阶数据结构篇】时间(空间)复杂度

文章目录 算法复杂度时间复杂度1. 定义2. 表示方法3. 常见时间复杂度4.案例计算分析冒泡排序二分查找斐波那契数列&#xff08;递归法&#xff09;斐波那契数列&#xff08;迭代法&#xff09; 空间复杂度案例分析冒泡排序斐波那契数列&#xff08;递归法&#xff09;斐波那契数…