2017年西安区域赛

怎么开头呢?
10月20多号的时候,教练通知我们,一定要在赛前训练一场。仔细一想,上次训练在5个月前……整容倒是没有太大变化,周神(通过微软、腾讯、今日头条、京东和拼多多面试)和God王(曾经在阿里实习过),三个人暑假都在外面实习,回到学校之后也没有心情训练。10月25日(周三),我们拉了一场貌似是印度那边的区域赛,打了一下,感觉手感还行。周四就带着学弟学妹们坐火车前往西安,这也是我校继2015年EC-final之后,再一次派出多支队伍去打区域赛。

周五上午抵达西安站,由于一些情况,果断卖掉学弟学妹,我和队友3个人提前打车去了酒店。到达之后,发现他们离酒店还远,就在旁边找了一家饭店吃法。点了几个菜,到现在都觉得手撕羊肉不错,毕竟60多一斤。然后,就是常规的办理入住手续。上半年过来的时候和其他学校一起住在别墅,还能泡温泉,美滋滋。这次人来太多,经费紧张,就只能让我们住在标间。虽然环境还是可以吐槽的,但至少有wifi可以用了……

晚上,一群人又出去吃了一顿火锅,西安的物价真便宜,最后剩下好多蔬菜没有吃……

day1 热身赛

早上起来之后,发现喉咙有点痛,和队友表达了明天可能会失声的担忧,并且表示不想去医院看,看好了多尴尬。10点左右集结队伍徒步前往西北工业大学。

这次比赛的地点和上一次不一样,终于搬到了体育馆。不过确实大,都能放下350+队伍,多年之后会不会有学校租个鸟巢打比赛?领完衣服,拍了照片。我们就高兴的去了食堂吃饭。吃完之后,我和周神一起去校园逛了一下,果真是强校,实在是太大了。

下午3点左右,抵达比赛场地,准备热身赛。老王让我上去打一些头文件,我感觉,如果今天一道题目都不会写,不是就白打了吗?队友想了一下,只能无奈地看着我……

比赛开始之后

我快速地看完A题,说了一下题意,队友就开始写了。在决定猜什么数字的时候,周神强烈要猜2017,我说了一句傻子才会猜2017,然后他们就Yes了,我无法可说……
B题,简单模拟题,周神搞了一下就通过了。

最后就是C题,三个人一起看了好久,没有什么想法。我开始自告奋勇地说要写一个暴力,他们奇迹般的同意了我的方案。于是就获得了上机的机会,写到一半时,后面的队伍就欢呼通过了C题。综合他们一系列的反应来看,绝对是暴力过的,我的心也就放下了。由于好久没有写题目,所以用几分钟调试。通过这题之后发现,排名居然是第三,而且和第一名才差1分钟。毫无疑问,队友对我展开批判,痛失热身赛冠军……

v2-28df8e8bd4ceebc2cc3ac8b461201f54_b

之后的时间就是学习其他人大佬,一顿乱试。时间还有多,队友上机打了一个表,验证一个猜想,就想出了C题的标算。最后,实在没有什么可以干了,决定提前半小时离场吃饭……路上队友怕今天把明天的人品败光,我告诉他,正真的共产主义者是无所畏惧的。这样我们高高兴兴地吃完了晚饭,然后搭车回到了秦龙。

晚上,一个队友在网上认识的河南农业大学大佬请他吃烧烤,我又跟过去混了一顿。和他们聊了一下子,我说了一句,你们一定会成功的。果不其然,青岛赛区他们获得了银奖……

day2 正赛

参加过这么多场比赛,第一次遇到口号是“安全第一”的赛区,周神的祖传行李箱不让带,所以他去寄存。我抱着一大堆书籍和打印的资料走进了体育场,路上还听到有人议论。从赛后来看,这些东西都没有用到……

比赛开始后,一切都比较顺利。老王单人ACB题,周神一秒钟猜出了F的公式,然后我就鼓励他们不用想其他样例就把猜想给交了。85分钟地时候,老王不动声色的AC了G。看完H题意之后,我和周神说这个贪心地取就好了。他想了一下,决定用线段树。然后在他快要写完的时候,我看有那么多人都过了,感觉不是很像,后来出来一问,暴力也能通过……

之后做的是L题,有关lol的题目。前一天翔哥还和我吹周神是财经faker,但我发现他居然不知道banpick,于是乎解释了好久。看完第一个样例的后,我决定自己算一下。这时候,突然弹出一个公告,告诉我们怎么计算样例,就这样完全明白了题意。然后队友就给了一个任务,让我去把第二组样例打出来……500个01组成的字符串,我机智的想到去讨论版提问,能不能发送一份样例过来,毫无疑问的no response……所幸老王想出了4个for循环的暴力,复杂度高达10*1e8,出于对西安赛区判题机的信任,他就开始写了。然后,懒得输入样例,膨胀到在写完之后就交。果不其然wa了,多组输入忘记数组清空,改。又是一发wa,看了一下有操作逻辑写反了,再改,AC。接下来就是自我安慰把这40分钟当成输入样例的时间……

之后我们就陷入长达1个小时的僵局,三个人看着A题感叹世界真是神奇……后来老王不得不放弃这一题,从而转战K题,想了半个多小时,就开始上机码。写完的东西神奇的re了,然后派出换上周神上去改。不知道后来发生了什么,折腾到269分钟AC。之后就是估计排名时间,根据封榜前的排名估计了一下我们大概在32名左右,感觉有点悬……又开始对A题进行一顿乱搞,在最后几分钟里面提交了好多次,但是都没有返回结果……

离场前气球合影,可惜最后一小时过的题目不发气球。
IMG_6227

所以带着最后的悬念来到了颁奖典礼,在等待的过程中,发现学弟遗憾的只是铜首……滚动46名时,发现我们飘到32名。再加上看到下图是,我在学校的群里说了一句最差34名,就这样获得了自己的第一块区域赛金牌,学校acm史上的第二金。

最终排名也是32名,这个世界真是神奇。

IMG_6227

然后又是我上台高高兴兴地领奖。

三人合影留念

搞完这些之后,坐着校车来到了韦曲南站。我带头冲向上半年吃过的烧烤店,后来发现,老王没有一个能吃的,真是尴尬,其他人也没有什么兴致,最后就当我请客了……然后在旁边找了一家宾馆就睡下了……

day3 归来

12点左右,在火车站附近开了一间房,把我们的行李都放下了。然后,在周神的带领下,前往回民街。逛了好久,没有太多意思。19点火车返程杭州。西安区域赛就这样结束了……

最后还要感叹一下,周神和老王还真厉害,带着我都能获金奖,不过说回来还是喜欢去年自己在北京拿的铜。自己的贡献是一场比一场小……如果没有ec-fianl的话,acm生涯到这里就结束了吧,也留下一些遗憾,如果有来生,我也愿意信来生,再见……


Mac软件清单

最近痛下血本买了一台Mac,这里记录一下我装的软件。

君子生非异也,善假于物也。

更新

  1. 2017年9月20日:Anaconda
  2. 2017年9月21日:lantern、Dash、Xcode
  3. 2017年12月10日:虚拟机相关

Clion

  • C++ IDE

Pycharm

  • Python IDE

Alfred 3

  • 替换默认的搜索工具
  • 搭配workflow使用效果更佳

MWeb

  • MacOS 下面最喜欢的Markdown编辑器
  • 常用的高级功能有发布WordPress博客和自动将图片上传到图床

Wiznote

  • 用官方的话来讲Mac功能少是小而美
  • 如果不是会员到2020年结束,我一定会转到Evernote上去

iina

  • 视频播放软件

ShadowsocksX-NG

  • 看名字就知道干什么的
  • 突然发现自己买不起服务器,转向蓝灯

Parallels Desktop

  • 虚拟机软件

Sublime Text 3

  • 性感的编辑器?
  • 处理小文本时使用,写题目还是喜欢vim

iTerm2

  • 用来替换默认的Terminal
  • 推荐主题:solarized-dark
  • 推荐字体:Hack

Homebrew

tmux

  • 增强终端功能
  • 配置文件:.tmux
  • 更新配置文件:tmux source ~/.tmux.conf
  • 常用快捷键
    • prefix s 查看/切换sessoin
    • prefix d 离开session
    • prefix $ 重命名当前session
    • prefix c 新建窗口
    • prefix space 切换到上一个活动的窗口
    • prefix & 关闭一个窗口
    • prefix 窗口号 使用窗口号切换
    • prefix o 切换到下一个窗格
    • prefix q 查看所有窗格的编号
    • prefix “ 垂直拆分出一个新窗格
    • prefix % 水平拆分出一个新窗格
    • prefix z 暂时把一个窗体放到最大

Oh My ZSH!

  • zsh来替换默认的shell
  • 推荐主题:agnoster
  • 最喜欢的是对git的增加以及git相关快捷键的缩写
  • 常用快捷键
    • gaa: git add .
    • gb: git branch
    • gcm: git checkout master
    • gcmsg: git commit -m
    • gst: git status

vim

  • 配置文件:spf3,已经不想折腾这些东西
  • 常用快捷键
    • dd: 删除当前行,并把删除的行存在剪贴板里面
    • *#: 匹配当前光标所在的单词移动到下一个或者上一个匹配的单词
    • %: 匹配括号移动
    • :set number: 显示绝对行号
    • :set relativenumber: 显示相对行号
    • r: 将光标所在的字符替换掉
    • <<: 将当前行向左移动一个偏移宽度
    • >>: 将当前行向右移动一个偏移宽度

Powerline fonts

  • vim中的状态栏以及zsh某些主题正确显示的核心

iStat Menus

  • 系统增强工具
  • 在状态栏显示当前网速、CPU占用以及温度等信息

Jietu

  • 腾讯为数不多的良心之作,截图软件

坚果云

  • 良心同步软件,每个月上传流量不多,但是够用
  • iCloud默认空间实在是太少

Anaconda

  • python 科学计算包?
  • 最主要使用是jupyter notebook
  • 根据之前在公司安装时得到的经验,完成安装之后还需要更新zsh相关的配置,否者在iTerm中依旧无法使用
  • .zshrc 中添加一条记录:export PATH="/Users/xiangrunye/anaconda3/bin:$PATH" 注意这里需要写绝对地址
  • 更新配置文件:source ~/.zshrc

Lantern

  • 捍卫互联网自由?

Dash

  • 快速查阅各种语法的文档
  • 配合Alfred食用更佳,建议将 keyword 改为 ds

Xcode

  • 感觉自己可以转ios开发
  • 下这东西才知道,国内连AppStore网络有多差

Parallels Desktop

Chrome

参考链接


使用 BackWPup 恢复 WordPress

昨天晚上手贱点了升级服务器上的 Ubuntu 版本,然后发现 WordPress 不能用了…删了nginx装上 Apache 才解决,之后发现主题有问题,一激动就提交工单把服务器重装了…

接下来就是 WordPress 重装的过程,自己一直使用BackWPup 每周备份 WordPress ,所以本以为重装会很轻松.

早上起来将 WordPress 以及 BackWPup 装好.然后就在 BackWPup 里面翻了好久都没有发现怎么还原的按钮…又用百度谷歌搜了一下,也没有教程…

没有办法,只好硬着头皮去看插件的官网,找到 How to restore a WordPress backup? – BackWPup Docs,按照这篇文章的提示成功恢复 WordPress.

恢复数据库

由于我用的是phpmyadmin,所以登录到服务器的phpmyadmin管理页面.选择数据库 WordPress,点击导入,上传BackWPup备份压缩文件中的.sql文件,点击执行,这样数据库中的内容就还原了.

-w1277

恢复 WordPress文件

这一步只需要将备份文件里面的文件上传到服务器新的网站目录下覆盖就可以了.由于我用的是iTerm2,所以可以在本地使用scp命令

尾声

zz插件,连个一键还原都没有…


Alfred 使用记录

昨天晚上在看MacTalk时,发现一篇文章神兵利器——Alfred,随后将里面提到的软件下载下来.接触不到一天的时间,就感觉到这个软件的强大.下面就记录一些我用到的功能以及插件.

原生功能

terminal

最近在公司工作,都要求连接到服务器上去写代码,所以对terminal的需求很大.目前自己用的是iTerm2+zsh的组合,还有类似于powerline的状态栏,工作效率杠杠的.Alfred可以使用一个字符触发terminal,默认的是>以及打开Mac自带的终端.

由于>这个字符比较难打,我将Prefix修改为;,而且也将修改terminal为iTerm2(参考这个链接最下面提到的Alfred Support).

网页搜索

给定关键字打开浏览器在特定的网页搜索,例如下图

实现起来也比较简单,在Feature->Web Search中添加类似于下面的即可.

计算器

输入表达式通过Alfred计算

WorkFlows

这个是我觉得Alfred最强大功能,毕竟编程改变一切,下面推荐几个插件.

Markdown img

这个插件的功能是直接将系统的剪贴板里面的图片上传到七牛图床,并把图片链接复制到当前的编辑器和剪贴板.这篇文章的截图就是通过这个插件完成的,终于不用像之前一样苦逼的一张张上传图片.下载地址

Workflow Searcher

通过Alfred来搜索workflow并且跳转到下载页面

v2ex

快速浏览v2ex的帖子.

Douban

查看豆瓣的电影,音乐,图书等信息

Wunderlist

可以连接奇妙清单,正好符合我这种轻量级用户.

有道翻译加强版

满足查字典的需求,虽然mac原生的也很强大,但这个能翻译啊

百度搜索

虽然国内口碑不好,但我还是觉得百度更懂中国人…

最后吐槽几句,垃圾为知笔记,mac版就没有多少功能,发个博客都没有,可惜我剩下三年的vip,这篇文章还是靠 Mweb 发布的.


计算机基础:计算机网络

  1. 电路交换与分组交换的区别? 优劣对比。

  2. OSI有哪几层,知道主要几层的各自作用。

    1. 物理层:定义通信与传输借口硬件的机械、电气、功能和过程特性,实现比特流的透明传输。
    2. 数据链路层:无差别传送以帧为单位的数据。
    3. 网络层:选择合适的路由和交换结点,分组或者包。
    4. 运输层:端到端、或者进程到进程的无差别传送。
    5. 会话层:对数据传输的同步进行管理
    6. 表示层:信息加密和解密,正文压缩和还原
    7. 应用层:
  3. TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称。

    1. 网络接口层:x.25
    2. 网际层:IP
    3. 运输层:TCP和UDP
    4. 应用层:HTTP、FTP等
  4. 硬件(MAC)地址的概念及作用。

    1. 媒体访问控制子层:前6位16进制IETF分配。
    2. 区分不同的硬件
  5. ARP协议的用途 及算法、在哪一层上会使用 ARP ?

    1. 地址解析协议:IP地址到MAC地址的映射
    2. 网络层
  6. 知道各个层使用的是哪个数据交换设备。(交换机、路由器、网关)

    1. 物理层:中继器、集线器
    2. 数据链路层:网桥或者交换机
    3. 网络层中继系统:路由器
    4. 网络层以上:网关
  7. IP报文的格式,格式的各个字段的含义要理解。

  8. MTU的概念,啥叫路径MTU? MTU发现机制,TraceRoute(了解)。

  9. RIP协议的概念 及算法。

  10. ICMP协议的主要功能。

    1. 网际控制报文协议,提高IP数据报成功交付的机会,报告差错和异常情况。
  11. 组播和多播的概念,IGMP的用途。

  12. Ping协议的实现原理,ping 命令格式。

    1. 应用层,使用网络层的ICMP协议
  13. 子网划分的概念,子网掩码。

    1. A类子网掩码:255.0.0.0,划分:8位+子网X位+主机24-X位
  14. IP地址的分类,如何划分的,及会计算各类地址支持的主机数。

  15. DNS的概念,用途,DNS查询的实现算法。

  16. TCP与UDP的概念,相互的区别及优劣。

    • TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。
    • TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
    • TCP提供可靠的服务(数据传输),UDP无法保证
    • TCP面向字节流,UDP面向报文
    • TCP数据传输慢,UDP数据传输快
  17. UDP报文的格式,字段的意义。

  18. TCP 报文的格式,字段的意义。

  19. TCP通过哪些措施,保证传输可靠?

  20. 三次握手,四次断开过程。

    1. 客户端向服务器发送一个SYN j
    2. 服务器向客户端响应一个SYN k,并对SYN j进行确认 ACK j+1
    3. 客户端向服务器发送一个ACK k+1
    4. 一端发送一个FIN
    5. 另一端接收到这个FIN分节后,执行被动关闭,对这个FIN进行确认,继续传输数据。
    6. 发送数据之后,发送一个FIN
    7. 接受到FIN,结束传输。
  21. TIME_WAIT状态的概念及意义。

  22. 滑动窗口协议 与 停止等待协议的区别。

  23. TCP的流量控制和拥塞控制实现原理(会画拥塞控制的典型图)。

  24. TCP的快速重传与快速恢复算法。

  25. TFTP 与 FTP的区别。

  26. 阻塞方式和非阻塞方式,阻塞connect与非阻塞connect。(比较难,有兴趣可以了解)

  27. HTTP基本格式。(java程序员必须掌握)


浙江省第十四届程序设计竞赛总结

昨天是我第三次参加浙江省赛,比赛地点依旧设置在浙大。上午和其他人一起坐车过去,然后就是都差不多的流程。

由于一些原因,这一次我的两个队友异乎寻常的厉害(高质量就业:阿里研发工程师+京东算法工程师的组合)。赛前内心毫无波澜,不过周神教导我,作为浙财的五队,我们只要保个铜就可以了。

上午9点25左右,热身赛开始。打开试题册看了一下,我们发现热身赛题目跟去年一样,快速通过A和C题。周神机智的想起去年最后一题(输入一个数对一个非常的大梅森数取模,并判断结果的奇偶性)大数据只有四组,通过一番测试之后,今年也是一样。他写了一个程序直接判小的数据,开始枚举最后四组答案的排列组合。我们大概交了10次左右,就发现枚举的地方出现错误,然后改了一下又重新交,最后枚举到13(1101)的时候过了。本着写完热身赛去吃饭的原则,God王让我们开始写B题。不过仔细想了一下发现,万一写完发现是错的,是去吃饭还是不去吃饭,这是个很大的问题。所以,我们直接前往食堂。

12点15分左右,比赛正式开始。我自告奋勇的从A题开始看,本着看样例猜题意的指导思想,我大胆猜想出写法,趁他们两个不注意直接拿起键盘开始写。由于年纪大了,速度更比不上那些年轻人,所以也写了一会儿,交完之后大概有70只队伍通过。之后God王上来平推了B和D。我看一下C题,发现这是个简单题,把题意告诉老王之后,他也很快做了出来。至此,比赛大概过去45分钟。我们写完全部的签到题,完成保的铜的目标。

三个人继续分头看题目,没过多久他们两个人又开始讨论F题的写,很快也想出一个非常巧妙的方法,不过后来发现这个是超时的,所幸God王又想出了线段树的写法。我和周神开始研究E题的写法,很快也验证了用数位DP的正确性,不过也想到这其中有很多细节要考虑。说到这里,不得不讲一下,我昨天晚上就打印了两页模版,其中一个就是数位DP的模版。God王改完F之后,勇敢提交,直接返回了WA。然后我们三个看了好久代码,都没有找出错误来。God王直接出去逛了一下,我和周神开始写E题。God王发现周神读题目没有讲要输出子树的数量,改之就过了。之后,三个人共同推了E。接下来的时间差不多就是在挣扎了,H题God王写来写去都是超时的,G题周神说要找规律,打印了14页数据开始找没多久,就告诉我想的全部是错的。17点14分59秒,God王最后交了一份H题代码,没有什么奇迹,我们结束了这一次省赛。

晚上,在小剧场举行颁奖,这一个环节最主要的就是听听队名。当本科组银奖没有报到我们的时候,我的内心十分的开心。听到第一批金牌也没有报到我们的时候,周神对我讲了一句,是不是下面没有我们,今天就是冠军。事实证明这是幻想,然后他就高高兴兴的上台领奖了,毕竟昨天晚上特意做了一个发型……

总的来说,这次省赛比浙大校赛难了很多,所以写完签到题不要错太多的都可以拿铜。中间过度居然拿了一道数位DP和一道线段树,命题人直接高估了浙江省程序设计的教育水平。最后面的几题,我们三个人共享完题意之后,完全没有思路,其他参赛选手也差不多,完全沦为观赏题。后来想一想,这一份题目只是在错误的时间出现,毕竟比赛的覆盖面是final到专科。但是,我感觉这样的比赛,一个人五小时也能做5题,生不逢时,为什么去年没有这么好的命啊。不过还是要感谢两位大佬带我体验了一下省赛获金的感觉。这一次,同场的还有学军和杭二的高中生,颁奖时,有以为领导还感叹大学生不如高中生。殊不知对于这些高中生来说考上浙江大学都是失败。

不知道明年还有没有机会参加。


C#聊天软件实现

前几天面试,被问如何实现一个类似微信的聊天软件。当时说了一个大概的想法,面试官没有怎么评价,只是最后建议我有空多做一些项目。正好最近不怎么忙,就实现一下。写了一个简易的模型,在这个过程中应用了很多原来学过的东西,当然还有很多问题没有解决。

  1. 这个软件选择C/S架构,所以写了一个服务器端程序和一个客户端程序,然后通信使用的是TCP协议。

  2. 利用socket完成通信,大致的过程如下图所示。


3. 服务器上开两个线程threadListenConnectthreadReceivePacket。服务器上的socket利用bind绑定服务器的ip和端口号。第一个线程死循环监听端口,是否有新的connect请求,并将新的连接socket保存到list中。再利用第二个线程接受客户端发来的数据包,并拆包执行进行相关功能。服务器之后,按照包中的内容判断是否需要发送到其他特定的客户端还是广播消息。

  1. 客户端中开一个线程threadReceivePacket。先和服务器连接,然后利用这个线程接受服务器发过来的数据包。这里也实现了发送给某个特定的客户端和广播。发包和拆包过程和服务器上差不多。

  2. 数据包主要包括发送方ip、端口和接收方ip、端口,以及操作代码。不同的数据段用‘|’分割,接收方也按这样拆包就可以了。

  3. TCP是面向连接的协议,拥有缓存窗口,所以可能会有粘包现象,可能将程序一次产生的命令,分成多次发送。所以数据包里面还要标记一下,我用了’\a’做新的包开始标记,用’\t’做结束标记,如果聊天内容里面有相同的标记的,可以强行转化一下。

  4. 这个程序还可以加上数据库搞出注册以及保存聊天消息,然后自己也没有去写消息的排序以及私聊功能,待做。

  5. 最后相关代码放在github上面

服务器端:

客户端1:

客户端2:


为博客添加返回顶部按钮

适用于WordPress

由于主题没有自带的返回顶部按钮,所以我一直在寻找一种解决方案。之前使用的是wordpress插件提供的返回顶部按钮,后来在网上乱逛,发现有Xnces – 衔铁部落的返回顶部按钮非常的酷炫,正是我要寻找的。于是,我在那个博客下留言询问制作方法。
前几天,看到那个博客上出现了一篇文章-本博客的返回顶部效果
按照上面的方法,折腾一会儿,我也制作出来了,特地记录一下。

  1. 首先,先加载一下环境。在后台functions.php中找到ms_scripts()函数,添加wp_enqueue_script( 'jquery' );调用wordpress默认的JQuery文件。

  2. 我将这个效果有关的js代码放在了主题目录下新建的themes.js文件中。所以在上面的函数中添加下面两句话导入这个文件wp_register_script( 'themes_js', THEMEPATH . '/themes.js',array());wp_enqueue_script( 'themes_js' );

  3. CSS代码我直接加在了主题style.css中。

  4. 重新打开网站就能看到效果了。

themes.js文件中代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
var bigfa_scroll = {
drawCircle: function(id, percentage, color) {
var width = jQuery(id).width();
var height = jQuery(id).height();
var radius = parseInt(width / 2.20);
var position = width;
var positionBy2 = position / 2;
var bg = jQuery(id)[0];
id = id.split("#");
var ctx = bg.getContext("2d");
var imd = null;
var circ = Math.PI * 2;
var quart = Math.PI / 2;
ctx.clearRect(0, 0, width, height);
ctx.beginPath();
ctx.strokeStyle = color;
ctx.lineCap = "square";
ctx.closePath();
ctx.fill();
ctx.lineWidth = 3;
imd = ctx.getImageData(0, 0, position, position);
var draw = function(current, ctxPass) {
ctxPass.putImageData(imd, 0, 0);
ctxPass.beginPath();
ctxPass.arc(positionBy2, positionBy2, radius, -(quart), ((circ) * current) - quart, false);
ctxPass.stroke();
}
draw(percentage / 100, ctx);
},
backToTop: function($this) {
$this.click(function() {
jQuery("body,html").animate({
scrollTop: 0
},
800);
return false;
});
},
scrollHook: function($this, color) {
color = color ? color: "#000000";
$this.scroll(function() {
var docHeight = (jQuery(document).height() - jQuery(window).height()),
$windowObj = $this,
$per = jQuery(".per"),
percentage = 0;
defaultScroll = $windowObj.scrollTop();
percentage = parseInt((defaultScroll / docHeight) * 100);
var backToTop = jQuery("#backtoTop");
if (backToTop.length > 0) {
if ($windowObj.scrollTop() > 200) {
backToTop.addClass("button--show");
} else {
backToTop.removeClass("button--show");
}
$per.attr("data-percent", percentage);
bigfa_scroll.drawCircle("#backtoTopCanvas", percentage, color);
}

});
}
}

jQuery(document).ready(function() {
jQuery("body").append('<div id="backtoTop" data-action="gototop"><canvas id="backtoTopCanvas" width="48" height="48"></canvas><div class="per"></div></div>');
var T = bigfa_scroll;
T.backToTop(jQuery("#backtoTop"));
T.scrollHook(jQuery(window), "#555555");
});

CSS文件要添加的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#backtoTop{
background-color:#eee;
border-radius:100%;
bottom:10%;height:48px;
position:fixed;
right:-100px;
width:48px;
transition:0.5s;
-webkit-transition:0.5s
}

#backtoTop.button--show{
right:10px
}

.per{
font-size:16px;
height:48px;
line-height:48px;
position:absolute;
text-align:center;
top:0;
width:48px;
color:#555;
cursor:pointer
}
.per:before{
content:attr(data-percent)
}
.per:hover:before{
content:"↑";font-size:20px
}

2016年北京区域赛

今年,一队发挥出色,拿到全部赛区的名额,而且大三也没有多少队伍。所以我们这种弱队还有机会去参加第二场比赛。

作为第三次去北大,流程都是非常熟悉的。周四下午坐Z10出发,第二天上午到达北京。周五下午我一个人去了前两次来北京都没有机会参观的故宫。

故宫之旅并不是很好,主要是游客太多,紫禁城失去了往日的威严。不过,另外加收门票的钟表馆很棒,皇室的藏品居然如此花哨。有些钟表的滴答声一百多年之后依旧飘荡在场馆之内。出了故宫之后,走了半个小时才找到一个地铁站,这个设计非常的愚蠢吧,之后就动身前往北大。

周六下午热身赛,我们出来的比较早,在体育馆的看台上做了一会儿,看着下面排列整齐的两百多台电脑,心中生出一丝感动。之后就是进入场馆搞事情,电脑是五位数的戴尔移动工作站,外接了鼠标、键盘、和显示器。和我自己在寝室里面干的差不多。海巨表示显示器大看着爽,不过也发现键盘上有日文符号,这就比较影响我的发挥了。然后是例行看一下 周围的队伍,前面是北师、后面是北航、右上方有杭电一队,感觉压力又好大,虽然他们根本不会在乎我们。

比赛开始之前,队友想起在大连时,我讲了一句热身赛只要看一下AC是什么颜色就好了,最后被我成功奶死,全部是WA,所以告诫我不要乱说话。拿到题目之后,我们看了一下,发现题目是前几年北大出的区域赛和网络赛的。其中B题还是我们前几周训练过的题目,我拿起键盘表示这次终于有机会拿个一血了,马上写了起来,队友还是表示不相信。当我写完提交后,邪恶战胜了正义,果真发挥了一个WA,此时其他有一个队伍拿到这题的一血,彻底骨折。所幸改了一下还是过了,之后C题也是原来写过的,上去写了一下就过了。之后就讨论了一会儿A题,不过没有得出什么答案,感觉暴力上去肯定会超时,D题也不会写,最后上去让海巨测了一下机器和各种返回就去吃饭了。晚上回去才发现A题比我们想的还要暴力,没有勇气啊。

由于我们知道不会来北大吃太多餐,所以晚饭比较丰盛。一遍吃一遍感叹北大的伙食真好,早知道原来好好读书了。回到宾馆后,海巨在找题目写,翔哥想着阴阳师靠他的符偷渡欧洲,我看着炉石直播学习技术。又是一天。

周日,因为经费紧张,住的宾馆离北大比较远,我们三个7点就出发了,8点半左右到达北大赛场,然后等待比赛的开始。

9点比赛正式开始,开场顺利的写完了两道签到题,然后我们看了一下一道搜索题,我感觉可以写了,另外两个人去看了一下I题。我写差不多后,海巨上来写了I,也很快的写完并提交了,不过返回了WA。换我上去继续写搜索题,很快我写的超时了,只好改的优雅一点,翔哥也指出海巨理解错了题目,他们两想了一下决定帮我一起改搜索题,小改了一些东西之后,又提交了两次,返回两个WA。当时我们很紧张了,不过没有办法,海巨在看代码,我在写最暴力的准备对拍,翔哥在那里构造数据。最后,翔哥构造出了一组强力的数据,成功把我的代码hack了,我发现改掉一点就会对,不过没有想明白怎么回事,就改了一下记录答案的方式,最后自信的提交返回AC。然后我们将目光聚集到了K题,这个破题,题目就看了好久才明白,不过数据范围居然有10的100次方,我们搞了好久才都没有想出来,我感叹了已经上次在大连也是死在这种恶心的题目上,还是要想,我们写了一个10的9次以内的暴力程序打表,神奇的发现最大符合要求的个数只有样例给的83个,然后他们开始推规律,我在那里划水。想着写不出来,只要让海巨上去写一个只要83个答案表的程序,赌一发梦想。虽然感觉北大不会蠢到把最后一个答案告诉你,海巨还是写了,不过交上去还是WA。之后就陷入了江局,封榜后一会儿,我算了一下发现15位数随便填的情况下1就有10的16次左右个了,果断抢来电脑,不知道是什么力量让我点开海巨WA的代码,我看了一下差点吐血,找一个最大不超过n的值被写成立找一个最小超过n的值,我问了一下海巨,他还不知道,我直接改了一下就交上去,再赌一个梦想,然后就AC。我们马上点开排名,不过只能现实封板前的排名103,这题交了应该会前进一些,但是北大只有93个奖牌。海巨表示把I题写了才能稳,我看了一下I题,果断表明我不会数学题,只能靠你们了。然后实力分析一波之后,感觉要ntt操作,找了一下发现没有带这个模版,只好告诉海巨要么你想个其他的方法,要么自己创造一个ntt算法。我也没有找到其他组说的图论题是哪一个,只好提前选择死亡,吃起了发的午餐,果真像赛前说的一样吃东西就等于放弃了,最后还有10分钟结束的时候,我们三个人都愉快的吃起了午餐,把自己的命运交给其他小笨蛋来掌握。边吃边感叹这是第一次在正赛封榜后过题以及终于不是什么题数靠前的队伍了。

比赛结束之后,不知道结果怎么样,我们只好在那里等待,这要是在之前可以直接会师火车站了。北大搞了一堆事情,才开始滚榜,判完我们题目的时候好像跳到了81名去了,他们两个开始统计超过我们的人,又过了一会儿,发现最后名次固定在了85名,然后三个人都好高兴。滚完铜牌区之后,开始颁奖,我也有幸登上北大的领奖台。之后,那些也和我们没有什么关系了,反正两年多的努力有了回报就可以。

从北大出来,直奔麦当劳买了一下晚餐就去火车站了。我特地点了一杯拿铁,稳如拿铁。还是要相信科学。


为知笔记写博客测试

适用于WordPress

如果你可以看到这一篇文件,就表示我测试成功了!

tips:

  • 为知笔记中的标签自动变成博客文章的标签
  • 选择发布时,会自动检测是新发布文章还是修改文章
  • 自带markdown优化,轻松解决wordpress没有什么好用markdown编辑器的问题

参考连接:发布笔记到博客,更好的博客离线撰写工具