跳转至

笔记

Visualization Ranking

Goal

横向条形图排序赛跑叫Bar chart race

visualization using echart

  1. 完整的中文官方教程和丰富的插件和相关项目
  2. 可以支持vue
  3. 支持动态折线图和动态柱状图

visualization using d3.js

参考项目

但是好像是静态的,而且只有一个排序的柱状图

visualization using anichart

参考文档, 使用template项目

git clone https://github.com/Kirrito-k423/leetcode-ranking-visualization-anichart.git

# Install Dependencies
npm install -g pnpm
pnpm i
pnpm build # error

由于项目还在开发,暂时不进一步尝试

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

Cuda Program Basic

CUDA编程水平高低的不同,会导致几十上百倍的性能差距。但是这篇将聚焦于CUDA的编程语法,编译与运行。

UnimportantView: Film & TV(Anime) Works Rating

如何评价影视剧(动漫作品)

我一向的观点是现实生活已经投入了很多时间体验了,影视剧(动漫作品)肯定要是看现实中没有的。这导致的第一个问题就是既然不存在,你怎么让观众相信呢?

  • 真实的氛围感
  • 真实的细节特效
  • 真实的演员反映和期望中的样子

如何评价对影视剧(动漫作品)角色的喜爱程度

  • 喜欢一个角色往往是没有什么理由的,虽然要追求格物致知。但是将最感性的情感拿来分析是不是有点无情呢?

  • 初印象的美好(40)

  • 外貌美(15):
    • 不一定要完美,但是要有特点,
    • 可以接受有缺陷,但是其一般要具有意义来完善人物塑造。
  • 可爱俏皮(5)
    • 可以拉进距离感
  • 性格好(乐观、勇敢、坚毅、聪明)(10)
    • 角色不可能不经历挫折,乐观还是要一点
    • 但是白给的老好人不行,还是要有基础原则的
    • 可以出发点很低(一开始比较恶劣,自闭),为角色后续成长留下了空间
  • 强烈独特独立的个性魅力、个人行为准则坚定(10)
    • 额外固执但是专情
    • 病娇(特别爱一个人),想守护妹妹的想法
    • 厌世,缺爱
  • 角色剧情行事逐渐展示出来的
  • 真实感(反差,与观众拉近距离) (20)
    • 平时严酷,但也会含羞
    • 总是公正,但也会偏私
  • 悲剧色彩,激发了同情心(共情)(0~30)
    • 努力却依旧失败、正义行事却危机四伏、爱而不得、无所谓付出。一哭 +10
    • 美好的东西被摧毁总是令人扼腕痛心,令人印象深刻。+10
    • 失去美好的未来
    • 刀人:刀友情,刀亲情 +10
  • 共鸣?观众随角色一同成长(40)
    • 如果观众一开始有一样的疑惑,(10)
    • 然后和角色一起寻找答案 (10)
    • 最后坚定的相信自己找到的 (20)

举例

  • 星野爱(113)
  • 外貌(5):不是特别感冒的形象
  • 可爱俏皮(2)
  • 乐观性格(6):演出也有时迷茫,却为了孩子开朗了起来
  • 独特和自我(10): 厌世,缺爱让人同情
  • 真实感(20):以谎言编织的怀孕偶像,是最大的反差
  • 悲剧色彩(30):
    • 想学会爱,但是到死还在努力
    • 失去了与孩子们的未来
    • 刀母爱
  • 共鸣与成长(40)
    • 疑惑: 不会爱的人怎么办
    • 寻找:以谎言代替
    • 结论:谎言也是我努力传达爱意的方式。但唯独我爱你们,这句话……绝对不是谎言
  • 亚斯娜(100)
  • 外貌(15):理想的人妻
  • 可爱俏皮(5)
  • 乐观性格(10):理想的姐姐人妻性格,爱你管你又不太束缚你
  • 独特和自我(10): 为了Kirito 愿意牺牲自己
  • 真实感(20):平时严酷,但也会含羞
  • 悲剧色彩(10):
    • 刀爱情, 差一点失去Kirito
  • 共鸣与成长(30)
    • 疑惑: 在虚拟世界里,存在的意义是什么
    • 寻找:寻找虚拟世界“红莫罗”的东西
    • 结论:这份感情与相遇的经历是真实的(10,结论不够动容)
  • 爱莉希雅Elysia(125)
  • 外貌(15):理想的人妻2
  • 可爱俏皮(10) 与芽衣打情骂俏,甜齁了(摸角)。额外加分+5
  • 乐观性格(10):理想的姐姐人妻性格,
  • 独特和自我(10): 真我 ~ 人之律者
  • 真实感(20):平时严酷,但也会含羞(神之子却爱上了人类)
  • 悲剧色彩(30):
    • 出生无知的律者,努力爱人类,却不被理解
    • 反而为人类牺牲
    • 本世代对抗侵蚀之律者,最终数据还被删除
  • 共鸣与成长(30)
    • 疑惑: 凡事任凭心意而为,自由自在,与副首领的身份格格不入的往事乐土的少女是谁
    • 寻找:寻找前世的真相与少女的秘密
    • 结论:即使往事乐土不存在了,但只要这份记忆还在,你就永远还在。愿时光永驻此刻(10,结论不够动容)
  • 光与焰(120)
  • 外貌(15):两个人各有特点
  • 可爱俏皮(5)
  • 乐观性格(10):理想的姐姐人妻性格,
  • 独特和自我(10): 光傲娇 焰体贴
  • 真实感(25):光性格上与焰完全相反,非常要强,不擅长表达自己的感情,但本性其实很温柔,内心很脆弱。
    • 高质量CG的游戏,真实沉浸感额外加分+5
  • 悲剧色彩(20):
    • 被坏人利用,虽然不愿意,但是伤害了世界,
    • 喜欢lex,最后还是牺牲了自己(lex,你一个人也没关系了吧!)
  • 共鸣与成长(35)
    • 疑惑: 无意间结实的少女
    • 寻找:寻找世界的真相与少女的秘密
    • 结论:即使有前世的经历。但是愿意忘记悲伤的过去。从现在开始彼此守护(15,结论不够动容)
  • 评价模板
  • 外貌(15):理想的人妻
  • 可爱俏皮(5)
  • 乐观性格(10):理想的人妻性格
  • 独特和自我(10):
  • 真实感(20):
  • 悲剧色彩(30):
    • 失去了
  • 共鸣与成长(40)
    • 疑惑:
    • 寻找:
    • 结论:

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

看了星野爱之后,我又emo了

参考文献

Windows CPP Project Setup

摘要

  • 原因1:原本我从来不配置Windows的编译器的,直到服务器zfs挂壁了(看来还是要靠自己~)
  • 原因2:工作时独特的蓝区编码,黄区大项目测试的场景下,push之前测试基本语法错误g++ -fsyntax-only your_file.cpp

GCC编译器

MinGW(推荐)

  • MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。
  • 另有可用于产生32位及64位Windows可执行文件的MinGW-w64项目,是从原本MinGW产生的分支。如今已经独立发展
  • 安装gcc
    • MinGW Installation Manager 中 勾选gcc/g++bash 等项。注意,base包括了关键的make程序。
    • 貌似只能安装在C盘(这很不好
    • 但是如果安装的是便携版的git bash,就没有上述程序。

MSYS2

  • MSYS2是一组工具和库,为您构建、安装和运行本机Windows软件提供了一个易于使用的环境。
  • 包括类似
    • 命令行终端mintty、bash、
    • git和Subversion 版本控制系统、
    • tar和awk 工具,
    • AutoTools 构建系统,
  • Pacman的包管理系统, 来提供包的轻松安装和保持更新的方式,Arch Linux用户应该很熟悉这个系统。
    • 强大的功能: 例如依赖项解析和简单的完整系统升级,以及直接和可重复的包构建
    • 程序包库包含2800多个准备安装的预构建程序包。
  • 所有这些都是基于Cygwin的修改版本。尽管其中一些核心部分是基于Cygwin的,但MSYS2的主要关注点是为本地Windows软件提供一个build环境,并将使用Cygwin的部分保持在最低限度。
  • MSYS2为GCC、Mingw-W64、CPython、CMake、Meson、openssl、FFmpeg、Rust、Ruby等提供了最新的native builds。
Clang and GDB using MSYS2
  • MSYS2 Installation
  • 图形化界面自定义安装路径
  • 打开MSYS2 MSYS安装软件
      # 更新包管理 输入Y继续
      pacman -Syu
      # 安装 UCRT(Universal C Runtime)  版本的 clang gdb
      pacman -S --needed base-devel mingw-w64-ucrt-x86_64-clang mingw-w64-ucrt-x86_64-gdb
    
  • VSCODE 添加到MSYS2 MinGW UCRT 64-bit终端的路径下。 CTRL+O CTRL+X 保存退出
  • bash cd ~ nano .bashrc export PATH=$PATH:/e/commonSoftware/Microsoft\ VS\ Code/bin
  • 终端里code .就能打开
  • 或者系统路径添加E:\commonSoftware\msys32\ucrt64\bin VSCODE 就能正常访问g++

CMake

官网直接下载,但是由于证书的原因,公司内部使用要内网下载。

网络代理

遵循内部云笔记下载:

  1. iDesk搜索VPN
  2. IPOP端口映射转发网络

Terminal

  1. mobaxterm
  2. Xshell

VSCODE

无法识别库

存在红色波浪线, 插件clangd导致的

无法点击头文件跳转

  • 激活跳转
    • 安装C/C++插件
  • 设置includePath
    • Ctrl+Shift+P输入C/C++ 编辑配置
    • 添加E:\\commonSoftware\\msys32\\ucrt64\\include

参考文献

https://solarianprogrammer.com/2021/06/11/install-clang-windows-msys2-mingw-w64/

https://blog.csdn.net/m0_51429482/article/details/125191731

Personal Image Management

导言

作为理工男 + 大直男,几乎没有注意个人形象管理。但是这马上要毕业了,也到了要开始找对象的年龄。

也不期望变帅哥,至少能实现给人的初印象是干净开朗男生的感觉。

为此需要从多个角度,指出现有问题、理性分析原因、量化改进指标、持续跟踪状态。

Gem5

简介

  • GEM5是一款模块化的离散事件驱动全系统模拟器,由C++与python编写
  • 它结合了M5(多处理器模拟器)和GEMS(存储层次模拟器)中最优秀的部分,是一款高度可配置、集成多种ISA和多种CPU模型的体系结构模拟器。
  • M5是由Michigan大学开发的一款开源的多处理机模拟器,受到了业内的广泛关注,很多高水平论文都采用M5作为研究工具。
  • 另一方面,Wisconsin推出的GEMS能够对储存层次进行详细而灵活的模拟,包括对多种不同的cache一致性协议和互联模型的支持。
  • 目前的GEM5是M5和GEMS的一个紧耦合版本。
  • GEM5已经能够支持多种商用ISA,包括X86、ARM、ALPHA、MIPS、Power、SPARC等,并且能够在X86、ARM、ALPHA上加载操作系统。

可选配置(灵活性)

  • 灵活性是指gem5提供了多种CPU模型、系统模型以及存储器模型。
  • CPU模型:Atomic、Timing、In-order、O3(Out of Order)
    • AtomicSimple是最简单规模的模型,一个cycle完成一条指令的执行,memory 模型比较理想化,访存操作为原子性操作。适用于快速功能模拟。
    • TimingSimple模拟器也是无流水线的模拟,但是使用了存储器访问时序模型,用以统计存储器访问延迟。
    • In-Order模型是GEM5模拟的新特性,强调指令时序与仿真精度,流水级为默认五级流水:取值、译码、执行、访存、写回。并且模拟了cache部件、执行部件、分支预测部件等。
    • O3模拟器是流水级模拟,O3模拟器模拟了乱序执行和超标量执行的指令间依赖,以及运行在多CPU上的并发执行的多线程。
    • 默认7级流水:取值、译码、重命名、发射、执行、写回、提交。
    • 模拟了物理寄存器文件、IO、LSQ、ROB功能部件池等。
    • 主要参数为流水管道间延迟、硬件线程数、IQ/LSQ/ROB项数、FU延迟、物理寄存器重命名、分支预测、访存依赖预测等。
  • 系统模型:SE(System-call emulation)、FS(Full System)。
  • 存储模型:Classic、Ruby。
    • M5的Classic mode存储器是最简单的模型,它提供了简洁快速的可配置性。
    • GEMS的Ruby模型注重于精确度并且支持不同的cache一致性协议。
    • Ruby存储模型支持庞大阵列的互联拓扑,包括两个不同的网络模型:Simple网络与Garnet网络。
      • Simple网络对链路、路由延迟与链路带宽进行建模,但并不建模路由资源竞争与流控。
      • Garnet网络详细建模路由微架构,包括所有相关的资源竞争与流控时序。

基本模式

  • System Call Emulation (SE) Mode
  • In this mode, one only needs to specify the binary file to be simulated. This binary file can be statically/dynamically linked.
  • full-system mode
  • This mode simulates a complete system which provides an operating system based simulation environment.
  • very slow, rendering it impractical for deployment in real-world applications.
time ./build/ARM/gem5.fast configs/example/se.py --cmd=/home/shaojiemike/test/llvmVSgem5/MV/MV_gem5 -n 32 --cpu-type=O3CPU --l1d_size=64kB --l1i_size=16kB --caches
  • L1d cache是每个核单独64KB(原因见后图)。但其实默认cache结构是L2共享的

安装

  • 在源目录下运行scons build/<config>/<binary> 建立模拟器。
  • <config> gem5的配置文件,如ARMX86
  • <binary> 模拟器的类型,有如下
    • gem5.debug 有关闭了优化,使gdb一类的工具更易于调试;
    • gem5.opt有打开优化,但保留了调试输出和断言;
    • gem5.fast去除了调试工具;
    • gem5.prof用于与gprof共同使用
scons build/ARM/gem5.fast --debug=presub --verbose -j 32

输入参数

gem5 安装的默认配置

可选选项在./build/ARM/gem5.fast configs/example/se.py -h或者 configs/common/Options.py 中查看

常规的配置:

  • 多级cache
  • CPU
  • 频率,核数
  • 指令发射宽度
    • commitWidth, decodeWidth, dispatchWidth, fetchWidth, issueWidth,
    • renameWidth, squashWidth, wbWidth ,
  • 端口模型的部件类型以及个数
  • 内存

cache設置

  • 只指定大小是沒用的,需要在L1cache 前加上 “--caches”,在l2cache前加上 “--l2cache“。命令結果類似
  • 默认cache是没有开硬件预取HWP的,类型通过--list-hwp-types查看。可以指定L1L2cache的HWP类型,如--l1d-hwp-type=TaggedPrefetcher
build/X86/gem5.opt configs/example/se.py 
  --caches --l1d_size=32kB --l1i_size=32kB 
  --l2cache --l2_size=256kB 
  --l3_size=8192kB  # l3 在 se里是不生效的
  -c tests/test-progs/hello/bin/x86/linux/hello 

# 建议将L3大小并入L2来模拟cycle的下限
build/X86/gem5.opt configs/example/se.py 
  --caches --l1d_size=32kB --l1i_size=32kB 
  --l2cache --l2_size=256kB+8192kB
  -c tests/test-progs/hello/bin/x86/linux/hello

进阶配置:

  1. 多核模拟时,配置独占cache
  2. 增加共享L3
  3. 添加共享的L3cache,并将L2cache改为独立的

输出文件

运行完SE模式,默认会在指令路径下生成m5out文件夹,其中各文件大致含义如下:

  • config.ini或者config.json 运行指令的系统参数
  • Contains a list of every SimObject created for the simulation and the values for its parameters.
  • json格式的文件能比较好的理清config的重要设置
  • [system.cpu] 有CPU的具体设置
  • [system.mem_ctrls.dram] 有DRAM读取数据的具体设置
  • [system.membus] BUS的相关设置
  • stats.txt 模拟结果数据(具体的周期数等)
  • A text representation of all of the gem5 statistics registered for the simulation.
  • system.clk_domain.clock 1000 # Clock period in ticks (Tick)
  • system.cpu_clk_domain.clock 500 # Clock period in ticks (Tick)
  • fs/proc/lscpu 模拟系统配置(类似lscpu)
  • config.dot.* 模拟的系统结构
  • config.dot 是以文字展示
  • config.dot.pdfconfig.dot.svg 都是以图片表示aliyuncs1
  • config.dot.svg 能展示每个部件的细节参数 aliyuncs2

运行

参考博客, 如果se.py無法滿足要求,可以自己編寫脚本

CPU参数解释

各阶段发射宽度

commitWidth, decodeWidth, dispatchWidth, fetchWidth, issueWidth, renameWidth, squashWidth, wbWidth

下面是行数占比最大的几个部分

branchPred

  • BTBEntries

decoder

fuPool

  • fuction pool 类似乱序执行的端口模型,ARM下的O3模拟的fuPool如下 ARM-O3-fuPool

gem5 模拟器误差来源分析

运行真实周期数

  • 使用perf stat test.exe, 可参考本博客perf文章

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

https://blog.csdn.net/ivy_reny/category_6666068.html

https://blog.csdn.net/wyj7260/category_1301132.html

Synology terminal

配置开机启动项

编写脚本/var/services/homes/shaojiemike/wgReboot.sh

#!/bin/bash
ip ro add default via 222.195.90.254 dev eth0 table eth0-table
ip ro a 114.214.233.0/24 via 222.195.90.254 dev eth0  src 222.195.90.2 table main
wg-quick up wg1
ip ro d default via 222.195.90.254 dev eth0  src 222.195.90.2 table main
  • 执行权限chmod +x
  • 群晖WebUI -> 控制面板 -> 任务计划 -> 新增 -> 触发的任务
  • 选择Root、开机事件
  • bash /var/services/homes/shaojiemike/wgReboot.sh

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

Reboot Task

最简单/etc/rc.lo­cal

默认是不开启的,文件/etc/rc.lo­cal默认也不存在

开启/etc/rc.lo­cal功能

  • ubuntu18.04不再使用initd管理系统,改用systemd
  • systemd有rc-local的配置文件,只需链接到/etc/systemd/system目录下启动即可
  • ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

使用/etc/rc.lo­cal功能

touch /etc/rc.local
chmod 755 /etc/rc.local
vim /etc/rc.local
    eg. #!/bin/bash  echo "test rc " > /var/test.log

crontab @reboot

crontab -e
@reboot /home/user/test.sh

initd 启动管理系统

  • init.d目录包含许多系统各种服务的启动和停止脚本。它控制着所有从acpid到x11-common的各种事务。
  • 注意:ubuntu18.04不再使用initd管理系统,改用systemd

编写脚本

  • /etc/init.d目录下建立文件test
  • 按照README编写脚本
  • 赋予执行权限sudo chmod +x /etc/init.d/test

设置脚本启动

方法一:使用update-rc.d 命令将脚本放到启动脚本中去(debian中可以使用更新的insserv):

$ cd /etc/init.d
$ sudo update-rc.d test defaults 95

注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。更多说明建议看man update-rc.d。

方法二:手动在rc*.d中建立软连接

$ ls -s test ../rc5.d/S95test

rc*.d,*代表启动级别,在不同启动级别启动, K开头的脚本文件代表运行级别加载时需要关闭的, S开头的代表相应级别启动时需要执行, 数字代表顺序

卸载启动脚本的方法:

$ cd /etc/init.d
$ sudo update-rc.d -f test remove

手动调用脚本

/etc/init.d/test start
/etc/init.d/test stop
/etc/init.d/test restart

systemd 服务管理系统

使用sudo systemctl enable xxx

systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl --failed #显示启动失败的服务

systemctl 开机启动原理

  • Systemd 默认从目录/etc/systemd/system/读取配置文件。
  • 但是,里面存放的大部分文件都是符号链接,指向目录
  • /usr/lib/systemd/system/,真正的配置文件存放在那个目录。

systemctl enable命令用于在上面两个目录之间,建立符号链接关系。

> $ sudo systemctl enable [email protected]
# 等同于
$ sudo ln -s '/usr/lib/systemd/system/[email protected]' '/etc/systemd/system/multi-user.target.wants/[email protected]'
> 
* 如果配置文件里面设置了开机启动,systemctl enable命令相当于激活开机启动。 * 与之对应的,systemctl disable命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。
> $ sudo systemctl disable [email protected]
> 
* 配置文件的后缀名,就是该 Unit 的种类,比如sshd.socket。 * 如果省略,Systemd 默认后缀名为.service,所以sshd会被理解成sshd.service

把程序设置systemctl服务,并开机启动

进入目录/usr/lib/systemd/system,修改webhook.service

[Unit]
Description=Webhook receiver for GitHub

[Service]
Type=simple
ExecStart=/usr/local/bin/webhook

[Install]
WantedBy=multi-user.target
这里有几个模块: * [Unit] 区块:启动顺序与依赖关系。 * [Service] 区块:启动行为,如何启动,启动类型。 * [Install] 区块,定义如何安装这个配置文件,即怎样做到开机启动。

systemctl start nexus.service  #启动服务
systemctl enable nexus.service #设置开机启动
Loaded: loaded (/etc/systemd/system/webhook.service; enabled;这个enabled就是开机启动的意思

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

https://neucrack.com/p/91

Codeforces & Topcoder

简介

  • codeforces
  • Codeforces 是一家为计算机编程爱好者提供的在线评测系统
  • 该网站由俄罗斯 ITMO 大学(圣彼得堡国家信息技术、机械学与光学研究型大学)的一个团体创立并负责运营。
  • 在编程挑战赛中,选手有 2 个小时的时间去解决 5 道题,通过得分排名,选手可以看到实时的排名(Standing),也可以选择查看好友的排名,还可以看到某题有多少人通过等信息。
  • 在 cf,所有的用户根据在以往比赛中的表现被赋予一个 Rating 并冠以不同的头衔,名字也会以不同的颜色显示,比如 Expert 是蓝色,Master 是黄色。
  • 题目兼容并蓄,什么难度等级的题目都可以找到。
    • 并且题目很有意思,往往思维陷阱比较多,也就是思维题比较多。
    • 对于数据结构以及算法的考察相对弱一些,更多的时候往往是告诉你用什么算法你也不知道怎么做。
  • topcoder
  • TopCoder成立于2001年,它的客户包括Google、MS、YAHOO、Intel、 Motorola和SUN等世界上顶级的IT公司。每年TopCoder都会举办若干个编程竞赛和锦标赛,其总奖金金额高达几十万美元。她是你进入世界顶级的IT企业的捷径,TopCoder排名(程序设计,开发,算法)靠前的选手基本都成了知名公司追逐的对象。
  • 积分:tc的每个用户(handle)都有自己的积分,从0-3000+不等。成绩越好,分数越高 。
  • 积分与颜色的对应为:白色——未参赛(unrated);灰色——0899;绿色——9001199;蓝色——12001499;黄色——15002199;红色——2200+。另外排名最高的几个人在TC客户端中会变成红色靶子图标。现在,全世界有300人达到红色等级,日本有26人。3000 分以上者被称为target,全世界有18人,日本有3人,分别是:iwi(秋叶拓哉)、wata (岩田阳一)和lvrically;

topcoder vs codeforces

Codeforces: Another good platform with nice contests where you will get to learn new things that will improve your understanding of concepts. It's ratings don't matter to recruiters but the things you'll learn will help you during interviews and company's coding tests.

TOPCODER: This caters to every aspect of software develpment. They have both designing and development contest. Major companies provide Topcoder community to experment with their nw products or APIs. But if you want to mention it in your CV, your ratings should be above 1400 to impress a recruiter.

for average is CODEFORCES, for expert TOPCODER

竞赛说明

codeforces

  • 比赛举办频率
  • 第一种是Codeforces Rounds(常规比赛) 大约一周一两次,时长2小时。常规赛分为三个赛区:Div3、Div2和Div1。题目难度Div3 < Div2 < Div1。
  • 第二种是Educational Contests(教育性比赛) 大约每个月二到三次,时长2个小时。常规赛分为两个赛区:Div2和Div1。题目难度Div2 < Div1。
  • 比赛一般是两个小时的赛程,一共六道题目。(20分钟一题)
  • 新手能做出3道,rating就不会跌。
  • div 表示题目难度,数值越小难度越高,
  • div 1 要求参赛者的 Rating 大于 1900 。div2 平均难度在 Rating 1500.
  • Hack:当你通过某题目,可以查看同房间内其他通过该题的参赛者的代码。
  • 由于codeforces在比赛的时候只会测试一小部分数据,真正的测试集会放到赛后进行测试。所以在比赛中测试通过的代码,只是通过了小数据验证,很有可能有隐藏的问题没被发现。
  • 如果发现了bug,可以构造一份数据hack掉他的提交。
  • hack 成功,你获得 100 分奖励,别人的提交会被打回;hack 失败,减 50 分作为惩罚。
  • 一般后面题不会做的时候,又有时间的时候就去Hack

topcoder

  • 安装程序TopCoder Arena(竞技场,古罗马的斗兽场也是这个词),
  • TopCoder Arena是一个纯Java应用程序,它既是Applet也是应用程序,所以需要安装Java运行环境。
  • 相关软件的网址ContestAppletProd.jnlp(Java Web Start 方式安装)
  • 规则
  • 75分钟做完3道难度递增的题。(25 mins per problem)
  • 比赛分为两个division:Div I和Div II。
    • 积分<1200或者unrated(即注册但还没参加过比赛的)参加Div II,>=1200的参加Div I。
    • Div I的题要比Div II难许多。 一般DivII的最后一题和Div I的第一或第二题是一样的。
    • 无论是Div I或Div II。三道题目的Score一般为250, 500和1000左右,视每次的难度略有浮动。
  • 个人积分 (rating)的增减是根据你和别人在比赛中的score以及你们原来的rating决定的。tc 的提交结合了ICPC和IOI的特点,即只能交一次,必须过所有数据并且得分与用时相关。tc每周有一次Single Round Match(SRM),每年两次大的比赛TCOpen(有$)。
    • 评分是根据你完成的时间和所完成问题的难易决定的。
  • 比赛可分为三部分:Coding Phase, Challenge Phase和System Test Phase
    • 发送代码后,你就进入Challenge Phase了,Challenge Phase部分是让参赛者浏览分配在同一房间的其他参赛者的源代码,然后设法找出其中错误,并提出一个测试参数使其不能通过测试。如果某参赛者的程序不能通过别人或系统的测试,则该参赛者在此题目的得分将为0。
    • System Test Phase: 挑战结束后,TopCoder会测试每个参赛者的代码,如果你的代码产生了不正确的输出、异常终止和其它错误,你就不能得分。
  • 如果是多个回合比赛,每个小组中得分最高的三位参赛者将进入下一轮的比赛。他们将解决一些新的问题,最后总得分在前三名的选手将会得到现金奖励。
  • 参赛具体操作, 图文

other platform

codechef

Actual experience

codeforces

  1. 22:35PM - 01:05 AM

topcoder

  1. Contest time infomation is here.
  2. SRM 849 on September 28, 2023 at 11:00 AM - 1:00 PM EST(UTC-4). (00:00 AM - 2:00 AM UTC+8)
  3. hard to read due to the tiny font.
  4. maybe copy the problem to outside

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

https://blog.csdn.net/qiuzhenguang/article/details/5552122

https://zhuanlan.zhihu.com/p/540098105

cmake

导言

ipcc初赛的项目代码有些混乱,只是简单分类。想好好学习一下cmake和make。规范项目结构,优化编译运行流程,提高效率。