致萌新与不会用 NOI Linux 的 OIer
全文绝大部分转载自:这篇好文章啊。
致CSP萌新/不会使用NOI LINUX的人群
1:GUIDE
一句话评价:GUIDE就是个辣鸡
本意是CCF为了刁难照顾Linux小白而安装的图形化IDE,上手比较容易 但是用十五分钟你就会发现这是什么辣鸡
请头铁的同学们考场/试机时自行摸索
良言:能不用GUIDE就不用,自带编译意义不明,调试会导致IDE崩溃
2:Gedit
原文
一句话评价:如同Notepad++般的存在
Ubuntu自带的神奇软件,形似记事本但是比记事本高到哪里去
直接新建一个文件,而后把文件命名为 xxx.cpp 即可
P.S:这里推荐保存在主文件夹(/home/)下,便于编译操作

Gedit是支持语句高亮的,在右下角可以选择语言类型 跟Md异曲同工的高亮

总之,是一个体验良好,很超神的存在
为了尊重作者,以上是原文部分全部保留不动,以下是我的增加部分。
其实 Gedit 是一个很好用的编辑器。(确实比 Windows 下的笔记本好用几百倍)
但是我认为作者并没有做过多的介绍,所以决定自己重申一下。
打开
原文是说直接写 文件名.cpp 但是这样就没有办法进行配置了,所以正解是先保持无名文件,打开后进行配置后再命名。
具体图片就是酱紫:

在“编辑”中找到“首选项”,然后就可以自己乱搞了。


可以调大字体,自定义代码高亮,还可以自动缩进 + 显示行号,反正非常好用就对了。
编译运行
编译方法的话,可以看下面 Vim 的编译方法,用命令行解决就是了。
以上是我的增加部分,下面是原文。
3、Vim
一句话评价:灯光都打起来!最强者出现了!
Vim是(大部分)Ubuntu内置的一个奇妙东西
其实Vim这个东西十分强大,功能比你想象的要多很多,这里只讲最最最基础的操作,如果想要了解详细,可以移步这里
Vim这个东西有点奇妙,因为它是运行在终端里的 因此也显得高大上
3-1:这东西咋开啊
方法1:在Linux左上角“搜索我的计算机里”,搜索“Vim”即可,此时会显示Vim的welcome画面


方法2:使用Ctrl + Alt + T 打开终端,直接输入 vi ./xxx.cpp 使用Vim打开文件,此时Vim显示的是文件内容(如果没有这个文件,Vim会自动新建一个文件,上面的语句中, vi 表示调用vim, ./ 是这个文件的路径(本文中为Home文件夹), xxx.cpp 是文件名


3-2:这东西咋用啊
使用Vim打开了文件,我们发现此时我们无法对文件进行操作
不要慌,Vim默认开启时是“命令”模式,是需要输入指令来操作的
我们按下 i ,切换到插入模式,就可以愉快的写代码了

看,和Gedit一样有语句高光,惊不惊喜
需要注意的是,Vim中的光标只能靠键盘上的上下左右键和Home/End等键移动,不能靠鼠标
写完代码了,我们需要保存一下
那么问题来了,怎么保存呢
首先,我们按下 Esc 键 (敲ESC三个字母的可以关掉blog直接退役了),返回命令模式
然后,我们在命令模式下输入 :wq (均为小写英文字符),就可以保存文件并直接回到终端啦


语句解释: : 的作用是一次输入多条指令,上文中我们未使用":"直接按"i"便是立刻执行命令,这里便会等待你一次输入全部命令回车后依次执行; w 是Vim的保存命令 (不是s吗) ; q 是退出指令
4、编译与运行
代码写完了,接下来我们就是要来运行了
编译运行其实也很简单,本质上跟dev C++是一样的
以上文代码为例,首先按下 Ctrl + Alt + T 召唤出 终端,在终端里敲下
gcc ./xxx.cpp -o ./xxx -g 即可编译完成
如果gcc频繁编译失败,又找不出问题,可以尝试把 gcc 换成 g++

语句解释:"gcc"是调用gcc编译器(类似vi语句), ./xxx.cpp 是上文代码的路径, -o 是向gcc传递编译指令(平时你用的Dev C++里编译也是这一步只是加上了各种后缀,另外注意一定要加上那个"-"号),./xxx 是编译过的可执行程序的输出路径(这个记好一会运行要用,同样建议生成至Home文件夹), -g 是后缀,表示生成调试信息,OI中常用的后缀大概只有 -O2 (吸氧), -Wall (显示警告信息)和 -g 了,如果你不使用GDB调试程序,可以不添加这个后缀
运行更加简单了,在终端里直接输入
./xxx 即可运行程序,前面什么都不用加,然后我们就可以运行程序,程序的输入输出和你平时在Windows下使用cmd运行是一模一样的,当然,也可以重定向到文件

数据:P1908样例
笔者的程序有使用fread的快读,必须使用文件读入所以出锅了
假装有输出
顺便教给大家,图片里的^C就是 Ctrl + C ,意义为强行kill终端当前运行的任务,故在使用终端测试时一定要手打数据或右键粘贴,千万不要Ctrl C 再 Ctrl V 结果练程序怎么死的都不知道,终端跟cmd一样不支持 Ctrl + V 粘贴,想要在终端内进行复制粘贴操作,可以使用 Ctrl + Shift + C , Ctrl + Shift + V 操作
5、调试
太菜了不会GDB
想学GDB可以参考这里
6、CSP竞赛中编写代码的经常性注意事项
由于CSP的评测是在Linux的环境下完成的,因此有一些注意事项需要注意:
1、尽量不要使用 gets() 语句读取一行,因为这些函数使用换行符来判断行结束,Windows下换行是\r\n,而Linux下换行是\n,假设某题的数据是在Windows下生成的,那么这道题的换行符就是\r\n,最终比赛时的代码是在Linux下编译的,读取的换行符是\n,这样就会导致读入错误
kkksc03评论:其实不使用gets()的原因主要还是潜在的溢出风险。
2、评测环境为Linux64位,因此请注意指针变量占用的空间是 8 字节,注意计算内存,避免MLE
3、在使用long long 型int时请记得使用 %lld 而非WIndows下的%I64d
4、忌使用 __ (双下划线)开头的函数如pbds,CSP是禁止此类函数的使用的,使用此类函数可能导致你的代码CE或取消题目成绩
7、总结
总结一下CSP考试中最常用的计算机指令(排名不分先后)
Ctrl + Alt + T //开启终端
Ctrl + C //强行kill当前运行的任务(终端内适用)
vi ./xxx.cpp //使用Vim打开或创建文件(终端内适用)
---^^^^^^^^^
路径
Vim内:
i //写入模式
Esc //返回命令模式
: //依次执行多条命令
w //保存
q //退出
(终端运行Vim时适用)
gcc ./xxx.cpp -o ./xxx //编译程序(终端内适用)
----^^^^^^^^^----^^^^^
输入路径 输出路径
./xxx //运行程序(终端内适用)
^^^^^
程序路径
ex1:如果运行程序时提示权限不足,请尝试在运行语句前加sudo。
ex2:NOI Linux默认用户为noilinux,密码为123456。
ex3:NOI Linux镜像下载地址。
完结撒花。
致萌新与不会用 NOI Linux 的 OIer的更多相关文章
- 萌新笔记——C++里创建 Trie字典树(中文词典)(三)(联想)
萌新做词典第三篇,做得不好,还请指正,谢谢大佬! 今天把词典的联想做好了,也是比较low的,还改了之前的查询.遍历等代码. Orz 一样地先放上运行结果: test1 ID : char : 件 w ...
- 萌新笔记——C++里创建 Trie字典树(中文词典)(二)(插入、查找、导入、导出)
萌新做词典第二篇,做得不好,还请指正,谢谢大佬! 做好了插入与遍历功能之后,我发现最基本的查找功能没有实现,同时还希望能够把内存的数据存入文件保存下来,并可以从文件中导入词典.此外,数据的路径是存在配 ...
- 萌新笔记——C++里创建 Trie字典树(中文词典)(一)(插入、遍历)
萌新做词典第一篇,做得不好,还请指正,谢谢大佬! 写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示 ...
- Ingress 记萌新的第一次连多重(xjbl)
之前为了升七,ArtanisWei学长告诉我可以去紫金园雕塑[这是什么地方啊],顺带靠卖萌骗了一桶key 于是屁颠屁颠的跑去按照群里攻略开始连多重[馒头 by handsomepeach],连了一百年 ...
- java萌新尝试搭建WordPress记录
问题1:安装好PHP环境没找好mysql路径,导致不能调用数据库模块 解决方案:重装一次,参考链接 https://www.cnblogs.com/yangxia-test/p/4174372.htm ...
- 萌新关于C#委托一点见解
开博第一写C#委托(一个简单的委托) 1.关于委托,一直是学习c#的萌新们的噩梦,小生也是.最近在学委托感觉瞬间被虐成狗,但作为C#中极为重要的一个内容,学好了将会及大地减少我们的代码量,而且这也是够 ...
- 萌新的IDEA_web开发笔记(未完)
萌新IDEA_web开发笔记 按兴趣自己搞的网页: http://47.94.140.98:8080/ow_web/my_web/web/ 暂时还没做完. 部署在租的服务器上面,背景视频加载可能有点慢 ...
- Unity萌新日记—开发小技巧与冷知识(脚本篇)
在学习unity的过程中,总会遇到很多零碎的知识点和小技巧,在此把它们记录下来,方便日后查看. 第一篇是关于脚本的一些你可能不知道的小知识. 还是个正在学习的萌新,如果写的不好,请谅解. Unity版 ...
- 萌新web前端从零开始(1)——计算机入门
前言:这是一个萌新从零开始的学习之路,与大家分享自己的看法与见解,还请指出错误与遗漏点方便改正. 1.认识计算机. 计算机语言常见的有C,PHP,Ruby,Java,C#,Basic,JS,C++等, ...
随机推荐
- 制作u盘启动盘
制作u盘启动盘 如果是想要制作 windows 系统启动盘,windows 官网提供途径,这里不在赘述. 以下讨论制作 centos 系统启动盘,需要 centos 系统文件,开源,可从官网下载得到. ...
- 【题解】[CEOI2004]锯木厂选址
Link \(\text{Solution:}\) 注意到题目中的编号是倒着的,于是我们的距离要预处理的是后缀和. 考虑如何\(n^2\)搞: 设\(dp[i]\)表示选择\(i\)为第二个中转点的最 ...
- MeteoInfoLab脚本示例:读取远程文件
利用Unidata netCDF Java库对远程文件的读取能力(OpenDAP, ADDE, THREDDS等),可以读取远程文件并绘图.脚本程序: fn = 'http://monsoondata ...
- day32 Pyhton 异常处理
一.内容回顾 反射的另外两个内置函数 setattr delattr a.b=c 与 setattr(a,'b',c)相对 del a.b 与 delattr(a,'b') 两个内置函数 A,B(A) ...
- C++11随机数库
random随机数库 C++11引入了新的随机数生成机制,那就是<random>随机数库,支持多种伪随机数生成算法,多种连续和离散随机数分布算法,以及封装了真正的随机数生成引擎random ...
- iNeuOS工业互联平台,设备容器(物联网)改版,并且实现设备数据点的实时计算和预警。发布3.2版本
目 录 1. 概述... 2 2. 平台演示... 2 3. 设备容器新版本介绍... 2 4. 全局数据计算及预警平台... 3 5. ...
- 这里有40条提升编程技能小妙招!还有TIOBE 7月份的编程语言排行榜
如何提高编程技能?恐怕很多开发者思考过这个问题.最近,拥有将近 15 年开发经验的软件工程师 Kesk -*- 写了一篇博客,列举了 40 条对其职业生涯有所帮助的事项. 或许,通过以下 40 个 ...
- linux(centos8):prometheus使用mtail监控错误日志
一,mtail的用途? mtail :从应用程序日志中提取指标以导出到时间序列数据库或时间序列计算器 它是一个google开发的日志提取工具,用途就是: 实时读取应用程序的日志. 再通过自己编写的脚本 ...
- Curl可以模拟浏览器
curl直接访问被拒绝 [22:10:00 root@C7 ~]#curl -I www.163.com HTTP/1.1 403 Forbidden Date: Wed, 24 Jun 2020 0 ...
- 前端基础——HTML(一)
HTML html超文本标记语言 前端三层 HTML结构层 css样式层 JavaScript行为层 其他多媒体内容(图片,音频等等) 互联网运行过程 客 --http请求--> 服 户 htt ...