zoukankan      html  css  js  c++  java
  • 求和(NOIP2015 普及组第三题)

    描述

    一条狭长的纸带被均匀划分出了 n 个格子,格子编号从 1 到 n。每个格子上都染了一种颜色color_icolori(用[1,m]当中的一个整数表示),并且写了一个数字number_inumberi

    图片

    定义一种特殊的三元组:(x, y, z),其中 x,y,z 都代表纸带上格子的编号,这里的三元组要求满足以下两个条件:
    1. x, y, z都是整数, x < y < z, y − x = z − y
    2. color_xcolorx = color_zcolorz

    满足上述条件的**三元组的分数**规定为(x + z) ∗ (number_xnumberx + number_znumberz)。**整个纸带的分数**规定为所有满足条件的三元组的分数的和。这个分数可能会很大,你只要输出整个纸带的分数除以 10,007 所得的余数即可。

    格式

    输入格式

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

    第二行有 n 个用空格隔开的正整数,第 i 个数字number_inumberi代表纸带上编号为 i 的格子上面写的数字。

    第三行有 n 个用空格隔开的正整数,第 i 个数字color_icolori代表纸带上编号为 i 的格子染的颜色。

    输出格式

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

    样例1

    样例输入1

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

    样例输出1

    82

    样例2

    样例输入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 组至第 2 组数据,1 ≤ n ≤ 100, 1 ≤ m ≤ 5; 对于第 3 组至第 4 组数据,1 ≤ n ≤ 3000, 1 ≤ m ≤ 100;

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

    对于全部 10 组数据, 1 ≤ n ≤ 100000, 1 ≤ m ≤ 100000, 1 ≤ color_icolori ≤ m, 1 ≤ number_inumberi ≤ 100000。

    提示

    【输入输出样例 1 说明】

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

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

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

  • 相关阅读:
    VisualSVN-Server windows 版安装时报错 "Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details."
    Pytest 单元测试框架之初始化和清除环境
    Pytest 单元测试框架入门
    Python(email 邮件收发)
    Python(minidom 模块)
    Python(csv 模块)
    禅道简介
    2020年最好的WooCommerce主题
    Shopify网上开店教程(2020版)
    WooCommerce VS Magento 2020:哪个跨境电商自建站软件更好?
  • 原文地址:https://www.cnblogs.com/tanjiaqi/p/7622110.html
Copyright © 2011-2022 走看看