Golang在OJ系統上的坑 輸入相關

2021-10-02 13:05:52 字數 975 閱讀 1616

首先,我們知道讀取控制台輸入可以用fmt包或者bufio包,這裡盡量不要用fmt的scan(也包括scanf,scanln等等),雖然用法和c的scanf差不多,但是效率低太多,多呼叫幾次就tle的節奏。推薦使用bufio.newscanner,一般來說絕大部分的題目用這個就夠了。但是,bufio.newscanner的底層buf陣列有個最大快取限制的,是64k,也就是說按照標準的scan,一行最多64k的資料大小,題目裡如果超過這個範圍,比如一行20萬資料,每個資料範圍還是int32內的,那這就至少800k的大小了,還沒算上中間的空格,所以預設的buf空間肯定是不夠的,這時候需要呼叫buffer方法,手動給scanner分配乙個滿足題目空間的buf陣列,其餘照常。(當然,除了這種方法,還可以用bufio的newreader,呼叫readstring方法,可以完整地讀取一行,而不必考慮一行的長度,因為底層幫忙做了處理)

附個題目:

以及ac**:

package main

import (

"bufio"

"fmt"

"os"

"sort"

"strconv"

"strings"

)func main()

sc.scan()

m, _ := strconv.atoi(sc.text())

movie := make([3]int, m)

sc.scan()

l = strings.split(sc.text(), " ")

for i, s := range l

sc.scan()

l = strings.split(sc.text(), " ")

for i, s := range l

sort.slice(movie, func(i, j int) bool else

}) fmt.println(movie[0][2])

}

ACM c 在oj上做題時遇到過的坑

前言 這裡每個坑都用了我超過1個小時,好多水題都是因為這些小坑卡了1個小時,賊氣 沒辦法,coding能力比較弱。記下來這些教訓,也讓後人也看看,避開一些坑。不定期更新 最後更新日期 2018 08 01 1.cin cout太慢導致超時 找了很久,發現要兩個命令一起用。ios sync with ...

Golang 在ubuntu上的配置

sudo apt get install python setuptools python dev build essential 安裝開發環境 sudo apt get install mercurial 安裝 管理工具hg hg clone u release go clone源 到本地 cd ...

new Date 在ios上的坑

今天再開發的過程中遇到了乙個坑 需要用到當前時間與產品過期時間去做乙個判斷,產品過期時間的格式是 2020 04 26 09 23 00 類似這樣,本來想著用new date 取當前時間與過期時間進行大小比較,應該是沒什麼毛病才對,結果上線之後發現,ios裝置上沒有效果,檢查了之後才發現,原來new...