string[_view]

Luogu
IDLGP9680
Time1000ms
Memory512MB
DifficultyP2
模拟字符串洛谷原创O2优化洛谷月赛
你需要模拟一个简单的 C++ 程序,该程序的每一行必然为如下两种形式之一: - `string <variable-name>(<initializer>);` - `string_view <variable-name>(<initializer>);` 其中 `variable-name` 为声明的变量名(保证之前未出现过,且长度不超过 $10$),`initializer` 为初始化该变量的内容,可以是: - 字符串字面量,即用双引号引起的字符串(形如 `"abc"`); - 之前出现过的变量名 `source`,此时应将 `source` 对应的字符串赋给 `variable-name`。 具体而言,将任意一个字符串 $s$ 赋给 string 类型会进行 $|s|$ 次字符拷贝,而赋给 string\_view 类型不会拷贝字符。其中 $|s|$ 为字符串 $s$ 的长度。 你需要计算出该程序中字符拷贝的总次数。 ## Input 第一行输入一个整数 $L$,代表程序行数。 接下来 $L$ 行,输入一段代码。 ## Output 输出一个整数,代表字符拷贝总次数。 [samples] ## Background C++ 的 string 类是一个功能强大的字符串类,然而由于其字符串算法和内存管理绑定的机制,所以在处理 C 风格字符串时效率低下。 为了解决这个问题,C++17 标准引入了 string\_view 类型,将内存管理和字符串算法分离,从而更好地适配了 C 风格字符串的处理。 ## Note 对于每组数据,保证代码长度均不超过 $10^4$(不包括换行符)。 保证字符串字面量(除去两侧引号)和变量名中只有拉丁字母,且给定的代码严格满足题目要求。 ### 子任务 | # | 特殊性质 | 分值 | | :--: | :----------------------------: | :--: | | 0 | 样例 | 0 | | 1 | 所有变量均为 string\_view 类型 | 10 | | 2 | 只使用字符串字面量初始化 | 20 | | 3 | - | 70 | --- 好消息:GCC 9.3.0 支持 string_view。 坏消息:NOI 不开 C++17。
Samples
Input #1
6
string a("cxyakioi");
string_view b("cxyakapio");
string c(b);
string_view d(a);
string_view cxyakioi(c);
string cxyakapio(d);
Output #1
25
API Response (JSON)
{
  "problem": {
    "name": "string[_view]",
    "description": {
      "content": "你需要模拟一个简单的 C++ 程序,该程序的每一行必然为如下两种形式之一: - `string <variable-name>(<initializer>);` - `string_view <variable-name>(<initializer>);` 其中 `variable-name` 为声明的变量名(保证之前未出现过,且长度不超过 $10$),`initializer` 为初始化该变",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P2"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP9680"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "你需要模拟一个简单的 C++ 程序,该程序的每一行必然为如下两种形式之一:\n\n- `string <variable-name>(<initializer>);`\n- `string_view <variable-name>(<initializer>);`\n\n其中 `variable-name` 为声明的变量名(保证之前未出现过,且长度不超过 $10$),`initializer` 为初始化该变...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments