全文绝大部分转载自:这篇好文章啊

致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 + CCtrl + 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的更多相关文章

  1. 萌新笔记——C++里创建 Trie字典树(中文词典)(三)(联想)

    萌新做词典第三篇,做得不好,还请指正,谢谢大佬! 今天把词典的联想做好了,也是比较low的,还改了之前的查询.遍历等代码.  Orz 一样地先放上运行结果: test1 ID : char : 件 w ...

  2. 萌新笔记——C++里创建 Trie字典树(中文词典)(二)(插入、查找、导入、导出)

    萌新做词典第二篇,做得不好,还请指正,谢谢大佬! 做好了插入与遍历功能之后,我发现最基本的查找功能没有实现,同时还希望能够把内存的数据存入文件保存下来,并可以从文件中导入词典.此外,数据的路径是存在配 ...

  3. 萌新笔记——C++里创建 Trie字典树(中文词典)(一)(插入、遍历)

    萌新做词典第一篇,做得不好,还请指正,谢谢大佬! 写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示 ...

  4. Ingress 记萌新的第一次连多重(xjbl)

    之前为了升七,ArtanisWei学长告诉我可以去紫金园雕塑[这是什么地方啊],顺带靠卖萌骗了一桶key 于是屁颠屁颠的跑去按照群里攻略开始连多重[馒头 by handsomepeach],连了一百年 ...

  5. java萌新尝试搭建WordPress记录

    问题1:安装好PHP环境没找好mysql路径,导致不能调用数据库模块 解决方案:重装一次,参考链接 https://www.cnblogs.com/yangxia-test/p/4174372.htm ...

  6. 萌新关于C#委托一点见解

    开博第一写C#委托(一个简单的委托) 1.关于委托,一直是学习c#的萌新们的噩梦,小生也是.最近在学委托感觉瞬间被虐成狗,但作为C#中极为重要的一个内容,学好了将会及大地减少我们的代码量,而且这也是够 ...

  7. 萌新的IDEA_web开发笔记(未完)

    萌新IDEA_web开发笔记 按兴趣自己搞的网页: http://47.94.140.98:8080/ow_web/my_web/web/ 暂时还没做完. 部署在租的服务器上面,背景视频加载可能有点慢 ...

  8. Unity萌新日记—开发小技巧与冷知识(脚本篇)

    在学习unity的过程中,总会遇到很多零碎的知识点和小技巧,在此把它们记录下来,方便日后查看. 第一篇是关于脚本的一些你可能不知道的小知识. 还是个正在学习的萌新,如果写的不好,请谅解. Unity版 ...

  9. 萌新web前端从零开始(1)——计算机入门

    前言:这是一个萌新从零开始的学习之路,与大家分享自己的看法与见解,还请指出错误与遗漏点方便改正. 1.认识计算机. 计算机语言常见的有C,PHP,Ruby,Java,C#,Basic,JS,C++等, ...

随机推荐

  1. 排序算法:归并排序(Merge Sort)

    归并排序 归并排序采用了分治策略(divide-and-conquer),就是将原问题分解为一些规模较小的相似子问题,然后递归解决这些子问题,最后合并其结果作为原问题的解. 归并排序将排序数组A[1. ...

  2. JDK1.8新特性之(二)--方法引用

    在上一篇文章中我们介绍了JDK1.8的新特性有以下几项. 1.Lambda表达式 2.方法引用 3.函数式接口 4.默认方法 5.Stream 6.Optional类 7.Nashorm javasc ...

  3. 017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例

    017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例 本文知识点:变量 相同类型的变量可以一次同时定义多个 例:可以一行代码同时定义2个变量x ...

  4. Metasploit简单使用——后渗透阶段

    在上文中我们复现了永恒之蓝漏洞,这里我们学习一下利用msf简单的后渗透阶段的知识/ 一.meterperter常用命令 sysinfo #查看目标主机系统信息 run scraper #查看目标主机详 ...

  5. Vuejs上传

    下载 Vuejs上传Vuejs上传 多部分上传Vue组件. 上传器可以选择上传多部分的文件. 这是关于最大的上传尺寸,允许你上传大文件. 如果prop multiple为真,文件列表将在选择文件时呈现 ...

  6. 在 Minecraft 中管理 Kubernetes 集群

    原文链接:在 Minecraft 中管理 Kubernetes 集群 微软 2015 年收购 Minecraft 之后不久开源了一个项目叫 Dockercraft,这个项目当时看起来非常有趣,通过 D ...

  7. 两个多维高斯分布之间的KL散度推导

    在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异.并且损失可以定义得很简单,比如二范数即可.但是对于已知参数的两个确定分布之间的差异,我们就要通过推导 ...

  8. iptables 和firewalld 区别

    在RHEL7里有几种防火墙共存:firewalld.iptables.ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等. fir ...

  9. java安全编码指南之:锁的双重检测

    目录 简介 单例模式的延迟加载 double check模式 静态域的实现 ThreadLocal版本 简介 双重检测锁定模式是一种设计模式,我们通过首次检测锁定条件而不是实际获得锁从而减少获取锁的开 ...

  10. 天啦噜!知道硬盘很慢,但没想到比 CPU L1 Cache 慢 10000000 倍

    前言 大家如果想自己组装电脑的话,肯定需要购买一个 CPU,但是存储器方面的设备,分类比较多,那我们肯定不能只买一种存储器,比如你除了要买内存,还要买硬盘,而针对硬盘我们还可以选择是固态硬盘还是机械硬 ...