连通块问题
DFS, BFS
以前没怎么注意过 C++ 的输入输出以及四舍五入这种细枝末节的问题,但是做些竞赛题发现这些边角料用到的地方还很多.
这里记下 C++ 中实现四舍五入的库函数,自己实现小数点后任意位的四舍五入,以及通过控制输出来进行四舍五入.
double round(double x) 四舍五入到相邻整数double floor(double x) 向下取整double ceil(double x) 向上取整double trunc(double x) 向 0 取整详细介绍见 CPP reference.
1 | double round(double num, int fig) |
C++ iomanip 头文件中包含对输入输出进行控制的相关工具.
以下操作符的作用均是持续的.
如果只是在输出时要求保留几位有效数字,使用 std::setpecision 是最方便的.
此操作符控制浮点数输出时显示的数字个数,会进行四舍五入.
该操作符影响之后的所有输出,直到再次使用 std::setpecision 为止.
当末尾最后几位为 0 时,0 是无法输出的.需要使用 std::showpoint.
如果是要保留小数点后多少位有效数字,可使用 ios::fixed 将小数点固定,该操作符更改浮点数的输入/输出的默认格式.
使用std::fixed 将小数点固定后,对此输出流对象 setpecision 的含义变为小数点后保留多少为有效数字,最后一次设置有效.
通常这些操作符的使用方法是作为流运算符的右参数,此时使用 std 命名空间中的函数
等效的简单方法是使用流对象的 setf 方法设置,此时操作符使用 ios 中的 flag.
1 | /** 输出 PI, 保留五位有效数字,四舍五入*/ |
从 github 上 clone repository 时速度过慢,甚至达到 2.00 KiB/s 夸张的速度,解决方式是科学上网,似乎开启 shadowsocks 后在系统设置全局代理并不起作用,如果要 git 走代理需要在 git config 中设置才可以.
设置科学上网当然要开启 shadowsocks, 设置本机地址 127.0.0.1, 本机端口 1080.
git 设置代理可以设置全局代理即所有 host 都走代理,也可以针对单独一个 host 设置代理即只 clone 此 host 上的 repository 时才走代理.由于本人的 VPS 在美国,所以只对 github 设置代理.
shadowsocks 暴露的协议为 socks5,所以设置时的代理前缀为 socks5.
1 | # 设置 http, https 的代理 |
git clone 自己一个 repository 时速度不仅奇慢而且到中间常出现如下错误.
1 | error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function. |
经过搜索发现是 curl 下载时的 buffer 过小导致的,这个 repository 确实有比较大的文件.所以更改下 postbuffer 的大小.
1 | git config --global http.postbuffer 24288000 |
以上是针对 git 的第一条错误提示搜索的解决办法,同样的仅针对 early eof 错误而言,也有解决办法.
从 remote host 上下载 repository 时服务器端会默认先压缩目标文件再进行传输,客户端再解压.压缩指数范围为 [-1, 9], -1 以 zlib 为默认压缩库, 0 不压缩, 1 … 9 为压缩速度与最终文件大小的权衡,数字越大,压缩越慢,但最终获得的目标文件也就越小.
stackoverflow上有人测试发现关掉压缩功能或者设置为 -1 能够避免出现 early eof.
1 | # 关闭压缩功能 |
bandwagon 官方提供更换 IP 的服务, 以前收费是 8 美元(折合人民币 50 元左右),不知从什么时候降价到了 2.82 美元(折合人民币 18 元左右),但其实在自己购买的 VPS 的 KiwVM control panel 里就可以更换 ip, 如果只是需要更换 ip 的话(比如自己搭的的梯子被禁这种事情),可以通过这种方式免费更换ip.
首先进入 VPS 的 control panel 里,停止 VPS 的运行.

然后选择左侧 Migrate to another DC.

在以下列表中选择除后面为 current 以外的地区,如果只是切换 Los Angeles 的不同机房,速度上的差异应该不大,切换到其他地方速度不能保证.

然后点击 confirm on next step, 切换到新机房用时几分钟到几小时不等,与 VPS 上用户的数据量有关,提示说会把全部的数据拷贝过去,切换过去后需要手动开启 VPS 和 shadowsocksR server 服务.
竞争型神经网络
径向基网络