CodeM资格赛第一题
来源:互联网 发布:云计算港股上市公司 编辑:程序博客网 时间:2024/05/16 02:59
[编程|1000分] 音乐研究
时间限制:1秒
空间限制:32768K
题目描述
美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究。他有两段音频,每段音频是一个表示音高的序列。现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分。具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 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
用py打表没过,C++暴力过了,第一次dif = 0x3f3f3f;过一半,dif = 0x3f3f3f3f;过了,很坑。
#include <iostream>using namespace std;int main(){ int n, m; cin >> n; int f[1001]; int s[1001]; for (int i = 0; i < n; ++i) cin >> f[i]; cin >> m; for (int i = 0; i < m; ++i) cin >> s[i]; int dif = 0x3f3f3f3f; for (int i = 0; i < m-n+1; ++i) { int t = 0; for (int j = 0; j < n; ++j) t += (f[j] - s[i + j])*(f[j] - s[i + j]); dif = dif < t ? dif : t; } cout << dif << endl; return 0;}
阅读全文
0 0
- CodeM资格赛第一题
- 美团CodeM 资格赛第一题
- CodeM资格赛第二题
- CodeM编程资格赛第三题
- CodeM资格赛
- CodeM资格赛1
- CodeM美团点评编程大赛资格赛A题
- CodeM美团点评编程大赛资格赛B题
- CodeM美团点评编程大赛资格赛C题
- CodeM资格赛B 锦标赛 题解
- CodeM资格赛C 优惠券 题解
- CodeM资格赛E 数码 题解
- 美团codeM资格赛 优惠券
- 美团codeM资格赛 数码
- 美团codeM资格赛 锦标赛
- CodeM美团点评编程大赛资格赛
- 美团Codem编程比赛资格赛:数码
- CodeM资格赛A 音乐研究 题解
- android 二维码的集成十分简单
- 21条CSS高级技巧
- http的keep-alive和tcp的keepalive区别
- win7安装tensorflow-gpu版(Anaconda)
- Tizen
- CodeM资格赛第一题
- centos 6.5 安装shadowsock
- ARP协议的工作过程和局域网使用
- Java世界产品的Maven包命名展示
- 【树形DP】codeforces 219D Choosing Capital for Treeland
- SharedPreferences初识
- 算法导论 思考题 16-1 d小题 找零问题
- VMware: ubuntu 与Windows设置共享文件夹
- 视音频数据处理入门:UDP-RTP协议解析