OJ万题详解––组合线段(C++详解)

news2025/1/11 20:49:02

好久没有更新博文了,我上一篇博文的发布时间还是:

 题目

这是我们周考的第二道题,乍一看,很简单,仔细做,更简单。(我都没做起

 

分析

我相信,很多人第一次看到这个题目就会想到暴力(我一开始就是这样的)。

但你们只要细看了过后,就能细细的品出其中的味道(递推!)

好了,暴力的方法我就不告诉你们了,我就先讲一下如何递推

首先,你得画一个图出来,我们就按照上面那个样例的图讲。你可以把他们想象在一个正方形网格中,这个正方形的便成为n.其中你只要算出在所有n的区间中,哪一个区间存在的重合的条数最多。上图

就是这样,从一算下去,会发现如果n%2==0中间两列为最大值,如果n%2==1最中间的一列为最大值。然后我们把最大的那一列抽出来看,你们可以发现这样的一个规律

在这六条线段中,长度为1,2,3,4的分别有1,2,2,1个。

然后,我们将n为1-8的所有情况列出来,可以发现下表

11
21,1
31,2,1
41,2,2,1
51,2,3,2,1
61,2,3,3,2,1
71,2,3,4,3,2,1
81,2,3,4,4,3,2,1

题目要我们所求的,只不过就是把第n行的2n-1个数全部加起来,是吧。

然后我们就可以退出以下结果:

1.如果n为奇数,则ans=((n+1)/2)*((n+1)/2)

2.如果n为偶数,则ans=(1+n/2)*(n/2)

则有如下代码:

#include<iostream>
using namespace std;
int n,maxn,sum1,sum2;
int main(){
    cin>>n;
    if(n%2==0){
        cout<<(1+n/2)*(n/2)<<endl;
    }else{
        cout<<((n+1)/2)*((n+1)/2)<<endl;
    }
    return 0;
}

简化代码

咦?已经是O(1)的时间复杂度了,为什么还要再简化?

接下来,我来让你们大开眼界:只用一个输入一个输出就可以完成

大家看了图应该都看懂了吧,如果它是奇数,我们就按照平常算,如果是偶数,那么在加一个n/2.那么额如何判断n是奇数还是偶数呢,我们只需要为n/2乘一个(n+1)%2就行了。这样的话,如果是奇数,我们就相当于加了0.完美的解决了这次的问题。

话不多说,上代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
    cin>>n;
    cout<<((n+1)/2)*((n+1)/2)+((n+1)%2)*(n/2);
    return 0;
}

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

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

相关文章

Nginx安装与使用

文章目录 1. &#x1fa90;Nginx-概述1.1 介绍1.2 下载和安装1.2.1 官网下载1.2.2 网盘下载1.2.3 安装 1.3 目录结构 2. &#x1fa90;Nginx-命令2.1 常用命令2.2 环境变量配置 3. &#x1fa90;Nginx-应用3.1 配置文件结构3.2 部署静态资源3.2.1 介绍3.2.2 测试 3.3 反向代理3…

conda 笔记 conda命令收集

1 conda相关命令 conda info 判断conda是否正常安装检查conda版本号 conda update -n base conda 将conda更新到当前版本 conda update anaconda 将所有的package尽量更新到最新的版本加尽量的原因是&#xff0c;包裹之间可能会有冲突&#xff0c;所以需要优先保证packa…

玩转ChatGPT:制作思维导图

一、写在前面 最近&#xff0c;在学习深度学习图像识别的相关知识和代码&#xff0c;想着能否用小Chat搞一个思维导图。 简单问小Chat&#xff1a; 咒语&#xff1a;我怎么使用你做一个思维导图&#xff1f;需要配合什么软件生成&#xff1f;&#xff1f; 大意就是&#xff…

JavaEE(系列11) -- 多线程案例4(线程池)

目录 1. 线程池 2. 创建线程池 2.1 Executors类 2.2 ThreadPoolExecutor类 3. 自己实现线程池 1. 线程池 线程池是一种多线程处理形式&#xff0c;处理过程中将任务添加到队列&#xff0c;然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈…

百分位数、数据分布、直方图、正态数据分布

目录 1、百分位数 2、数据分布 3、正态数据分布 1、百分位数 统计学中使用百分位数&#xff08;Percentiles&#xff09;提供一个数字&#xff0c;该数字描述了给定百分比值小于的值。 例如&#xff1a;假设我们有一个数组&#xff0c;包含一时刻一条街上人的年龄 arr […

搜索二维矩阵——力扣74

文章目录 题目描述法一&#xff09;一次二分查找法二&#xff09;两次二分查找法三&#xff09;抽象二叉搜索树BST解法 题目描述 法一&#xff09;一次二分查找 首先分析题目&#xff1a;由于①每行的整数从左到右升序&#xff1b;②每行的第一个整数>前一行的最后一个整数&…

AC和AP和STA信息查询

AC和AP和STA信息查询 1、AC的运行统计信息1.1、查看设备的部件类型及状态信息 2、AP的运行统计信息2.1、AP的运行信息 / 查看RU的运行信息2.2、AP性能统计信息2.3、AP的射频信息2.4、AP重启失败的记录2.5、非法AP的存在情况2.6、设备信道切换的记录信息2.7、查看指定AP射频上的…

自助式数据分析工具:jvs-sdw(数据智仓)图表配置说明和实现效果

图表的查询条件配置示例说明 在JVS数据分析图表中&#xff0c;是支持查询条件进行多个数据展示组件的联动查询&#xff0c;实现的方式是设置统一的查询条件&#xff0c;在每个图表组件中&#xff0c;设置对应的查询字段去关联查询条件&#xff0c;那么下面我们逐步介绍配置方式…

CMOS摄像头驱动分析

CMOS摄像头驱动分析 文章目录 CMOS摄像头驱动分析ov2640_probe_dt从设备树中获取ov2640的GPIO引脚并进行初始化v4l2_i2c_subdev_init初始化v4l2子设备v4l2_ctrl_new_std添加vflip控制器 ov2640_probe_dt从设备树中获取ov2640的GPIO引脚并进行初始化 ov2640_probe_dt从设备树中…

设计模式剖析,授之以渔(java代码)

创建型模式 简单工厂模式 public class FoodFactory {public static Food makeFood(String name) {if (name.equals("noodle")) {Food noodle new LanZhouNoodle();noodle.addSpicy("more");return noodle;} else if (name.equals("chicken")…

【论文阅读笔记】BaFFLe: Backdoor Detection via Feedback-based Federated Learning

个人阅读笔记&#xff0c;如有错误欢迎指出 会议&#xff1a;2021 IEEE 41st International Conference on Distributed Computing Systems (ICDCS) BaFFLe: Backdoor Detection via Feedback-based Federated Learning | IEEE Conference Publication | IEEE Xplore 问题&am…

泰克(Tektronix) TCP305A电流探头TCPA300电流放大器

泰克Tektronix TCP305ATCPA300电流放大器 泰克 TCP305 电流探头是一种同时使用变压器和霍尔效应技术的分芯式探头。当通过 TEKPROBE Level II、TekConnect&#xff08;带 TCA-BNC&#xff09;或 TekVPI&#xff08;带 TPA-BNC&#xff09;接口连接到泰克示波器时&#xff0c;泰…

GPU服务器安装Anaconda

1.下载Anaconda安装包&#xff0c;官网地址&#xff0c;清华源地址。 在官网下载到本地之后&#xff0c;可以通过文件传输上传安装包到服务器&#xff0c;使用清华源地址可以直接使用wget下载所需版本&#xff0c;例如&#xff1a; wget https://mirrors.tuna.tsinghua.edu.c…

Hibernate 快速入门

Hibernate 快速入门 〇、前言一、搭建 Hibernate 项目步骤1:新建 Java 项目附录1:新建Java项目中的相关文件信息步骤2:添加 Hibernate 框架支持附录2:添加Hibernate框架支持后,Java项目中的相关文件信息步骤3:其他关键配置1、添加数据库驱动包(本文以MySQL为例)2、配置…

详解C语言assert宏

前言&#xff1a;我们经常在写代码时&#xff0c;发现一些大牛的代码中总有一句assert&#xff08;表达式&#xff09;&#xff0c;经过在网上的学习&#xff0c;笔者也浅显的了解了assert的相关知识&#xff0c;assert一般用于规范代码&#xff0c;避免不必要的错误&#xff0…

【Linux高级 I/O(5)】初识存储映射 I/O——mmap()和 munmap()(附代码示例)

存储映射 I/O 存储映射 I/O&#xff08;memory-mapped I/O&#xff09;是一种基于内存区域的高级 I/O 操作&#xff0c;它能将一个文件映射到进程地址空间中的一块内存区域中&#xff0c;当从这段内存中读数据时&#xff0c;就相当于读文件中的数据&#xff08;对文件进…

【数据库系统设计栗子】——图书借阅简单设计

图书借阅简单设计&#x1f60e; 前言&#x1f64c;需求分析——数据结构1.1图书信息1.2 书库信息1.3 图书库存信息1.4 用户1.5 借阅1.6 借阅记录概念模型E-R图 逻辑模型 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xf…

“三化”引领潮流,时尚代名词

大家好&#xff01;我是微三云小鱼&#xff01; 下面给大家分享一下“潮流文化” 如今越来越多的企业都在向数字化前进 而且也相信数字化代表着 向上、未来还是时尚&#xff0c; 各个企业都希望通过数字化 改变现代管理理念。 希望 像打开云计算一样拓展 另外一个渠道。 除了数…

Redis存在线程安全问题吗?让我们来谈谈!

大家好&#xff0c;我是你们的小米。在之前的文章中&#xff0c;我们谈到了Redis存在的线程安全问题。今天&#xff0c;我将以一个电商项目的实际案例来演示&#xff0c;为大家详细解析Redis线程安全问题的原因&#xff0c;并分享一些具体的解决措施。 为什么存在线程安全问题&…

Java程序设计入门教程--物体的抽象过程

类的概念 面向对象的思想来源于对客观世界的认知。 现实的世界是缤纷复杂、种类繁多&#xff0c;难于认识和理解的&#xff0c;但聪明的人们学会了把这些错综复杂的事物进行分类&#xff0c;从而使世界变得井井有条。比如我们由各式各样的汽车抽象出汽车的概念&#xf…