牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)
文章目录
- 牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)
- A. 夹心饼干
- B. C. 食堂大作战(思维)
- D. 小苯的排列计数(差分、树状数组)
- E. 和+和(大根堆,前缀和)
- F. 怎么写线性SPJ (思维、递归)
牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)
A. 夹心饼干
语法基础题
#include<bits/stdc++.h>
using namespace std;int main(){string s;cin >> s;cout << (s[0] == s[2] ? "YES" : "NO") << endl;return 0;
}
B. C. 食堂大作战(思维)
显然,只要没有两个窗口同时关门,即合法方案。
对于方案,按照关门时间排序,依次输出即可。
#include<bits/stdc++.h>
using namespace std;const int maxn = 1e5 + 5;pair<int, int> a[maxn];int main(){int n;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i].first;a[i].second = i;} sort(a+1, a+1+n);int flag = 1;for(int i = 1; i <= n; i++){if(a[i].first == a[i-1].first){flag = 0;break;}}if(flag){cout << "YES" << endl;}else cout << "NO" << endl;return 0;
}
D. 小苯的排列计数(差分、树状数组)
对于样例:
10
7 7 7 5 5 1 1 1 1 1 1
首先,标黄色的元素的值是确定的。
其次,我们依次来看:
- 72,在此处,可以选择 8,9,10。即,有三种选择。(这里表示第二个 7,其他相同形式同理)
- 73,在此处,可以选择 8,9,10。但是,这时已经在 72处使用过一个元素,还有两种选择可用。
- 52,在此处,可以选择 6,8,9,10。但是,这时已经在 72 和 73 处使用过两个元素,还有两种选择可用。
- 依次类推…
对于一个方案,在某元素 x:
- 如果第一次出现时,该元素在只能在此处,在此处贡献一种组合的可能。
- 如果元素 x 不是第一次出现时:
- 如有大于该元素的选择,可选择元素的个数等于此处贡献的组合。
- 如没有大于该元素的选择,则方案不合法。
使用差分和树状数组配合,即可实现,求[x, n] 中的可用元素个数。
#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxn = 1e6 + 5;
const ll mod = 998244353;ll a[maxn], tree[maxn];int lowbit(int x){return x & (-x);
}void add(int i, int value){while(i < maxn){tree[i] += value;i += lowbit(i);}
}int sum(int i){int res = 0;while(i > 0){res += tree[i];i -= lowbit(i);}return res;
}int main(){int ncase;cin >> ncase;while(ncase--){int n;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];for(int i = 1; i <= n; i++) tree[i] = 0;for(int i = 1; i <= n; i++) add(i, 1);ll res = 1;for(int i = 1; i <= n; i++){if(a[i] != a[i-1]){if(a[i] > a[i-1] && i != 1){res = 0;break;}add(a[i], -1);}else{int cnt = sum(n) - sum(a[i]); // 差分if(cnt == 0){res = 0;break;}else{res = res * cnt % mod;add(a[i]+1, -1);}}}cout << res << endl;}return 0;
}
E. 和+和(大根堆,前缀和)
题意等价于:选一个 x,在 a[1,x] 中选 m 个最小的数,在 b[x+1, n] 中选 m 个最小的数,使得选出的数sum最小。
枚举所有可能的 x,只要能 O(1) 或者 O(log(n)) 求出 a[1,x] 中 m 个最小的数的和,即可。
对于a数组,维护一个大小为 m 的大根堆,即前 i 个元素中最小的 m 个元素。
依次遍历a数组,插入新值a[i],删除最大的元素,维护sum,维护前缀min即可。
对于 b 数组,逆序遍历,操作同上。
#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxn = 2e5 + 5;ll a[maxn], b[maxn];
ll pre[maxn], suf[maxn];priority_queue<int> qu;int main(){int n, m;cin >> n >> m;for(int i = 1; i <= n; i++) cin >> a[i];for(int i = 1; i <= n; i++) cin >> b[i];ll sum = 0;for(int i = 1; i <= n; i++){sum += a[i];qu.push(a[i]);if(i > m){sum -= qu.top();qu.pop(); }pre[i] = sum;} sum = 0;while(!qu.empty()) qu.pop();for(int i = 1; i <= n; i++){sum += b[n-i+1];qu.push(b[n-i+1]);if(i > m){sum -= qu.top();qu.pop(); }suf[n-i+1] = sum;}ll res = 2e9;for(int i = m; i+m-1 < n; i++){res = min(res, pre[i] + suf[i+1]);}cout << res << endl;return 0;
}
F. 怎么写线性SPJ (思维、递归)
手搓几个样例后,容易想到一个事实:
令 mid = ( l + r ) / 2,如果 a[mid] 是一个 “唯一元素”,接下来,只需要考虑 (l, mid-1) 和 (mid+1, r) 即可。
用相同的思路处理(l, mid-1) 和 (mid+1, r),直到区间大小为 1。(递归)
#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxn = 2e5 + 5;int a[maxn];void dfs(int l, int r, int num){if(l > r) return; int mid = l + r >> 1;a[mid] = num;dfs(l, mid-1, num+1);dfs(mid+1, r, num+1);
}int main(){int n;cin >> n;dfs(1, n, 1); set<int> s;for(int i = 1; i <= n; i++) s.insert(a[i]);cout << s.size() << endl;for(int i = 1; i <= n; i++) cout << a[i] << " ";return 0;
}
相关文章:
牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)
文章目录 牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)A. 夹心饼干B. C. 食堂大作战(思维)D. 小苯的排列计数(差分、树状数组)E. 和和(大根堆,前缀和)F. 怎么写线性SPJ &…...
MQTT实现智能家居------2、写MQTT程序的思路
举个最简单的例子: 手机------服务器-------家具 我们这里只看手机和家具的客户端: 手机:1)需要连接服务器 2)需要发布指令给服务器到家里的家具 3)接受来自于家里家具的异常状况 4)保持心…...
大模型面试问题准备
1. BERT的多头注意力为什么需要多头? 为了捕捉不同子空间的语义信息,每个头关注不同的方面,增强模型的表达能力 2. 什么是softmax上下溢出问题? 问题描述: 上溢出:ye^x中,如果x取非常大的正数…...
C语言:二维数组在内存中是怎么存储的
目录 1. 二维数组的定义: 2. 行主序存储: 具体内存排列: 3. 如何通过指针访问数据: 4. 总结: 在 C 语言中,二维数组是按 行主序(row-major order) 存储的。也就是说,…...
AI时代前端开发技能变革与ScriptEcho:拥抱AI,提升效率
在飞速发展的科技浪潮中,人工智能(AI)正以前所未有的速度改变着各个行业,前端开发领域也不例外。曾经被认为是核心竞争力的传统前端技能,例如精通HTML、CSS和JavaScript,其价值正在发生微妙的变化。 得益于…...
计算机毕业设计SpringBoot+Vue.js美容院管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【LeetCodehHot100_0x01】
LeetCodeHot100_0x01 1. 两数之和 解题思路: 暴力枚举法、哈希法 【暴力枚举】 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for(int i0;i<n;i) {for(int ji1;j<n;j) {if(nums[i] nums[j] target) {return new in…...
Qt::MouseButtons解析
一 问题 今天想自定定义一个QMouseEvent变量,变量的的初始化参数有Qt::MouseButtons,这是个啥?查看类型为QFlags<Qt::MouseButton>。 二 Qt::MouseButton Qt::MouseButton 是 Qt 框架中定义的一个枚举类型(enum),用于表示鼠标事件中的物理按钮。它是 Qt 事件处理…...
跨域问题解释及前后端解决方案(SpringBoot)
一、问题引出 有时,控制台出现如下问题。 二、为什么会有跨域 2.1浏览器同源策略 浏览器的同源策略 ( Same-origin policy )是一种重要的安全机制,用于限制一个源( origin )的文档或 脚本如何与另一个源的资源进行…...
4-知识图谱的抽取与构建-4_2实体识别与分类
🌟 知识图谱的实体识别与分类🔥 🔍 什么是实体识别与分类? 实体识别(Entity Recognition)是从文本中提取出具体的事物,如人名、地名、组织名等。分类(Entity Classification&#x…...
腾讯云大模型知识引擎×DeepSeek赋能文旅
腾讯云大模型知识引擎DeepSeek赋能文旅 ——以合肥文旅为例的技术革新与实践路径 一、技术底座:知识引擎与DeepSeek的融合逻辑 腾讯云大模型知识引擎与DeepSeek模型的结合,本质上是**“知识库检索增强生成(RAG)实时联网能力”**…...
TMDS视频编解码算法
因为使用的是DDR进行传输,即双倍频率采样,故时钟只用是并行数据数据的5倍,而不是10倍。 TMDS算法流程: 视频编码TMDS算法流程实现: timescale 1 ps / 1ps //DVI编码通常用于视频传输,将并行数据转换为适合…...
C++程序员内功修炼——Linux C/C++编程技术汇总
在软件开发的宏大版图中,C 语言宛如一座巍峨的高山,吸引着无数开发者攀登探索。而 Linux 操作系统,以其开源、稳定、高效的特性,成为了众多开发者钟爱的开发平台。将 C 与 Linux 相结合,就如同为开发者配备了一把无坚不…...
【数据结构】链表中快指针和慢指针
目录 一、找出并返回链表的中间结点 二、输出链表中倒数第k个结点 三、判断链表中是否有环 四、两个单链表相交 一、找出并返回链表的中间结点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 要求:只遍历…...
6_zookeeper集群配置
配置 一、配置myid文件 # 进入解压好的文件夹下面 touch myid vim myid # master节点写0,slave1节点写1,slave2节点写2二、配置zoo.cfg文件 1.在master节点编辑zookeeper配置文件 # 进入解压好的文件夹下面 cd conf/ cp zoo_sample.cfg zoo.cfg vim …...
Docker核心概念
容器介绍 Docker 是世界领先的软件容器平台,所以想要搞懂 Docker 的概念我们必须先从容器开始说起。 什么是容器? 先来看看容器较为官方的解释 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量…...
LD_PRELOAD 绕过 disable_function 学习
借助这位师傅的文章来学习通过LD_PRELOAD来绕过disable_function的原理 【PHP绕过】LD_PRELOAD bypass disable_functions_phpid绕过-CSDN博客 感谢这位师傅的贡献 介绍 静态链接: (1)举个情景来帮助理解: 假设你要搬家&#x…...
如何用JAVA实现布隆过滤器?
目录 引言 布隆过滤器的原理 1. 核心思想 2. 优缺点 布隆过滤器的使用场景 Java 实现布隆过滤器 1. 实现步骤 2. 代码实现 3. 代码说明 4. 测试结果 布隆过滤器的优化 总结 引言 布隆过滤器(Bloom Filter)是一种高效的概率数据结构࿰…...
游戏开发 游戏开始界面
目录 前言 一 游戏初始化界面的分析 二 游戏的大概框架 三 显示界面的开发 四 完整代码 总结 我们可以来看看游戏初始界面是什么样的 勇士游戏样例 前言 这里是开发游戏的初始界面 一 游戏初始化界面的分析 我们需要一个背景图,开始游戏图标࿰…...
Python解析 Flink Job 依赖的checkpoint 路径
引言 Apache Flink 是一个强大的分布式处理框架,广泛用于批处理和流处理任务。其 checkpoint 机制是确保容错的关键功能,允许在计算过程中保存状态,以便在故障时从最近的 checkpoint 恢复。本文详细探讨了一个 Python 脚本,该脚本…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
