2023-08-01力扣每日一题

链接:

2681. 英雄的力量

题意:

对于一个序列可以得到一个值max^2 * min,求一个数组的所有子序列数值和

解:

快速幂和慢速乘+暴力 TLE(2558 / 2584)

首先对于这个数组来说,求值只依靠序列的最大值和最小值,并且所有子序列都要求,所以我们先将数组排序

对于每次遍历到的数字nums[i]都有一个nums[i]^3加入到ans里(表示子集[i,i],子集[l,r]表示以L为最小值,R为最大值的子集)

同时我们还要计算[0,i],[1,i]......[i-1,i],我们可以发现子集[l,r]的值的和nums[r]^2 * nums[l] * 2^r-l-1,因为l和r之间有r-l-1个数字,每个数字都有选与不选两种状态且不影响子集[l,r]的值,那我们可以发现每当R右移1,它所需要乘上的每个nums[l]就要翻一倍,所以我们使用一个变量来累积他所需要乘的数值

例如nums[1],nums[2],nums[3]

对于nums[1]我们只需要求nums[1]^3

对于nums[2]需要nums[2]^3 + nums[2]^2 * nums[1] * 1

对于nums[3]需要nums[3]^3 + nums[3]^2 * nums[2] *1 +nums[3]^2 *nums[1] * 2

这个nums[3]除了nums[3]^3,剩下的nums[3]^2 * nums[2] *1 +nums[3]^2 *nums[1] * 2可以转化为(nums[3]^2)*(nums[2]+ 2* nums[1])

以此类推下一个就是(nums[4]^2)*(nums[3]+ 2* nums[2]+ 4* nums[1])

实际代码:

#include<bits/stdc++.h>
using namespace std;
constexpr static long long Mod=1E9+7;
long long msc(long long base,long long up)
{//cout<<base<<"up"<<up<<endl;long long ret=0;while(up){if(up&1) ret+=base;base+=base;base%=Mod;ret%=Mod;up>>=1;}return ret;
}
long long msm(long long base,long long up)
{//cout<<base<<"msmup"<<up<<endl;long long ret=1;while(up){if(up&1) ret*=base;base=msc(base,base);base%=Mod;ret%=Mod;up>>=1;}return ret;
}
int sumOfPower(vector<int>& nums)
{sort(nums.begin(),nums.end());long long ans=0,after=0;int lg=nums.size();for(int i=0;i<lg;i++){ans+=msm(nums[i],3);ans+=msm(nums[i],2)*after;after*=2;after+=nums[i];after%=Mod;ans%=Mod;}return ans;
}
/*
int sumOfPower(vector<int>& nums)
{sort(nums.begin(),nums.end());long long ans=0;int lg=nums.size();for(int i=0;i<lg;i++){for(int j=i;j<lg;j++){//cout<<"i:"<<i<<" "<<"j:"<<j<<endl;if(i==j) ans+=msm(nums[i],3);else{ans+=msc(msc(msm(nums[j],2),nums[i]),msm(2,j-i-1));}ans%=Mod;}}return ans;
}*/
int main()
{vector<int> nums;int num;while(cin>>num)nums.push_back(num);int ans=sumOfPower(nums);cout<<ans<<endl;return 0;
}

限制:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 109

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

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

相关文章

Robot Framweork之UI自动化测试---元素定位的4种方式

在Robot Framweork的UI自动化测试中&#xff0c;元素定位主要有四种&#xff0c;即通过id&#xff0c;name&#xff0c;xpath和CSS定位。 一、id定位 id就好比一个人身份证&#xff0c;元素在 HTML 页面中的唯一标识符&#xff0c;因此 ID 定位方式是最常用的方式之一&#xf…

C++标识符的作用域与可见性

标识符是一个由程序员定义的名称&#xff0c;为标识区别变量、函数和数据类型等&#xff0c;代表程序的某些元素&#xff0c;变量名就是标识符的一个展现。 作用域讨论的是标识符的有效范围&#xff0c;可见性讨论的是标识符是否可以被引用。在一个函数中声明的变量就只能在这个…

网络安全进阶学习第八课——信息收集

文章目录 一、什么是信息收集&#xff1f;二、信息收集的原则三、信息收集的分类1.主动信息收集2.被动信息收集 四、资产探测1、Whois查询#常用网站&#xff1a; 2、备案信息查询#常用网站&#xff1a; 3、DNS查询#常用网站&#xff1a; 4、子域名收集#常用网站&#xff1a;#常…

C语言实用调试详解

目录 什么是bug? 调试是什么?有多重要? 调试是什么? 调试的基本步骤 Debug和Release的介绍 Windows环境调试介绍 调试环境的准备 学会快捷键 调试的时候查看程序当前信息 查看临时变量的值 查看内存信息 查看调用堆栈 查看汇编信息 查看寄存器信息 一些调试…

控制反转ioc理解,配置说明

先写个例子吧 配置文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

小红书 前端开发一面 2023.7.20

base北京 时长&#xff1a;45min 日常实习 项目拷打Three.jsVueJavaScriptCSS手写题 自我介绍选择一个你负责任务最多的项目讲讲在项目开发中遇到的一个印象最深刻的问题&#xff0c;最后如何解决的讲讲你认为的Three.js是什么?说说作用域说说Vue和React的区别说说Vue3的生命…

CSS 高频按钮样式

CSS 高频按钮样式 矩形与圆角按钮 正常而言&#xff0c;我们遇到的按钮就这两种 -- 矩形和圆角&#xff1a; 它们非常的简单&#xff0c;宽高和圆角和背景色。 <div classbtn rect>rect</div><div classbtn circle>circle</div>.btn {margin: 8px aut…

【Linux命令200例】rm用来删除文件或目录(谨慎使用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜…

ThreadPoolExcuter源码阅读

线程池的基本参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler) {this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,…

MongDB文档--架构体系

阿丹&#xff1a; 在开始学习先了解以及目标知识的架构体系。就能事半功倍。 架构体系 MongoDB的架构体系由以下几部分组成&#xff1a; 存储结构&#xff1a;MongoDB采用文档型存储结构&#xff0c;一个数据库包含多个集合&#xff0c;一个集合包含多个文档。存储形式&#…

前端Vue入门-day06-路由进阶

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 路由的封装抽离 声明式导航 导航链接 两个类名 自定义高亮类名 跳转传参 1. 查询参数传参 2. 动态…

opencv基础函数使用

文章目录 前言一、Mat类二、Vec3b三、Scalar函数四、imread函数五、imshow函数六、imwrite函数总结前言 本篇文章带大家来学习一下opencv基础函数的使用。 一、Mat类 Mat类是OpenCV中最常用的数据结构之一,用于表示和操作图像和矩阵数据。它提供了一个多维数组,用于存储像…

Socket 前端项目结构搭建

npm install socket.io-client --savenpm install element-plus --savenpm install vue-router4.0.12 --save简单的页面搭建 聊天系统登录前端实现 登录模板 <template><div class"login-container"><el-form ref"form" :model"fo…

IDEA快捷键大全

编辑与导航快捷键&#xff1a; Ctrl S: 保存当前文件Ctrl Z: 撤销Ctrl Y: 重做&#xff08;Redo&#xff09;Ctrl X: 剪切Ctrl C: 复制Ctrl V: 粘贴Ctrl D: 复制当前行或选定的区域Ctrl Delete: 删除光标后的单词Ctrl Backspace: 删除光标前的单词Ctrl Shift 上箭头…

使用 OpenCV 和深度学习对黑白图像进行着色

在本文中,我们将创建一个程序将黑白图像(即灰度图像)转换为彩色图像。我们将为此程序使用 Caffe 着色模型。您应该熟悉基本的 OpenCV 功能和用法,例如读取图像或如何使用 dnn 模块加载预训练模型等。现在让我们讨论实现该程序所遵循的过程。 给定一张灰度照片作为输入,本文…

Maven 打包项目后,接口识别中文乱码

背景 项目在Idea里面运行&#xff0c;调用接口发送中文消息正常&#xff0c;用Maven打包项目后&#xff0c;运行jar包&#xff0c;调用接口发送中文出现乱码。 解决方法 1.Idea编译配置 2.如果更改了上述配置之后还是没有效果&#xff0c;则在运行jar包的前面加上 -Dfile.en…

100天精通Python(可视化篇)——第96天:Pyecharts绘制多种炫酷箱形图参数说明+代码实战

文章目录 专栏导读1. 箱形图介绍1&#xff09;箱形图介绍2&#xff09;怎么看箱型图&#xff1f;3&#xff09;解释说明 2. 普通箱型图3. 水平箱型图4. 群组箱型图5. 带异常点的箱型图书籍推荐 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业…

rust 如何定义[u8]数组?

在Rust中&#xff0c;有多种方式可以定义 [u8] 数组。以下是一些常见的方式&#xff1a; 使用数组字面量初始化数组&#xff1a; let array: [u8; 5] [1, 2, 3, 4, 5];使用 vec! 宏创建可变长度的数组&#xff1a; let mut vec: Vec<u8> vec![1, 2, 3, 4, 5];使用 v…

适配器模式与装饰器模式对比分析:优雅解决软件设计中的复杂性

适配器模式与装饰器模式对比分析&#xff1a;优雅解决软件设计中的复杂性 在软件设计中&#xff0c;我们常常面临着需要将不同接口或类协调工作的情况&#xff0c;同时还要满足灵活性和可扩展性的需求。为了应对这些挑战&#xff0c;适配器模式和装饰器模式应运而生&#xff0c…

IDEA Debug小技巧 添加减少所查看变量、查看不同线程

问题 IDEA的Debug肯定都用过。它下面显示的变量&#xff0c;有什么门道&#xff1f;可以增加变量、查看线程吗&#xff1f; 答案是&#xff1a;可以。 演示代码 代码如下&#xff1a; package cn.itcast.attempt.threadAttempt.attempt2;public class Test {public static …