算法CPP时间复杂度

news2025/1/11 19:52:53

观察数据生成器可以发现对于每次操作均有 。

考虑将这些三元组想象成空间直角坐标系中 为对顶点的长方体。 将操作分成两部分,一部分是对 轴同时操作的,可以一开始就用前缀 统计完,将长方体变 成一个底面为阶梯状的直棱柱。另一部分是对 或 操作的,考虑从小到大枚举 ,然后将 的操作变成一条横线或一条竖线,容易发现这两条线也是具有单调性的,于是每层留下的点数可 以直接计算。 最后用总点数减去剩下的点数即为删除的三元组数量,由于答案最大可能到 ,所以需要使 用高精或 __int128 。总时间复杂度为

 实现代码如下:

#include <bits/stdc++.h>
using namespace std;

const int N = 3e7 + 10;
typedef unsigned long long ull;

int n, A, B, C, u[N], v[N], w[N];

ull Rand (ull &k1, ull &k2) {
    ull k3 = k1, k4 = k2;
    k1 = k4;
    k3 ^= (k3 << 23);
    k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
    return k2 + k4;
}

void GetData () {
    ull x, y;
    cin >> n >> A >> B >> C >> x >> y;
    for (int i = 1; i <= n; i++) {
        u[i] = Rand(x, y) % A + 1;
        v[i] = Rand(x, y) % B + 1;
        w[i] = Rand(x, y) % C + 1;
        if (Rand(x, y) % 3 == 0) u[i] = A;
        if (Rand(x, y) % 3 == 0) v[i] = B;
        if ((u[i] != A) && (v[i] != B)) w[i] = C;
    }
}

void Write (__int128 x) {
    if (x < 10) cout << (int)x;
    else Write(x / 10), cout << (int)(x % 10);
}

int h[N], l[N], Mx[N], My[N];

int main () {

    GetData();

    for (int i = 1; i <= n; i++) {
        if (w[i] == C) h[u[i]] = max(h[u[i]], v[i]);
        else if (u[i] == A) My[w[i]] = max(My[w[i]], v[i]);
        else if (v[i] == B) Mx[w[i]] = max(Mx[w[i]], u[i]);
    }

    for (int i = A; i >= 1; i--) h[i] = max(h[i], h[i + 1]);
    for (int i = C; i >= 1; i--) Mx[i] = max(Mx[i], Mx[i + 1]);
    for (int i = C; i >= 1; i--) My[i] = max(My[i], My[i + 1]);

    for (int i = 1, now = A; i <= B; i++) {
        while (now && h[now] < i) now--;
        l[i] = now;
    }

    __int128 ans = 0, sum = 0, All;
    for (int i = 1, Lx = A, Ly = B; i <= C; i++) {
        while (Lx > Mx[i]) sum += B - Ly - max(0, h[Lx] - Ly), Lx--;
        while (Ly > My[i]) sum += A - Lx - max(0, l[Ly] - Lx), Ly--;
        ans += sum;
    }
    All = A, All *= B, All *= C;
    Write(All - ans);

    return 0;
}

 

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

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

相关文章

【网络工程】9、实操-万达酒店综合项目(三)

接上篇《8、实操-万达酒店综合项目&#xff08;三&#xff09;》 之前我们按照项目要求进行模拟拓扑的构建实操&#xff0c;完成了办公区部分的网络配置&#xff0c;本篇我们来继续完成其他区域的网络配置。 一、总体架构情况 按照之前项目需求的拓扑图&#xff1a; 我们已经…

爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了

现如今微服务架构十分流行&#xff0c;而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时&#xff0c;支持微服务的技术栈也是多种多样的&#xff0c;本文主要讲述我们为什么选择Spring Cloud和它的技术概要。 为什么微服务架构需要Spring Cloud 简单来说&#x…

【C++初阶】list的模拟实现

文章目录list的介绍list的模拟实现成员变量Member functionsconstructordestructoroperatorIterators正向迭代器反向迭代器beginendrbeginrendModifierspush_frontpop_frontpush_backpop_backinserteraseclear完整版代码list.hreverse_iterator.htest.cpplist的介绍 list是STL…

Selenium自动化测试环境搭建及问题

一、前言 目标&#xff1a;环境搭建及测试 主要问题&#xff1a;浏览器闪退&#xff0c;路径不明确&#xff0c;语法弃用 二、环境搭建&#xff08;自带python3.9以上&#xff09; 2.1.1、下载谷歌浏览器驱动 https://registry.npmmirror.com/binary.html?pathchromedriver/&…

数据结构---A星寻路算法

A星寻路算法第一步第二步第三步第四步JAVA实现用于寻找有效路径的算法。定义俩个集合 OpenList&#xff1a;可到达的格子 CloseList&#xff1a;已到达的格子 每一个格子都具有F、G、H这3个属性 G&#xff1a;从起点走到当前格子的成本&#xff0c;也就是已经花费了多少步。H&a…

生产级部署 Python 脚本,崩溃可自启

今天介绍一个生产级的流程管理工具 PM2&#xff0c;通常我们说到 PM2 的时候&#xff0c;都是在说如何部署 Node.js 程序&#xff0c;但是实际上 PM2 很强大&#xff0c;不仅仅可以用来管理 Node.js&#xff0c;它还可以用来管理 Python、PHP、Ruby、perl 等等。 这里就以 Pyt…

看了下华为工资,我不加班了

周五快下班&#xff0c;我本来是想继续好好上班的。那时候是晚上8点左右&#xff0c;跟我一个华为的朋友聊天&#xff0c;聊完之后&#xff0c;我气得把电脑合上&#xff0c;拿上花了7万巨款买的车钥匙&#xff0c;头也不回的走到电梯口&#xff0c;按下了下楼的电梯按钮。-事情…

项目集成MybatisPlus

目录 1.MyBatisPlus介绍 1.1.为什么需要 1.2.MyBatisPlus简介 1.3.MybatisPlus特点 2.项目集成MybatisPlus 2.1.导入依赖 2.2.创建配置 2.3.代码生成主类GenteratorCode 2.4.Controller&#xff0c;Query模板 2.5.生成代码 2.6最终效果 1.MyBatisPlus介绍 1.1.为什么…

SQL优化篇:如何成为一位写优质SQL语句的绝顶高手

(Structured Query Language)标准结构化查询语言简称SQL&#xff0c;编写SQL语句是每位后端开发日常职责中&#xff0c;接触最多的一项工作&#xff0c;SQL是关系型数据库诞生的产物&#xff0c;无论是什么数据库&#xff0c;MySQL、Oracle、SQL Server、DB2、PgSQL....&#x…

JSP ssh网上商品拍卖系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh网上商品拍卖系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0…

个人收款的实现方案

最近出于个人需要折腾了一套微信免签支付的个人系统,下面介绍一下整体的一个实现方案 由于微信本身不提供免签的支付api,因此个人若想要实现免签支付,那么只能通过监听微信收款通知来实现了,因此整个系统的实现部分分为 收款服务端和监听客户端来实现 收款服务端实现 整个…

【nowcoder】笔试强训Day5

目录 一、单选题 二、多选题 三、编程题 3.1统计回文 3.2连续最大和 一、单选题 1.下面的程序 编译运行后&#xff0c;在屏幕上显示的结果是&#xff08;&#xff09; public class Test {public static void main(String args[]) {int x, y;x 5 >> 2;y x >&…

docker入门以及常见的命令

目录 1. 什么是docker 2. docker的核心组件 3. docker的安装 3.1 安装的先决条件 3.2.1 ubuntu安装docker 3.2.2 CentOS安装docker 3.3 配置镜像加速器 4. 镜像常用操作 4.1 搜索镜像 4.2 镜像下载 4.3 查看宿主机中的镜像 4.3 删除镜像 5. 容器常用命令 5.1 运行…

#Z1243. 完美数

一&#xff0c;题目描述 一个数是完美的&#xff0c;仅当它等于它的因数中比它小的所有数之和。 例如&#xff1a;28124714&#xff0c;所以 28 是完美的。 由此我们可以定义一个数的不完美值 F(N)&#xff0c;代表 N和比 N 小的所有 N 的因数之和的差的绝对值。 例如&…

c# 服务

是什么 Microsoft Windows 服务&#xff08;过去称为 NT 服务&#xff09;允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动&#xff0c;可以暂停和重启&#xff0c;并且不显示任何用户界面。 这些功能使服务非常适合在…

metrics-server监控主机资源

使用metrics-server实现主机资源监控获取metrics-server资源清单文件修改metrics-server资源清单文件部署metrics-server资源清单文件验证及授权获取metrics-server资源清单文件 直接使用命令来获取资源清单文件 wget https://github.com/kubernetes-sigs/metrics-server/rele…

车用DCDC双路输出电源模块规格书

产品名称&#xff1a;非隔离稳压双路输出车用电源模块 产品型号&#xff1a;LM36J40W2EH 典型特征值&#xff1a;24V/8V(3A)&5V(2A) u 产品概述 LM36J40W2EH模块电源是一款非隔离型双路输出的开关稳压器。它采用集成IC设计&#xff0c;使用一进两出的接线方式&#xff…

【Html圣诞树】2022年的圣诞节了,祝大家节日快乐。

目录 1. 效果展示2. 源代码1. 效果展示 是最近在互联网上很火的一个效果。 是带有背景音乐的,而且背景音乐支持选择,也支持自定义。 2. 源代码 美丽的圣诞树.html <!DOCTYPE html> <html lang="en"

从零学习 InfiniBand-network架构(十) —— IB协议中全局ID

从零学习 InfiniBand-network架构&#xff08;十&#xff09; —— IB协议中全局ID &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f511;未经作者允许&#xff0c;禁止转载 &#x1f6a9;本专题部分内容源于《InfiniBand-network…

设备指示灯开关状态识别检测系统 yolov5

设备指示灯开关状态识别检测系统是基于yolo网络深度学习模型&#xff0c;对现场画面进行实时监测识别。自动识别仪表示数或开关状态。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN)&#xff0c;用于实时进行目标检测。该算法将单个神经网络应用…