[解题纪录] Love Song

题目

题目大意:

以题目的范例测试资料为例:

7 3
abacaba
1 3
2 5
1 7
  1. 第一行的7代表这首歌有7个字元,3代表接下来有3个问题要回答
  2. 第二行的abacaba则是这首歌的内容
  3. 第三行以後的每一行都代表一个问题,而要回答的答案为这个字串的编号加总

解题思路:

例如范例中的歌曲abacaba, 可以先转成编号的array
a = [1, 2, 1, 3, 1, 2, 1] 接着回答每个问题时,需要频繁的计算subarray的值,
因此这里可以定义一个新的array表示方式,b[i] = sum[a[0] - a[i]],这样会比较好计算

程序码:

// https://codeforces.com/problemset/problem/1539/B
#include <iostream>
#include <string>
using namespace std;

#define MAX_SIZE (int)(1e6+10)

int main(){
    int n, q, strNum[MAX_SIZE];
    string str;
    cin >> n >> q;
    cin >> str;
    strNum[0] = 0;
    int strSize = str.size();
    for (int i = 1; i <= strSize; i++) {
        strNum[i] = strNum[i-1] + str[i-1] - 'a' + 1;
    }

    int l, r;
    for (int i = 0; i < q; i++) {
        cin >> l >> r;
        cout << strNum[r] - strNum[l-1] << endl;
    }

    return 0;
}

<<:  App Inventor 学习笔记 3 : 读取csv档

>>:  Python 演算法 Day 6 - 理论基础 统计 & 机率

正则表达式搜集、DOM、Clean Code

1. 正则表达式搜集 (1) 0~20字元限制 /^\S{0,20}$/ a. 非空白开头 b. {...

机器学习:模型训练架构

分散式运算架构 MapReduce 利用函式语言程序设计的概念,将分散运算分为映射(Map)和归纳...

Day20:【技术篇】无障碍网页之前端切版基本概念

一、前言   上一篇文章提到了网页如何检测无障碍规范,但很多事情防范胜於未然,可以注意一下基本无障碍...

[Day 21] 过滤器Filter哗啦啦

今天天气真好,最适合来学习新事物了!!在创建一个网页时,有可能会遇到需要把使用者输入的文字转成大小写...

[Day 29] 会员登入及登出(一)

我们先做登入的画面, 在app/Http/Controllers/UserAuthControlle...