65pt TLE的一种可能性
查看原帖
65pt TLE的一种可能性
261623
熠丶楼主2025/7/28 18:25

刚开始用 Go 语言实现的 BFS 写法,一直 TLE。后面改用 dp 做法,结果还是 TLE。因为时间复杂度是 O(Tnm)O(Tnm),果断怀疑读入常数太大了。

原本读入写法:

in = bufio.NewReader(os.Stdin)
out = bufio.NewWriter(os.Stdout)
defer out.Flush()

fmt.Fscan(in, &n, &m, &s, &k)

类似于取消同步流。


后面生成了个快读板子改改后过了。

var (
	fr *FastReader
	wr *bufio.Writer
)

type FastReader struct {
	r   *bufio.Reader
	buf []byte
}

func NewFastReader(r io.Reader) *FastReader {
	return &FastReader{
		r:   bufio.NewReaderSize(r, 1<<20), // 1 MiB buffer
		buf: make([]byte, 0, 1<<20),
	}
}

func (fr *FastReader) Int() int {
	var val int
	sign := 1

	// 跳过空白
	c, _ := fr.r.ReadByte()
	for (c < '0' || c > '9') && c != '-' {
		c, _ = fr.r.ReadByte()
	}

	// 处理负号
	if c == '-' {
		sign = -1
		c, _ = fr.r.ReadByte()
	}

	for c >= '0' && c <= '9' {
		val = val*10 + int(c-'0')
		c, _ = fr.r.ReadByte()
	}
	return val * sign
}

不清楚 c++ 有没有这样的问题。

2025/7/28 18:25
加载中...