zoukankan      html  css  js  c++  java
  • 资格赛A

    题目描述

    美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究。他有两段音频,每段音频是一个表示音高的序列。现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分。

    具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 difference 最小。两段等长音频的 difference 定义为:
    difference = SUM(a[i] - b[i])2 (1 ≤ i ≤ n),其中SUM()表示求和
    其中 n 表示序列长度,a[i], b[i]分别表示两段音频的音高。现在袋鼠先生想要知道,difference的最小值是多少?数据保证第一段音频的长度小于等于第二段音频的长度。

    输入描述:
    第一行一个整数n(1 ≤ n ≤ 1000),表示第一段音频的长度。
    第二行n个整数表示第一段音频的音高(0 ≤ 音高 ≤ 1000)。
    第三行一个整数m(1 ≤ n ≤ m ≤ 1000),表示第二段音频的长度。
    第四行m个整数表示第二段音频的音高(0 ≤ 音高 ≤ 1000)。


    输出描述:
    输出difference的最小值

    输入例子:
    2
    1 2
    4
    3 1 2 4

    输出例子:
    0

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 
     5 int a[1002],b[1002];
     6 int main()
     7 {
     8     int n,m;
     9     scanf("%d",&n);
    10     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    11     scanf("%d",&m);
    12     for(int i=1;i<=m;i++) scanf("%d",&b[i]);
    13     int Min=1e9+7;
    14     int s;
    15     for(int i=1;i<=m-n+1;i++){
    16         int l=i;s=0;
    17         for(int j=1;j<=n;j++){
    18             s+=(a[j]-b[l])*(a[j]-b[l]);
    19             l++;
    20         }
    21         Min=min(Min,s);
    22     }
    23     printf("%d
    ",Min);
    24     return 0;
    25 }
  • 相关阅读:
    创建数据库和表例子
    Python标准库之ConfigParser模块
    Python标准库之shelve模块(序列化与反序列化)
    Python标准库之shutil模块
    Python标准库之sys模块
    Python标准库之os模块
    Python标准库Random
    Python标准库之时间模块time与datatime模块详解
    Python模块导入详解
    Python目录结构规范
  • 原文地址:https://www.cnblogs.com/hhxj/p/6985831.html
Copyright © 2011-2022 走看看