在线编程竞赛的投入

input for online programming competitons

本文关键字:竞赛 编程 在线      更新时间:2023-10-16

在许多在线编程竞赛(例如,codechef)中,输入有2-5行。第一行主要由测试用例的no和其他包含程序数据的行组成。例如:

输入:输入的第一行包含一个整数T,表示测试用例的数量。接下来是T个测试用例。每个的第一行测试用例包含三个空格分隔的整数N、K和Q问题中描述的。第二行包含的字符串S长度N。然后接下来的Q行描述查询,其中第i行其中包含两个空间分隔的整数Li和Ri。

1

8 2 3

01110000

1 4

2 4

58

现在假设在我的代码中,我将第一行的输入作为

cin>>no_of_case;

我运行了一个for循环,这是我在从第二行获取输入时遇到的问题。

但是正如您在input语句中看到的,第二行有3个变量输入。

如何在3个不同的变量中输入第二行

我发现的一种方法是在数组中获取输入,解析数据中的空格,并将输入分离为不同的变量。但这对长期投入来说是长期的。

以下是您可能正在寻找的算法:

使用getline(cin, no_of_case)读取所有输入,然后使用空格(")作为分隔符拆分输入。

希望这能让你走上正轨。。。

注意:如果您计划将输入用作算术目的的数字,则可能需要将这些字符串转换回整数。

编辑:要将字符串数字转换回整数,可以使用std::stoi()函数。在这个例子中,这样使用它:std::stoi(no_of_case)

请确保同时具有#include <iostream>#include <string>,如果使用名称空间,则不需要std::前缀。

简单修复:

cin>>N>>K>>Q;

这应该有效。。。