鲁的学生(模拟)

news/2025/3/25 4:31:51/文章来源:https://www.cnblogs.com/bakul/p/18787892


问题 A: 鲁的学生

时间限制: 1.000

题目描述

在宇宙大帝 Luke 的星球 Lu3KO5 上,有一所著名的星际学院,专门培养年轻的星际探险家们。在这一天,Luke 亲自担任数学导师,为这些年轻学员们组织了一场有趣的课堂活动。

Luke 让他的学生们站成一排,一共有 n 位学员。每位学员将随意选择一个代表他们能力值的数字 A[i]。接着,Luke 提出了一项挑战:在这些学员中,可以任意选择两名学员,并将他们之间的所有学员作为一个小组(包括这两名学员)。小组中的每个人所拿到的数字之和被称为该小组的“总分数”。

现在,Luke 想知道,如果将所有可能的小组都计算一遍,他们的“总分数之和”会是多少。由于结果可能非常庞大,请你帮助他计算这个结果对 1000000007 取模后的值。

输入

第一行输入一个非负整数 n

第二行输入 n 个非负整数,表示 A[i]

输出

输出一个整数,即答案

样例输入

3
1 2 3

样例输出

20

提示

样例解释:
若选择1则和为1。
若选择[1,2]则和为1+2=3。
若选择[1,3]则和为1+2+3=6。
若选择[2,2]则和为2。
若选择[2,3]则和为2+3=5。
若选择[3,3]则和为3。

对于前 30% 的数据 \(1≤n≤100\)
对于前 60% 的数据 \(1≤n≤1000\)
对于 100% 的数据 \(1≤n≤10^7, 0≤A[i]≤50000\)

分析

模拟答案可以得到,设第i个数为\(a_i\)

  1. 当长度为一的区间,每个数被和加入一次,
  2. 长度为2,除了\(a_1\)\(a_n\),其余的数字都被加入两次(滑动)
  3. 长度为3的时候,除了\(a_1\)\(a_n\)被加入一次,\(a_2\)\(a_n_1\)被加入两次,其余的数字都被加入三次
  4. 虑下标为 i 的数字 a[i]。在所有连续区间中,要保证 a[i] 被包含,区间的左端点必须在 1 到 i 之间,右端点必须在 i 到 n 之间。
    左端点有 i 种选法,右端点有 (n-i+1) 种选法,因此 a[i] 出现在的连续区间总数为
    \(i × (n-i+1)\)
  5. 最终所有区间的总和即为每个数字 a[i] 乘以它出现的次数,再求和:
    答案 = \(Σ (a[i] × i × (n-i+1))  (i 从 1 到 n)\)

代码


#include <iostream>
#include<queue>
#include<vector>
#include<bitset>
#include<cstring>
#include<unordered_map>
#define de(x) cout << (#x) << "=" << x << '\n';
using namespace std;
#define int long long
const int N = 1e7 + 5,M = 1e9+7;
int v[N];
// //快读: 注意这里是引用符号,就相当与对要赋值的变量进行操作
// inline void read(int &x){
//     x = 0; int f = 1; char ch = getchar();
//     while(ch < '0' || ch > '9'){
//         if(ch == '-') f = -1;
//         ch = getchar();
//     }
//     while(ch >= '0' && ch <= '9')  x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
//     x = x * f; 
// }
signed main() {ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int n;cin >> n;int sum = 0;for(int i = 1;i <= n;++i){cin >> v[i];int t = min(i,n-i+1);int cn = t*n-t*(t-1);//de(cn);sum = v[i] * cn % M + sum;}cout << sum%M;}

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

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

相关文章

List集合--java进阶day09

1.List集合以下面的例子来解释存储有序和存储重复如上图,我们是怎么添加这些字符串的,打印的时候就是按照这个顺序打印的--存取有序 并且“张三”出现了两次,也存入了两次--存储重复 因为List有索引,所以该接口有关于索引的独特的api..1.remove注意事项 List有两个remove方…

Pydantic字段级校验:解锁@validator的12种应用

title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: Pydantic校验系统支持通过pre验证器实现原始数据预处理,在类型转换前完成字符清洗等操作。格式验证涵盖正则表达式匹配与枚举值约束,确保护照编号等字…

20244126 2024-2025-2 《python程序设计》实验一报告

课程:《Python程序设计》 班级:2441 姓名:马晓霞 学号:20244126 实验教师:王志强 实验日期:2025年3月23日 必修/选修:公选课 (一)实验内容 1.熟悉Python开发环境 2.练习Python运行,调试技能 3.编写技能,练习变量和类型、字符串、对象、缩进和注释等 4.编写一个猜数字…

1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!

Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开…

leetcode每日一题:判断一个括号字符串是否有效

题目 一个括号字符串是只由 ( 和 ) 组成的 非空 字符串。如果一个字符串满足下面 任意 一个条件,那么它就是有效的:字符串为 (). 它可以表示为 AB(A 与 B 连接),其中A 和 B 都是有效括号字符串。 它可以表示为 (A) ,其中 A 是一个有效括号字符串。给你一个括号字符串 s 和…

实验2c语言分支与循环基础应用编程

任务一:1 #include <stdio.h>2 #include <stdlib.h>3 #include <time.h>4 5 #define N 56 7 int main() {8 int number;9 int i; 10 11 srand(time(0)); // 以当前系统时间作为随机种子 12 for(i = 0; i < N; ++i) { 13 nu…

矿用人员违规闯入监控报警系统

矿用人员违规闯入监控报警系统,设置警戒预警功能,巷道正在行车时,当有行人闯入时,及时抓拍、识别现场违章入侵人员同时闪光警示和音箱报警提示禁止进入,在绞车运行期间人员误入斜巷能够及时报警,自动停止绞车运行。该系统做到绞车运行和行人的安全隔离,有力保障了煤矿斜…

工厂车间人员违规闯入禁区报警系统

工厂车间人员违规闯入禁区报警系统前端设备嵌入AI人体识别算法,对人员的检测、跟踪,实现对人体检测分析识别,实时预警周界区域内人员入侵事件。当有可疑人员进入监测范围内可对其自动识别,即对其抓拍并将当时图像传输到管理中心,在管理中心输出报警信号。工厂车间人员违规…

iis备份还原工具,想要备份iis有哪些工具可以实现?

想要备份IIS(Internet Information Services),可以使用多种专门的备份还原工具。以下是一些常用的IIS备份还原工具及其简要介绍:IISBackUp 功能:专注于备份和恢复IIS站点设置,包括网站配置文件、站点绑定信息、应用程序池设置、SSL证书和密钥信息等。 特点: 提供一种方便…

集合的通用遍历方法--java进阶day09

1.集合的三种通用遍历方法之前我们学习过集合的遍历方法,为什么这里还要再学呢? 这是因为,之前我们用的遍历方法使用了索引,但我们知道set接口的实现类的集合均无索引,所以我们要学习通用的遍历方法 2.迭代器遍历 1.迭代器 迭代器叫做Iterator,是一个接口,我们知道接口是…

安卓逆向:adb连接模拟器进行jeb动态调试

这篇文章的内容记录下我在各个文章搜索学习最后解决了安卓进行模拟器动态调试的方法。 参考的文章有: ADB:https://blog.csdn.net/Python_0011/article/details/132040387 ADB的使用https://blog.csdn.net/SM1555/article/details/112608576 Androidkiller:https://blog.csdn.…

Java中的Map CAS AQS

Java中的Map 1.基本介绍和api使用就免了 Java中的Map是一种用于存储键值对(Key-Value)的接口,属于java.util包,是集合框架的重要组成部分。 2.HashMap从图中的关系可以看出这些类间关系了。 ①基本分析 HashMap的一些属性 // 默认容量 16 static final int DEFAULT_INITIAL…