【NOIP2015普及组复赛】题3:求和

题3:求和

【题目描述】

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

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

  1. x y z xyz xyz 是整数, x < y < z , y − x = z − y x<y<z,y−x=z−y x<y<zyx=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)×(number_x+number_z) (x+z)×(numberx+numberz) 。整个纸带的分数规定为所有满足条件的三元组的分数的和。这个分数可能会很大,你只要输出整个纸带的分数除以 10 , 007 10,007 10,007 所得的余数即可。

【输入】

第一行是用一个空格隔开的两个正整数 n n n m , n m,n mn 表纸带上格子的个数, m m m 表纸带上颜色的种类数。

第二行有 n n n 用空格隔开的正整数,第 i i i 数字 n u m b e r number number 表纸带上编号为 i i i 格子上面写的数字。

第三行有 n n n 用空格隔开的正整数,第 i i i 数字 c o l o r color color 表纸带上编号为 i i i 格子染的颜色。

【输出】

共一行,一个整数,表示所求的纸带分数除以 10 , 007 10,007 10,007 所得的余数。

【输入样例1】

6 2
5 5 3 2 2 2
2 2 1 1 2 1

【输出样例1】

82

【输入样例2】

15 4
5 10 8 2 2 2 9 9 7 7 5 6 4 2 4
2 2 3 3 4 3 3 2 4 4 4 4 1 1 1

【输出样例2】

1388

【样例1说明】

纸带如题目描述中的图所示。

所有满足条件的三元组为: ( 1 , 3 , 5 ) , ( 4 , 5 , 6 ) (1,3,5),(4,5,6) (1,3,5),(4,5,6)

所以纸带的分数为 ( 1 + 5 ) × ( 5 + 2 ) + ( 4 + 6 ) × ( 2 + 2 ) = 42 + 40 = 82 (1+5)×(5+2)+(4+6)×(2+2)=42+40=82 (1+5)×(5+2)+(4+6)×(2+2)=42+40=82

【数据规模】

对于第 1 1 1 组至第 2 2 2 组数据, 1 ≤ n ≤ 100 , 1 ≤ m ≤ 5 1≤n≤100,1≤m≤5 1n100,1m5

对于第 3 3 3组至第 4 4 4 组数据, 1 ≤ n ≤ 3000 , 1 ≤ m ≤ 100 1≤n≤3000,1≤m≤100 1n3000,1m100

对于第 5 5 5 组至第 6 6 6 组数据, 1 ≤ n ≤ 100000 , 1 ≤ m ≤ 100000 1≤n≤100000,1≤m≤100000 1n100000,1m100000,且不存在出现次数超过 20 20 20 的颜色;

对于全部 10 10 10 组数据, 1 ≤ n ≤ 100000 , 1 ≤ m ≤ 100000 , 1 ≤ c o l o r i ≤ m , 1 ≤ n u m b e r i ≤ 100000 1≤n≤100000,1≤m≤100000,1≤colori≤m,1≤numberi≤100000 1n100000,1m100000,1colorim1numberi100000

【代码如下】:

#include<bits/stdc++.h>
using namespace std;
//ifstream cin("sum.in");
//ofstream cout("sum.ans");
const int mn=100000;
const int mm=100000;
const int p=10007;
int n,m,ans;
int number[mn+1],colour[mn+1];
int s[2][mm+1][4];void init(){cin >> n >> m;for(int i=1;i<=n;i++){cin >> number[i];}for(int i=1;i<=n;i++){cin >> colour[i];}
}
void solve(){for(int i=1;i<=n;i++){int z=i%p,numz=number[i]%p,c=colour[i],t=i%2;int count=s[t][c][0]%=p,x=s[t][c][1]%=p,
numx=s[t][c][2]%=p,x_numx=s[t][c][3]%=p;ans=(ans+((count*z)%p*numz)%p)%p;ans=(ans+x_numx)%p;ans=(ans+x*numz)%p;ans=(ans+z*numx)%p;s[t][c][0]++;s[t][c][1]+=z;s[t][c][2]+=numz;s[t][c][3]+=z*numz;}
}
void output(){cout << ans;//fclose(stdin);//fclose(stdout);
}
int main(){init();solve();output();return 0;
}

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

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

相关文章

超级好用的C++实用库之环形内存池

&#x1f4a1; 需要该C实用库源码的大佬们&#xff0c;可搜索微信公众号“希望睿智”。添加关注后&#xff0c;输入消息“超级好用的C实用库”&#xff0c;即可获得源码的下载链接。 概述 环形内存池是一种高效的内存管理技术&#xff0c;特别适合于高并发、实时性要求高的系统…

【内核】架构师的精神力量

不要被敌人的气势汹汹所吓倒 不要被尚能忍耐的困难所沮丧 不要被一时的挫折所灰心 道路是曲折的&#xff0c;前途是光明&#xff0c;黑暗即将过去&#xff0c;曙光就在眼前 有利的条件和主动的恢复&#xff0c;产生于再坚持一下的努力之中 以上来自毛选语录。 内心有了精神…

前端如何学会全栈分页开发?源码和思路都在这了

本项目代码已开源&#xff0c;具体见&#xff1a; 前端工程&#xff1a;vue3-ts-blog-frontend 后端工程&#xff1a;express-blog-backend 数据库初始化脚本&#xff1a;关注公众号程序员白彬&#xff0c;回复关键字“博客数据库脚本”&#xff0c;即可获取。 前言 这是博客系…

GMSL2硬件设计V1.1

一、说明 GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司(现属于ADI)推出的一种高速串行接口,通过同轴电缆或屏蔽双绞线(STP)传输高速串行数据,用于汽车摄像头和显示器应用。GMSL2就是指ADI专有的第二代千兆多媒体串行链路技术,传输…

RPA+AI 应用案例集合:自动推流直播

使用场景&#xff1a; 自动定时推流直播 使用技术&#xff1a; python playwright 每个解决一个小问题 During handling of the above exception, another exception occurred:Traceback (most recent call last): File "D:\pythonTryEverything\putdonwphone\not_watch_…

前端开发工程师——webpack

一.环境准备 npm init -y npm i webpack webpack-cli -D 打包命令 npx webpack ./src/main.js --modedevelopment //development开发模式 //production生产模式 npx webpack 直接运行就行 二.加载器loader 在less/stylus/css/sass/images中添加适当的样式 例如&#xff1…

Python筑基之旅-文件(夹)操作和流

目录 一、文件操作 1、文件打开与关闭 2、文件读写 3、文件操作模式 4、文件编码 二、文件夹操作 1、创建文件夹 2、删除文件夹 3、改变当前工作目录 4、获取当前工作目录 5、检查文件/文件夹是否存在 6、遍历文件夹 三、文件路径操作 1、获取绝对路径 2、构建完…

爬山算法全解析:掌握优化技巧,攀登技术高峰!

一、引言 爬山算法是一种局部搜索算法&#xff0c;它基于当前解的邻域中进行搜索&#xff0c;通过比较当前解与邻域解的优劣来更新当前解&#xff0c;从而逐步逼近最优解。本文将对爬山算法进行详细的介绍。 二、爬山算法简介 爬山算法是一种基于贪心策略的优化算法&#xff…

11-异常-Exception

1. 异常示例 public static void main(String[] args) {int num1 10;int num2 0;int res num1 / num2;System.out.println("程序继续运行...."); } 数学上&#xff0c;做除法时&#xff0c;分母不能为0&#xff0c;运行到第三行就会出现错误&#xff0c;程序运行…

如何利用Ubuntu服务器运行深度学习项目?

一、整体思路 先配置好服务器端的软件环境&#xff08;工程源码&#xff0c;miniconda&#xff0c;cuda&#xff0c;显卡驱动等&#xff09;&#xff0c;然后用自己电脑的pycharm远程连接服务器运行代码。一句话总结&#xff1a;借用服务器资源运行代码&#xff0c;本地pycharm…

【推荐系统-特征工程】按每个日期生产特征的大忌

对于每个date&#xff0c;生产这个date前7天的某特征&#xff0c; inputDate 20240501 beginDate 20240501 - 7day SQL要用between这种逻辑 比如where dateColumn > beginDate and dateColumn < inputDate 而不是仅where dateColumn > beginDate。。。

ubuntu安装Stable Video Diffusion(SVD)让图片动起来

目录 写在前面 一、克隆或下载项目 二、下载预训练模型 三、创建环境 四、安装依赖 五、启动项目 六、解决报错 1.预训练模型下不来 2.TiffWriter.write() got an unexpected keyword argument fps 3.安装ffmpeg 4.No module named scripts 七、测试 写在前面 Stab…

深入解析内置模块OS:让你的Python代码更懂操作系统

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、OS模块简介与基础应用 二、文件与目录操作详解 三、OS模块的高级应用&#xff1a;双色…

第5章:软件工程基础知识

软件工程 软件工程过程是指为获得软件产品&#xff0c;在软件工具的支持下由软件工程师完成的一系列软件工程活动&#xff0c;包括以下4个方面。 (1)P(Plan)—软件规格说明。规定软件的功能及其运行时的限制。(2)**D(Do)**一软件开发。开发出满足规格说明的软件。(3)**C(Check…

力扣 90. 子集 II python AC

递归 class Solution:def __init__(self):self.nums Noneself.size Noneself.res []def dfs(self, ans, x0):if ans.copy() not in self.res:self.res.append(ans.copy())for i in range(x, self.size):ans.append(self.nums[i])self.dfs(ans, i 1)ans.pop()def subsetsWi…

web学习笔记(五十八)

目录 1. v-model 双向数据绑定 2. 事件修饰符 3. 路径别名 4. setup语法糖 4.1 语法糖的概念 4.2 setup语法糖 5. 配置代理服务器 1. v-model 双向数据绑定 v-model 双向数据绑定只能使用在表单标签&#xff1b; v-model双向数据绑定原理&#xff1a;采用 Object.de…

Go语言快速上手Zap日志库

1. Zap日志库简介 Zap是由Uber开源的Go语言日志库&#xff0c;以其高性能和易用性在Go社区中广受欢迎。它提供了丰富的日志记录功能&#xff0c;包括不同级别的日志记录、结构化日志输出、日志轮转等。对于Go语言开发者来说&#xff0c;Zap是一个非常好的选择&#xff0c;特别…

解决updateByExample时属性值异常的问题(部分属性值没有使用占位符?进行占位,而是变成了属性的名称)

目录 场景简介代码片断实体类 报错信息排查原因解决测试过程解决方案 场景简介 1、程序将mybatis框架升级为3.5.9版本后执行updateByExample方法时报错 代码片断 Condition condition new Condition(MbCcsSessionConfig.class); condition.createCriteria().andEqualTo(&quo…

【openlayers系统学习】4.3VectorTile 功能交互(指针悬停在要素上时,绘制矩形框)

三、 VectorTile 功能交互&#xff08;指针悬停在要素上时&#xff0c;绘制矩形框&#xff09; 矢量切片的好处是我们可以与要素交互&#xff0c;因为我们在客户端上有数据。但需要注意的一件事是矢量切片针对渲染进行了优化。这意味着要素仅包含过滤和渲染所需的属性&#xf…