小编EbT*_*ech的帖子

Rust中用于编程竞赛的最快的惯用I / O例程?

我的问题已得到部分回答,因此我对它进行了修改,以回应从评论和其他实验中学到的知识。

总而言之,我想要一个用于编程比赛的快速I / O例程,在该例程中,一个文件即可解决问题,而无需外部包装。它应从BufRead(标准输入或文件)空白序列中读取标记。标记可以是整数,浮点数或ASCII词,用空格和换行符分隔,因此看来我应该FromStr一般支持类型。少数问题是交互式的,这意味着一开始并不是所有输入都可用,但是总会出现完整的问题。

对于上下文,这是导致我在此处发布的讨论。有人编写了非常快速的自定义代码,以直接从的&[u8]输出中解析整数BufRead::fill_buf(),但在中不是通用的FromStr

到目前为止,这是我最好的解决方案(强调Scanner结构):

use std::io::{self, prelude::*};

fn solve<B: BufRead, W: Write>(mut scan: Scanner<B>, mut w: W) {
    let n = scan.token();
    let mut a = Vec::with_capacity(n);
    let mut b = Vec::with_capacity(n);
    for _ in 0..n {
        a.push(scan.token::<i64>());
        b.push(scan.token::<i64>());
    }
    let mut order: Vec<_> = (0..n).collect();
    order.sort_by_key(|&i| b[i] - a[i]);
    let ans: i64 = order
        .into_iter()
        .enumerate()
        .map(|(i, x)| a[x] * …
Run Code Online (Sandbox Code Playgroud)

string optimization parsing rust

5
推荐指数
1
解决办法
211
查看次数

标签 统计

optimization ×1

parsing ×1

rust ×1

string ×1