当前位置: 首页 > news >正文

【数学】P2671 [NOIP2015 普及组] 求和

题目背景

NOIP2015 普及组 T3、深入浅出进阶1-5

题目描述

一条狭长的纸带被均匀划分出了 n n n 个格子,格子编号从 1 1 1 n n n。每个格子上都染了一种颜色 c o l o r i color_i colori [ 1 , m ] [1,m] [1,m] 当中的一个整数表示),并且写了一个数字 n u m b e r i number_i numberi

编号123456
颜色和数字 5 \color{blue}{5} 5 5 \color{blue}{5} 5 3 \color{red}{3} 3 2 \color{red}{2} 2 2 \color{blue}{2} 2 2 \color{red}{2} 2

定义一种特殊的三元组: ( x , y , z ) (x,y,z) (x,y,z),其中 x , y , z x,y,z x,y,z 都代表纸带上格子的编号,这里的三元组要求满足以下两个条件:

  1. x , y , z x,y,z x,y,z 都是整数, x < y < z , y − x = z − y x<y<z,y-x=z-y x<y<z,yx=zy

  2. c o l o r x = c o l o r z color_x=color_z colorx=colorz

满足上述条件的三元组的分数规定为 ( x + z ) × ( n u m b e r x + n u m b e r z ) (x+z) \times (number_x+number_z) (x+z)×(numberx+numberz)。整个纸带的分数规定为所有满足条件的三元组的分数的和。这个分数可能会很大,你只要输出整个纸带的分数除以 10007 10007 10007 所得的余数即可。

思路:

题目等价于求对于所有满足 x ≡ z ( m o d 2 ) , c o l o r x = c o l o r z x \equiv z(\bmod 2),color_x = color_z xz(mod2)colorx=colorz 的二元组 ( x , z ) (x,z) (x,z) ( x + z ) × ( n u m b e r x + n u m b e r z ) (x+z) \times (number_x+number_z) (x+z)×(numberx+numberz) 数值。容易想到将题目所有输入按照不同颜色和奇数偶数进行处理。

不妨让问题特殊化:假设我们当前要处理 3 3 3 个相同颜色,编号和数字依次为:

编号159
数字 a 1 a_1 a1 a 5 a_5 a5 a 9 a_9 a9

有答案
a n s = ( 1 + 5 ) ( a 1 + a 5 ) + ( 1 + 9 ) ( a 1 + a 9 ) + ( 5 + 9 ) ( a 5 + a 9 ) = ( 2 × 1 + 5 + 9 ) a 1 + ( 2 × 5 + 1 + 9 ) a 5 + ( 2 × 9 + 1 + 5 ) a 9 ans = (1+5)(a_1 + a_5)+(1+9)(a_1+a_9)+(5+9)(a_5+a_9)= (2\times1+5+9)a_1 +(2\times 5+1+9)a_5+(2\times9+1+5)a_9 ans=(1+5)(a1+a5)+(1+9)(a1+a9)+(5+9)(a5+a9)=(2×1+5+9)a1+(2×5+1+9)a5+(2×9+1+5)a9

进一步的,上述式子等于 ( 1 + 5 + 9 ) ( a 1 + a 5 + a 9 ) + ( 1 × a 1 + 5 × a 5 + 9 × a 9 ) (1+5+9)(a_1+a_5+a_9)+(1\times a_1 +5 \times a_5 + 9 \times a_9) (1+5+9)(a1+a5+a9)+(1×a1+5×a5+9×a9)

一般化问题,假设处理 m m m 个同色且都为奇数(偶数)的数字,编号和数字依次为

编号: x 1 , x 2 … x m x_1,x_2 \dots x_m x1,x2xm

数字: a 1 , a 2 … a m a_1,a_2 \dots a_m a1,a2am

a n s = ( a 1 + a 2 ) ( x 1 + x 2 ) + ( a 1 + a 3 ) ( x 1 + x 3 ) ⋯ = a 1 ( x 1 + x 2 + x 1 + x 3 ⋯ + x 1 + x m ) + a 2 ⋯ + a m ( … ) ans = (a_1 + a_2)(x_1+x_2) + (a_1+a_3)(x_1+x_3)\dots=a1(x_1+x_2+x_1+x_3\dots+x_1+x_m)+a2 \dots+a_m(\dots ) ans=(a1+a2)(x1+x2)+(a1+a3)(x1+x3)=a1(x1+x2+x1+x3+x1+xm)+a2+am()

化简,有 a n s = a 1 [ ( m − 1 ) x 1 + ∑ i = 2 m x i ] + a 2 [ ( m − 1 ) x 2 + ∑ i = 1 m x i − x 2 ] ⋯ = a 1 [ ( m − 2 ) x 1 + ∑ i = 1 m x i ] + a 2 ⋯ = ( a 1 + a 2 + a 3 … a m ) ∑ i = 1 m x i + ( m − 2 ) ∑ i = 1 m ( a i x i ) ans = a_1[(m-1)x_1+\sum_{i=2}^{m}{x_i}]+a_2[(m-1)x_2+\sum_{i=1}^{m}{x_i} - x_2]\dots=a_1[(m-2)x_1+\sum_{i=1}^{m}{x_i}]+a_2\dots=(a_1+a_2+a_3\dots a_m)\sum_{i=1}^{m}{x_i} + (m-2)\sum_{i=1}^{m}{(a_ix_i)} ans=a1[(m1)x1+i=2mxi]+a2[(m1)x2+i=1mxix2]=a1[(m2)x1+i=1mxi]+a2=(a1+a2+a3am)i=1mxi+(m2)i=1m(aixi)

最终,可得到以下式子:

a n s = ∑ i = 1 m a i × ∑ j = 1 m x i + ( m − 2 ) × ∑ k = 1 m ( a k x k ) ans = \sum_{i=1}^{m}{a_i} \times \sum_{j=1}^{m}{x_i}+(m-2) \times \sum_{k=1}^{m}{(a_kx_k)} ans=i=1mai×j=1mxi+(m2)×k=1m(akxk)

注意到以上所有式子都能在输入时处理,故本题解决,算法时间复杂度 O ( n + m ) O(n+m) O(n+m)

代码

#include<bits/stdc++.h>
#define int long long
const int p = 10007;
using namespace std;
int n,m;
int num[100005],c[100005];
int s[100005][2],s2[100005][2],s3[100005][2];
int ans = 0;
signed main() {scanf("%lld %lld",&n,&m);for(int i = 1;i <= n;i++) scanf("%lld",&num[i]);for(int i = 1;i <= n;i++) scanf("%lld",&c[i]),s3[c[i]][i % 2]++;//统计这一类的数字数量for(int i = 1;i <= n;i++) {s[c[i]][i % 2] += i;//统计x数列的总和s2[c[i]][i % 2] += num[i];//统计a数列总和if(s3[c[i]][i % 2] >= 2)ans += (s3[c[i]][i % 2] - 2) * num[i] * i;//加上所求式子后面的那一部分ans %= p;}for(int i = 1;i <= m;i++) {for(int j = 0;j <= 1;j++) {if(s3[i][j] <= 1) continue;ans += s[i][j] * s2[i][j];//加上所求式子前面的那一部分ans %= p;}}printf("%lld\n",ans);return 0;
}

相关文章:

【数学】P2671 [NOIP2015 普及组] 求和

题目背景 NOIP2015 普及组 T3、深入浅出进阶1-5 题目描述 一条狭长的纸带被均匀划分出了 n n n 个格子&#xff0c;格子编号从 1 1 1 到 n n n。每个格子上都染了一种颜色 c o l o r i color_i colori​ 用 [ 1 , m ] [1,m] [1,m] 当中的一个整数表示&#xff09;&…...

【AI图像生成网站Golang】项目测试与优化

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与优化 六、项目测试与优化 在开发过程中&#xff0c;性能优化是保证项目可扩展性和用户体验的关键步骤。本文将详细介绍我如何使用一…...

vue常用自定义指令

参考链接1https://blog.csdn.net/m0_67584973/article/details/139300966?spm1001.2014.3001.5501 参考链接2https://juejin.cn/post/7067051410671534116...

以太网帧、IP数据报图解

注&#xff1a;本文为 “以太网帧、IP数据报”图解相关文章合辑。 未整理去重。 以太网帧、IP数据报的图解格式&#xff08;包含相关例题讲解&#xff09; Rebecca.Yan已于 2023-05-27 14:13:19 修改 一、基础知识 UDP 段、IP 数据包&#xff0c;以太网帧图示 通信过程中&…...

01.大模型起源与发展

知识点 注意力机制&#xff08;Attention&#xff09;的主要用途是什么&#xff1f; 选择重要的信息并忽略不相关的信息 Transformer 模型是基于什么理论构建的&#xff1f; C. 注意力机制&#xff08;Attention&#xff09; GPT 和 BERT 的主要区别是什么&#xff1f; C. GPT…...

leetcode刷题日记03——javascript

题目3&#xff1a; 回文数https://leetcode.cn/problems/palindrome-number/ 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向…...

vue横向滚动日期选择器组件

vue横向滚动日期选择器组件 组件使用到了element-plus组件库和dayjs库&#xff0c;使用前先保证项目中已经下载导入 主要功能&#xff1a;选择日期&#xff0c;点击日期可以让此日期滚动到视图中间&#xff0c;左滑右滑同理&#xff0c;支持跳转至任意日期&#xff0c;支持自…...

【大模型】大模型项目选择 RAGvs微调?

RAG 输入问题&#xff0c;在知识库匹配知识&#xff0c;构建提示词&#xff1a;基于{知识}回答{问题} 微调 用知识问答对重新训练大模型权重&#xff0c;输入问题到调整后的大模型 如何选择 如果业务要求较高&#xff0c;RAG和微调可以一起使用 1-动态数据 选择RAG 原因&a…...

2024年12月CCF-GESP编程能力等级认证Python编程一级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰霍普菲尔德(John J. Hopfield)和杰弗里辛顿(Geof…...

【机器学习】元学习(Meta-learning)

云边有个稻草人-CSDN博客 目录 引言 一、元学习的基本概念 1.1 什么是元学习&#xff1f; 1.2 元学习的与少样本学习的关系 二、元学习的核心问题与挑战 2.1 核心问题 2.2 挑战 三、元学习的常见方法 3.1 基于优化的元学习 3.1.1 MAML&#xff08;Model-Agnostic Meta…...

详解Redis的String类型及相关命令

目录 SET GET MGET MSET SETNX SET和SETNX和SETXX对比 INCR INCRBY DECR DECRBY INCRBYFLOAT APPEND GETRANGE SETRANGE STRLEN 内部编码 SET 将 string 类型的 value 设置到 key 中。如果 key 之前存在&#xff0c;则覆盖&#xff0c;⽆论原来的数据类型是什么…...

android RadioButton + ViewPager+fragment

RadioGroup viewpage fragment 组合显示导航栏 1、首先主界面的布局控件就是RadioGroup viewpage <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools…...

给机器装上“脑子”—— 一文带你玩转机器学习

目录 一、引言&#xff1a;AI浪潮中的明星——机器学习 二、机器学习的定义与概念 1. 机器学习与传统编程的区别 2. 机器学习的主要任务类型 3. 机器学习的重要组成部分 三、机器学习的工作原理&#xff1a;从数据到模型的魔法之旅 1. 数据收集与预处理——数据是机器的…...

论文笔记:是什么让多模态学习变得困难?

整理了What Makes Training Multi-modal Classification Networks Hard? 论文的阅读笔记 背景方法OGR基于最小化OGR的多监督信号混合在实践中的应用 实验 背景 直观上&#xff0c;多模态网络接收更多的信息&#xff0c;因此它应该匹配或优于其单峰网络。然而&#xff0c;最好的…...

ChatGPT Search开放:实时多模态搜索新体验

点击访问 chatTools 免费体验GPT最新模型&#xff0c;包括o1推理模型、GPT4o、Claude、Gemini等模型&#xff01; ChatGPT Search&#xff1a;功能亮点解析 本次更新的ChatGPT Search带来了多项令人瞩目的功能&#xff0c;使其在搜索引擎市场中更具竞争力。 1. 高级语音模式&…...

Centos7.9 离线安装docker

实验环境&#xff1a; [root192 ~]# cat /etc/system-release CentOS Linux release 7.9.2009 (Core)下载二进制压缩包 a. 官网下载地址&#xff1a; https://download.docker.com/linux/static/stable/x86_64/b. 阿里云下载地址 https://mirrors.aliyun.com/docker-ce/lin…...

C语言函数在调用过程中具体是怎么和栈互动的?

从栈开始的一场C语言探险记 —— C语言函数是如何与栈"共舞"的。 栈的舞步解析 通过一个简单的例子来看看这支"舞蹈"&#xff1a; int add(int a, int b) {int result a b;return result; }int main() {int x 10;int y 20;int sum add(x, y);retur…...

【Java中常见的异常及其处理方式】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 字符串修改的实现——StringBuilder和StringBuffer异常常见异常①算数异常②数组越界异常③空指针异…...

如何更新项目中的 npm 或 Yarn 依赖包至最新版本

要升级 package.json 文件中列出的包&#xff0c;你可以使用 npm&#xff08;Node Package Manager&#xff09;或 yarn。以下是两种工具的命令来更新你的依赖项&#xff1a; 使用 npm 更新所有包到最新版本 npm update如果你想将所有依赖项更新到其各自最新的大版本&#xf…...

SpringBoot3整合FastJSON2如何配置configureMessageConverters

在 Spring Boot 3 中整合 FastJSON 2 主要涉及到以下几个步骤&#xff0c;包括添加依赖、配置 FastJSON 作为 JSON 处理器等。下面是详细的步骤&#xff1a; 1. 添加依赖 首先&#xff0c;你需要在你的 pom.xml 文件中添加 FastJSON 2 的依赖。以下是 Maven 依赖的示例&#…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...