通过前缀和来看golang的acm输入输出

前缀和

在这里插入图片描述

问题引入

package mainimport ("fmt"
)func main() {var n, q, l, r intfmt.Scan(&n, &q)a := make([]int, n)ap := make([]int64, n + 1)ap[0] = 0for i := 0; i < n; i++ {fmt.Scan(&a[i])ap[i + 1] = ap[i] + int64(a[i])}for j := 0; j < q; j++ {fmt.Scan(&l, &r)fmt.Println(ap[r] - ap[l-1])}
}

在这里插入图片描述
在这里插入图片描述
考虑是不是输入太慢了,用Scanner试试

package mainimport ("bufio""fmt""os""strconv""strings"
)func main() {/*fmt.Scan()不会处理换行符,所以后面用sc.Scan()会读取换行符*//*改用fmt.Scanln()读取一行,且会丢弃换行符*/var n, q, l, r int//var s stringfmt.Scan(&n, &q)//fmt.Scanln(s)//values := strings.Split(s, " ")//n, _ = strconv.Atoi(values[0])//q, _ = strconv.Atoi(values[1])ap := make([]int64, n+1)ap[0] = 0sc := bufio.NewScanner(os.Stdin)sc.Scan()sc.Scan()strs := strings.Split(sc.Text(), " ")for i := range strs {val, _ := strconv.Atoi(strs[i])ap[i+1] = ap[i] + int64(val)}for i := 0; i < q; i++ {fmt.Scan(&l, &r)fmt.Println(ap[r] - ap[l-1])}
}// package main// import (
//     "fmt"
// )// func main() {
//     var n, q, l, r int
//     fmt.Scan(&n, &q)
//     a := make([]int, n)
//     ap := make([]int64, n + 1)
//     ap[0] = 0//     for i := 0; i < n; i++ {
//         fmt.Scan(&a[i])
//         ap[i + 1] = ap[i] + int64(a[i])
//     }
//     for j := 0; j < q; j++ {
//         fmt.Scan(&l, &r)
//         fmt.Println(ap[r] - ap[l-1])
//     }
// }

本地goland运行:
在这里插入图片描述

但牛客上运行:
在这里插入图片描述
于是,开始对输入输出好好研究:

package mainimport ("bufio""fmt""os"
)func main() {var (n, q, l, r intin = bufio.NewReader(os.Stdin)out = bufio.NewWriter(os.Stdout))fmt.Fscan(in, &n, &q)a := make([]int, n)ap := make([]int64, n+1)ap[0] = 0for i := 0; i < n; i++ {fmt.Fscan(in, &a[i])ap[i+1] = ap[i] + int64(a[i])}for j := 0; j < q; j++ {fmt.Fscan(in, &l, &r)fmt.Fprintln(out, ap[r] - ap[l - 1])// fmt.Println(ap[r] - ap[l-1])out.Flush()}
}

在这里插入图片描述
那么在此前提下,如果第二行输入不一个个读入,用整行读入呢?
(其实到这,我就有了对自己之前行为的评价:之前代码的各种输入输出用的很混乱,想用哪一套就彻底用哪一套呗,快不快慢不慢的,看着就恶心)

package main// 前缀和很简单,往往输入数据会很变态,所以不能用fmt.Scan()和fmt.Println()
// 有好几种优化的输入输出// 用封装好的bufio.NewReader(os.Stdin)和bufio.NewWriter(os.Stdout)/*
var (n, q, l, r intin         = bufio.NewReader(os.Stdin)out        = bufio.NewWriter(os.Stdout)
)func main() {fmt.Fscan(in, &n, &q)a := make([]int, n)ap := make([]int64, n+1)ap[0] = 0for i := 0; i < n; i++ {fmt.Fscan(in, &a[i])ap[i+1] = ap[i] + int64(a[i])}for j := 0; j < q; j++ {fmt.Fscan(in, &l, &r)fmt.Fprintln(out, ap[r]-ap[l-1])out.Flush()}
}
*/// 用适合于整行读取的组合方法
/*
sc := bufio.NewScanner(os.Stdin)
bs := make([]byte, 20000 * 1024) //设置缓冲区的最大读取
readLine = func() (res string) {sc.Scan() //读一行l := strings.Split(sc.Text(), " ")var res stringfor _, s := range l {res += s}return
}
out = bufio.NewWriter(os.Stdout)scanner.Buffer(bs, len(bs)) //设置缓冲区的最大读取
cur := readLine()
fmt.Fprint(out, cur)
out.Flush()
*/import ("bufio""fmt""os""strconv""strings"
)var (n, p, l, r intsc         = bufio.NewScanner(os.Stdin) //按行扫描器out        = bufio.NewWriter(os.Stdout) //文件输出流(要用fmt.Fprint(out, ...))bs         = make([]byte, 20000*1024)   //设置缓冲区最大读取readLine   = func() (res []int) {       //把读取一行的操作封装成一个匿名函数sc.Scan()                             //扫描器读取一行strs := strings.Split(sc.Text(), " ") //将读取的字符串分割成切片res = make([]int, len(strs))          //这一句不能遗漏,返回值是切片类型,必须要有初始化for i, s := range strs {              //将切片中的每个元素转换为int类型,再存入返回值切片里x, _ := strconv.Atoi(s)res[i] = x}return}
)func main() {sc.Buffer(bs, len(bs))         //设置缓冲区读取最大数量cur1 := readLine()             //读第一行ap := make([]int64, cur1[0]+1) //前缀和数组(切片)cur2 := readLine()             //读第二行for i := range cur2 {ap[i+1] = ap[i] + int64(cur2[i]) //求前缀和}for i := 0; i < cur1[1]-1; i++ { //求要求的区间内的数值和cur := readLine()fmt.Fprintln(out, ap[cur[1]]-ap[cur[0]-1])}//最后一组单独写是为了防止最后多个换行cur := readLine()fmt.Fprint(out, ap[cur[1]]-ap[cur[0]-1])//最后一下给Flush出来out.Flush()
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建型模式--1.单例模式【巴基速递】

1. 巴基的订单 在海贼世界中&#xff0c;巴基速递是巴基依靠手下强大的越狱犯兵力&#xff0c;组建的集团海贼派遣公司&#xff0c;它的主要业务是向世界有需要的地方输送雇佣兵&#xff08;其实是不干好事儿&#xff09;。 自从从特拉法尔加罗和路飞同盟击败了堂吉诃德家族 &…

【ArcGIS学习笔记】ArcMap打开就卡在文档加载界面好久不动,打开很慢,要好长时间

Arcmap之前用得好好&#xff0c;后来打开就卡在文档加载界面&#xff0c;然后界面就关闭了&#xff1f; - 知乎针对这一情况&#xff0c;主要有下面五种解决方法。其中&#xff0c;对于大部分用户而言&#xff0c;前两种方法大概率是可以解决问题的&#xff1b;…https://www.z…

RocketMQ的docker安装和SpringBoot的集成

1.Docker安装 1.1创建docker-compose.yml文件 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports:- 9876:9876networks:rmq:aliases:- rmqnamesrvrmqbroker:image: foxiswho/rocketmq:brokercontainer_name: rmqbrokerports…

C++模板初阶(个人笔记)

模板初阶 1.泛型编程2.函数模板2.1函数模板的实例化2.2模板参数的匹配规则 3.类模板3.1类模板的实例化 1.泛型编程 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 //函数重载 //交换函数的逻辑是一致的&#xff0c…

SpringBoot学习笔记四

SpringBoot学习笔记四-监听机制 1. SpringBoot监听器1.1 无需配置1.1.1 CommandLineRunner使用1.1.2 ApplicationRunner的使用1.1.3 CommandLineRunner与ApplicationRunner的区别 1.2 需要创建META-INF文件&#xff0c;并在其中创建spring.factories&#xff0c;配置相关的信息…

【CSDN创作优化2】内嵌图片 `<img>` 标签`height`和`width`属性

【CSDN创作优化2】内嵌图片 标签height和width属性 写在最前面<img> 标签简介控制图像尺寸&#xff1a;height和width属性实例为什么要指定height和width注意事项 使用百分比进行响应式设计小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字…

【赛题】2024年“认证杯”数模网络挑战赛赛题发布

2024年"认证杯"数学建模网络挑战赛——正式开赛&#xff01;&#xff01;&#xff01; 赛题已发布&#xff0c;后续无偿分享各题的解题思路、参考文献、完整论文可运行代码&#xff0c;帮助大家最快时间&#xff0c;选择最适合是自己的赛题。祝大家都能取得一个好成…

[dvwa] file upload

file upload 0x01 low 直接上传.php 内容写<? eval($_POST[jj]);?> 用antsword连 路径跳两层 0x02 medium 添加了两种验证&#xff0c;格式为图片&#xff0c;大小限制小于1000 上传 POST /learndvwa/vulnerabilities/upload/ HTTP/1.1 Host: dvt.dv Content-Le…

WORD——效率提升10倍的18个神操作

1、万能F4键 在Word中F4 键的功能是重复上一步操作&#xff0c;也就说上一步你做了什么操作&#xff0c;只要按F4键&#xff0c;它就会自动帮你重来一次。比如&#xff0c;合并单元格&#xff0c;你再也不用反复去点合并按钮&#xff0c;只要合并第一个单元格后&#xff0c;剩…

四种算法(麻雀搜索算法SSA、螳螂搜索算法MSA、红尾鹰算法RTH、霸王龙优化算法TROA)求解机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

第06章 网络传输介质

6.1 本章目标 了解双绞线分类和特性了解同轴电缆分类和特性了解光纤分类和特性了解无线传输介质分类和特性 6.2 传输介质分类 现在社会还是以有线介质为主 计算机通信 - 有线通信 - 无线通信有线通信传输介质 - 双绞线 - 同轴电缆 - 光导纤维无线通信 - 卫星 - 微波 - 红外…

【SpringBoot】-- 项目实现微信公众号扫码登录

目录 一、业务需求 二、内网穿透 三、服务器配置 ​编辑 四、依赖引入 pom.xml 五、验证服务器有效性 代码 controller类 SHA1工具类 六、用户订阅后自动回复消息 代码 controller类 MessageUtil工具类 七、用户发送文本消息后回复消息 代码 controller类 八、…

基于SpringBoot+Vue的工厂生产设备维护管理系统(源码+文档+部署+讲解)

一.系统概述 随着社会的发展&#xff0c;系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息&#xff0c;但各种信息鱼龙混杂&#xff0c;信息真假难以辨别。为了方便用户更好的获得工厂生产设备维护信息&#xff0c;因此&#xff0c;设计一种安全高效的工厂生产设备…

示波器接上机器板子信号就正常工作,拿下来就机器不正常工作

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 送给大学毕业后找不到奋斗方向的你&#xff08;每周不定时更新&#xff09; 【牛客网】构建从学习到职业的良性生态圈 中国计算…

Windows系统安装WinSCP结合内网穿透实现公网远程SSH本地服务器

List item 文章目录 1. 简介2. 软件下载安装&#xff1a;3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 ​ Winscp是一个支持SSH(Secure SHell)的可视化SCP(Secure Copy)文件传输软件&#xff0c;它的主要功能是在本…

一文读懂RISC-V与ARM

RISC-V和ARM是近年来备受关注的两种处理器架构。RISC-V是一种基于精简指令集计算(RISC)原理的开源指令集架构(ISA)&#xff0c;而ARM是一种专有ISA&#xff0c;由于其长期存在于嵌入式系统和移动设备中&#xff0c;已成为嵌入式系统和移动设备的主导选择。市场以及多年积累的信…

前端开发攻略---利用Flexbox和Margin实现智能布局:如何巧妙分配剩余空间,让你的网页设计更上一层楼?

1、演示 2、flex布局 Flex布局是一种用于Web开发的弹性盒子布局模型&#xff0c;它可以让容器内的子元素在空间分配、对齐和排列方面具有更大的灵活性。以下是Flex布局的基本用法&#xff1a; 容器属性&#xff1a; display: flex;&#xff1a;将容器指定为Flex布局。flex-dire…

Realme GT Neo6 SE ROOT 解锁BL教程

Realme GTNeo6 SE 解锁ROOT教程 前言&#xff1a; 本文解锁BL教程以及深度测试APP来自Realme官方社区。相关操作流程已进行简化&#xff0c;工具由本人制作并提供&#xff0c;降低上手难度&#xff0c;傻瓜式操作&#xff08;工具长期免费更新&#xff09;。 正文&#xff1a…

Python docx:在Python中创建和操作Word文档

使用docx库&#xff0c;可以执行各种任务 创建新文档&#xff1a;可以使用库从头开始或基于模板生成新的Word文档。这对于自动生成报告、信函和其他类型的文档非常有用。修改现有文档&#xff1a;可以打开现有的Word文档&#xff0c;并使用库修改其内容、格式、样式等。这对于…

2024高交会-2024深圳高新技术展-高新技术成果交易会

2024高交会-2024深圳高新技术展-2024高新技术成果展-中国高校技术交易会-第26届高交会-深圳高交会-深圳高科技展-深圳新科技展-深圳高新技术成果展 第二十六届中国国际高新技术成果交易会&#xff08;简称高交会&#xff09; 时间&#xff1a;2024年11月15日-19日 地址&#…