codecraft2020总结
题目是:
给出200w行表示为资金流水的转账记录文件,求出其中存在循环转账路径长度为3-8且转账金额比例在1:5到3:1之间的记录,并有序输出。
解决方案大体流程:
读文件,构造图,dfs找环
读文件/输出文件:采用mmap
构造图:采用全局变量的二维数组,同时利用robin-map对输入结点加以映射
dfs:首先反向dfs三步,再正向dfs五步,如果条件符合则说明找到环
多线程:采用信号量加锁的线程抢占处理,每个线程处理某一个结点为起点的所有环
调优:
1.采用perf record和pref report工具查看程序耗时的语句,并优化
2.采用内建宏unlikely、likely优化分支预测,提高指令命中率
3.拆分循环,拆分递归函数,尽量减少条件语句判断,增加CPU利用率
4.采用线程抢占而非固定多线程,减少上下文切换
5.先hash映射再二维数组存储整张图,减少缺页中断带来的时间消耗
6.采用robin-map代替std::unordered_map加速映射
7.采用字节对齐编译原句,使结点结构内存对齐
robin-map在发生冲突的时候,移动的是距离应该在初始位置的更近的那个
codecraft2020总结相关推荐
- 2020华为软件精英挑战赛历程总结——复赛篇
前言 最近在打腾讯广告算法大赛,所以一直在鸽0 0,再加上复赛印象不怎么深刻,所以就随便扯啦. 开源地址:https://github.com/Chadriy/CodeCraft2020 放题 一.规 ...
- 2020华为软件精英挑战赛历程总结——决赛篇
前言 决赛的过程颇为坎坷,深深的感受到了自身能力的不足,团队的力量有时要远胜个人. 开源地址:https://github.com/Chadriy/CodeCraft2020 放题 复赛结束,还没来得 ...
- 2020华为软件精英挑战赛历程总结
前言 历时两个月,终于结束了今年的华为软挑,这感觉就很爆肝.非常感谢队友们的强力输出.还有遇到的的大佬.成研所的小姐姐们,虽然成绩不佳,但还是分享一下我们每个阶段的成长. 首先简单自我介绍一下,我是I ...
- 计算机专业有哪些值得推荐的竞赛?
如何在大学的时候,丰富自己的业余生活? 如何让自己的计算机知识以及技术越来越突出? 如何让自己的简历看起来更加丰富? 我想,有一条途径能帮助到你. 那就是参加比赛. 参加比赛不仅能锻炼你的专业能力,还 ...
- 哪些值得推荐的计算机专业竞赛?
CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:大学生竞赛指南 话题描述: ...
- 2020华为软件精英挑战赛历程总结——初赛篇
前言 去年懵懵懂懂,一个人从头自闭到尾,到最后也没对上判题器,复赛第十遗憾离场.今年的开端也是十分不顺,我们提交的第一发线上14s,这时候前排已经有0.x的成绩了,一度陷入深深的自我怀疑之中.好在队友 ...
最新文章
- 把本地mysql备份到服务器innodb_使用mysql备份工具innobackupex将本地数据 直接恢复 到远端服务器数据目录操作实例...
- 电脑断网也难逃黑客攻破!风扇在转,手机放桌上,数据就被隔空窃取了
- 计算机考试一级考试基础知识,2016计算机一级考试msoffice基础知识
- 博客会被搬去csdn
- 华为电脑c语言总是错误,关于华为机试题求代码!解决方法
- mac mysql 重设密码_Mac下忘记mysql密码重新设置密码的图文教程
- Opencv级联分类器实现人脸识别
- 使用python将COCO格式的json文件转化为VOC格式的xml文件
- 昌吉学院2017年计算机招生,昌吉学院
- 解决datalist中单选按钮可以多选的问题(Asp.Net)
- VOJ1067 【矩阵经典7 构造矩阵】
- Python炸弹人小游戏源代码
- 实际利率 名义利率
- 操作系统实验三虚拟存储器管理之模拟页面置换算法(FIFOLRU)
- 七年级上册教材同步英语笔记
- 上海在职研究生计算机专业考什么,中国人民大学计算机专业在职研究生考试考什么?...
- 《软件测试常见面试题十二》
- 【windows】SCCM部署系统时遇到的错误
- js原型链(详细图解)
- js点击按钮向左侧滑动效果
热门文章
- 准备在App Store上发布您的应用程序
- 利用PLINK进行GWAS分析
- 1. 使用SimpleDateFormat类,把2018-03-04转换为2018年03月04日 2. 用程序判断2018年2月14日是星期几。 3. 键盘录入一个年份,判断这
- 教程篇(5.0) 05. 通信控制 ❀ FortiEDR ❀ Fortinet 网络安全专家 NSE 5
- Edge获取网页内置的pdf
- 【智能控制实验】基于MATLAB的BP神经网络实现非线性函数拟合设计
- Linux程序无法切换输入法,linux输入法切换不了
- ubuntu nginx创建多站点配制
- 怎么把多张照片合成一个pdf
- Linux 下Could not get lock /var/lib/dpkg/lock-frontend问题解决方法