记CACC 2024 区域赛
今日巡视文件夹,发现有这么一篇博客,当时没有发博客,现在补发。
记CACC 2024 区域赛
题目
A. 报数淘汰
给定两个整数\(n,m\),编号从\(1\)到\(n\)的\(n\)个人围成一圈,依次从\(1\)开始报数,报到\(m\)的人淘汰,求最后一个被淘汰的人的编号。
数据范围比较小,可以直接暴力。
B. 矿物探测
给定正整数\(n\leq10^6,m\leq n-2\)和长为\(n\)的整数序列\(energy = (energy_0,...,energy_{n-1})\),求\(\min_{i=1}^{m - n - 1}(\max\{\max(a),\max(b)\}-\min\{\min(a),\min(b)\})\),其中\(a=energy[0,i),\ b=energy[i+m,n)\)。
C. 分奇偶的区间维护
给定正整数\(n,q\in[1,5\times10^5]\)。一个长为\(n\)的序列\(arr=(arr_0,...,arr_{n-1})\)初始均为\(0\)。一共\(q\)次查询\(op\in\{0,1\}\):
①\(op=0\):再给定整数\(begin\in[0,n),\ end\in[begin,n],odd\in\{0,1\},diff\in \mathbb{Z}\),若\(odd=0\)则将\(arr[begin,end)\)中的偶数均加上\(diff\),否则将其中的所有奇数均加上\(diff\)。
②\(op=1\):再给定整数\(begin\in[0,n),\ end\in[begin,n]\),求出\(\sum\nolimits_{i=begin}^{end-1}arr_i\)。
D. 扑克牌
没时间看题。
E. 虚拟机调度
一个机器(虚拟机和物理机都是)包括两个属性:VCPU数量\(vcpu\),内存容量\(mem\)。它们都是正整数,而且比较小。
struct Machine {
int vcpu, mem;
};
每个物理机在初始时有\(VCPU\)个虚拟核心和\(MEM\text{GB}\)内存。
评测机在main.cpp内置交互系统代码,main.cpp会#include "scheduler.cpp"。选手编写scheduler.cpp,需要实现有以下功能的调度系统类Scheduler`。
默认构造函数。
成员函数
void init(int n, int c, int m);:交互系统会在最初状态调用该函数,告知Scheduler初始有\(n\)个空闲的物理机,编号依次从\(0\)到\((n-1)\),所有的物理机(包括后续申请扩容时获得的)最初都有c个虚拟核心和mGB内存。成员函数
std::pair<int, int> create(int id, int c, int m);:交互系统调用该函数,表示申请创建一个编号为id,虚拟核心数为c,占内存mGB的虚拟机。一个虚拟机必须创建在一个有足够多(比虚拟机的多)空闲的(即不被虚拟机占用的)虚拟核心和内存的物理机上,被创建后会占用相应数量的虚拟核心和内存。在合适的时候,调度系统Scheduler可以选择扩容,即增加一定数量的物理机,增加的物理机从当前物理机数开始继续向后编号,交互系统会先扩容再创建虚拟机,因此调度系统可以将新虚拟机创建在新增加的物理机上。每次扩容的物理机数量必须限制在\(\mathbb{N}\cap[1,100]\),且总物理机数量必须限制在\(50000\)以内。函数返回两个值,依次是存放该虚拟机的物理机编号和所申请扩容的物理机数量。如果不扩容,则第二个值返回\(0\)。保证该函数最多被调用\(50000\)次。成员函数
void remove(int id);:交互系统在删除编号为id的虚拟机后,通过该函数告知调度系统。
对于每个测试点:交互系统实时检查调度系统的输出是否合法,如果有不合法的调度,该测试点立即记0分;如果所有调度合法,若扩容到总共\(x\)个物理机,而基准线程序扩容到总共\(y\)个评测机,则该测试点得\(\frac{x}{y}\times0.6\times200\)分。最终得分为各测试点平均分。
过程
赛前
预备了一些模板,例如有理数、树状数组、线段树和矩阵(不完善)。打印了出来。彩打太贵舍不得,只好用黑白打,而且双面打印,一面打2列,极致省钱。
订了手机7个和手环2个闹钟,生怕起不来。12月1日0:40即上床,然而快睡着时被主播哥吵醒,1:04才睡着。睡眠很浅,早上6:30被第一个闹钟就叫醒了。舍不得起,遂清醒地再躺了8分钟。
天还没亮就起床,看到了日出的光辉。然而时间似乎有点来不及。
急急忙忙买了碗方便面,加两个鸡蛋,加小菜。正要吃的时候,ZZM忽然告诉我有疑似流星的东西,附照片。大惊,出门观之,果然,拍照录像记之。
吃面条时,ZZM言想买Luckin,甚以为然。二人匆忙骑车至时代广场,取餐而奔地铁。北京大而多人,故周日晨而地铁无座。路习大计基,没看几页。辗转三番,换乘两次,乃至北工大西门站。出站,四顾茫然;俯视导航,乃知步行20分钟,而余时不足半小时。我劝骑车而行,ZZM顾交法,不敢逆行,遂弃车步行。大步流星,而鱼告我CACC牌面甚小,仅惨淡一标语。沿途察之,果然。
匆忙至考场,拿着一堆东西上了座位。
赛时
考场采用Win 10系统,大抵没有Linux环境。有VS Code,有C++插件,有依赖,功能正常。还有一些奇奇怪怪的插件。
比赛竟然通过访问赛氪网站来公布题目和提交。似乎可以访问非比赛题库,然而我没有仔细考察。
A题非常简单,然而想半天没写清楚,大抵没带脑子。调试发现插件C++ Compile Run和C++ Runner取代了C++插件自己的调试,愤怒,禁用之。
B题实际上也很简单,然而被比赛前几天看的另一个题目干扰了。都是滑动窗口思想,那个题用std::set维护区间最值,所以这里我想也用std::map。然而超时。撰写快读快写,仍超时。计算觉得应该不会超,写“极端数据”,想用相同的树卡掉std::map,对拍,确实没超,提交,仍超时。想到\(a\)可以不用std::map,而是可以随着i增加来更新最值,但仅降低常数,仍超时。想到pb_ds中的__gnu_pb_ds::tree,替换,仍然超时。又想到可能更差的数据是降序而非重复元素,一测,果然超时。
寻思无果,遂暂时放弃,转而读C题。C题看起来很像线段树,区间修改,区间查询,然而分奇偶,不知如何维护。再看D题,甚为复杂,放弃。略读E题,稀奇古怪。又看B题,仔细思考如何预处理,茅厕顿开,直接预处理\(b\)对于各个\(i\)的最值不就行了?奋指疾书,提交,果然AC。调试时发现STL疑似无法在调试器中正常访问(其实只是std::array特性),配置了一下,发现C::B路径下一个MinGW/一个mingw64/,VSC路径下又一个mingw64,我估计Dev-C++下面还有一个;中途还发现“快捷访问”里面固定了一个文件夹叫“vsc乱码”,顿觉十分好笑。
再看C题。很像线段树。没记错的话,30%的数据\(n\leq100\)还是\(500\),70%的\(n\leq10000\),100%\(n\leq5\times10^4\)。以为30%暴力,70%普通线段树或者树状数组,100%某种特殊构造的线段树。对着模板抄写一顿,冥思苦想如何维护。想到维护两个线段树分别记录奇数和偶数,区间加偶数即在对应树内lazy,区间加奇数就在加上\(diff\)后把被覆盖的区间整个移动到另一棵树上(记录每个子树中的奇数或偶数数量。这样也便于通过lazy计算区间和)。查询时同时查两棵树,加一起。试了几次,对拍几轮,调试半天,仍然WA。线段树是非线性数据结构,不便调试,不知道怎么错的,浪费我几个小时,他妈的。
在我写线段树的时候发了中饭。出人意料的是€€£竟然不是用那种屎一样的面包肉饼,而是麦当劳!每个人一瓶水,一个芝士牛肉汉堡(可惜有酸黄瓜,还被我咬了一口)和一个香芋派。惊奇发现香芋派竟然这么好吃。很多人没来,汉堡香芋派都有多,但我没有多要。
线段树调了几个小时没搞好。15:35决定写个暴力先交着,想着看能不能常数低一点骗一点分,就用了快读快写。样例过了,提交上去,竟然WA!!怀疑人生,琢磨半天,不能理解,心态崩溃。观通过/提交数据,E题(工程题)竟有几百人都过了,惊,决定先写E题,换换脑子。
E题题目结构非常混乱模糊,读了五六遍才读懂题目。写了一点,想优化,便搞了些std::map甚么的。一运行,竟然有exception!我想最多是RE啊,怎么可能异常??一看,我草,竟然是在main.cpp抛出的。一调试,发现读取数据不对,遂迷茫,心态崩溃。徐而察之,发现应该是出题人用的项目会把可执行文件生成在build/目录下,所以我这里文件重定向异常了。修改一下,果然好了,转而变成死循环。调试发现是std::map::find没找到,而循环条件设的true,原来是要用std::multimap。一改,变成WA。细细思索,发现不适合通过这种办法获得最优选择。改了半天,全都0分(除了题中样例满分),尾声将近,身心俱疲,直接开摆,放弃优化。调试半天,总算有分,毫不犹豫,立即提交。不记得是20.08还是20.04分了。
最后17分钟,仔细琢磨C题,仍不知为何出错。时间紧迫,线段树恐怕不得不放弃了,遂琢磨为甚么暴力会WA。过一过之前对拍生成的样例,发现全都生成0,非常懵逼。想来快读快写已经过B题检验,怎会有错?然最后七八分钟,无可奈何,采用iostream,竟好。最后2分钟,提交,我草,70分!!!
赛后
最后时刻,悲喜交加,又惊又喜,心态再崩。收拾物品,上个厕所,离开考场,四顾茫然。盖ZZM有约,而我一身孑然。远有湖南挚友,早已交卷;近无心仪女生,无人同餐。开美团而望四周,盖高校皆地处苍凉,远美食而近学术。思索半晌,不知所归。浑噩出校,误入停车场,妈妈的,还用围墙拦起来,绕半天才上人行道。路边花坛有共享单车,一排摆放,东倒西歪。扶起一辆,车把正向,欣喜扫开,骑行几米,左脚悬空,低头查看,竟无踏板!!愤愤还车,换一破车,赶赴地铁,欲食天街。
首经贸站换成房山线。开往阎村东的车很多人在等,不爽,注意到上一站是起点站,决定反坐一站,好坐座位。等待半天才来反向的车,现在想来,大抵因为房山线与另一条线合并。再回首经贸站,竟似乎经过了两站,使我疑心,因为坐了一站的时候发现没上几个人,觉得很奇怪,怎么这下首经贸站没什么人了,结果下一站才是首经贸,上来一堆人。然而当时身心俱疲,魂不守舍,无心查清。
路上看到群里有人说有的考点没断外网,甚至能用人工智能,逆天。ZZM说我们这里也能访问OJ上非比赛题目的所有提交记录,离大谱。
到达天街,巡视一圈,都贵,最后吃了牛Yo范的辣椒炒肉盖饭套餐,美团用券¥20.80。没说额外加辣,结果不很辣,略失望,但鹿茸菌鸡汤好喝。店员很热情,送我一瓶甚么“大窑橙诺”。吃完后店员还问我有没有甚么意见建议,令我意外,我说不够辣,她说能加辣,好罢。感动,遂在美团好评。
感受
免费的比赛能有这么好的伙食也确实了不起。
然而我确实是个废物!这种成绩,使人汗颜!如此成绩,如何保研?
第一次跑这么远参加比赛,来去一共四小时,就烤出个这样的分数。我宣布我已经不是城里人了。
记CACC 2024 区域赛的更多相关文章
- ACM-ICPC 2016亚洲区域赛(沈阳站)游记(滚粗记)
首发于QQ空间和知乎,我在这里也更一下. 前言 以前高中搞竞赛的时候,经常看到神犇出去比赛或者训练之后写游记什么的,感觉萌萌哒.但是由于太弱,就没什么心情好写.现在虽然还是很弱,但是抱着享受的心情 ...
- HDU5558 Alice's Classified Message(合肥区域赛 后缀数组)
当初合肥区域赛的题(现场赛改了数据范围就暴力过了),可惜当初后缀数组算法的名字都没听过,现在重做下. i从1到n - 1,每次枚举rank[i]附近的排名,并记录当起点小于i时的LCP(rank[i] ...
- 36th成都区域赛网络赛 hdoj4039 The Social Network(建图+字符串处理)
这题是某年成都区域赛网络赛的一题. 这题思路非常easy,可是从时间上考虑,不妨不要用矩阵存储,我用的链式前向星. 採用线上查询.利用map对字符串编号,由于非常方便.要推荐的朋友,事实上就是朋友的朋 ...
- 【2013南京区域赛】部分题解 hdu4802—4812
上周末打了一场训练赛,题目是13年南京区域赛的 这场题目有好几个本来应该是我擅长的,但是可能是太久没做比赛了各种小错误代码写的也丑各种warusn trush搞得人很不爽 全场题之一的1002也没有想 ...
- hdu5080:几何+polya计数(鞍山区域赛K题)
/* 鞍山区域赛的K题..当时比赛都没来得及看(反正看了也不会) 学了polya定理之后就赶紧跑来补这个题.. 由于几何比较烂写了又丑又长的代码,还debug了很久.. 比较感动的是竟然1Y了.. * ...
- 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...
- 【转】2014区域赛小结(牡丹江&&鞍山)by kuangbin
Posted on 2014年10月20日 by kuangbin 最后的两场区域赛结束了! ICPC生涯的最后两场区域赛,选择了前两个赛区——牡丹江和鞍山,主要是时间比较靠前,而且我向来对东北赛区有 ...
- 2014ACM/ICPC亚洲区域赛牡丹江站汇总
球队内线我也总水平,这所学校得到了前所未有的8地方,因为只有两个少年队.因此,我们13并且可以被分配到的地方,因为13和非常大的数目.据领队谁oj在之上a谁去让更多的冠军.我和tyh,sxk,doub ...
- 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
队名:Unlimited Code Works(无尽编码) 队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...
- 2015年ACM长春区域赛比赛感悟
距离长春区域赛结束已经4天了,是时候整理一下这次比赛的点点滴滴了. 也是在比赛前一周才得到通知要我参加长春区域赛,当时也是既兴奋又感到有很大的压力,毕竟我的第一场比赛就是区域赛水平,还是很有挑战性的. ...
随机推荐
- Gitee平台DevOps能力评估:功能概览与适用性指南
Gitee:本土化DevOps平台的崛起与数字化转型新选择 在全球数字化转型浪潮下,软件开发效率正成为企业核心竞争力的关键指标.作为国内领先的一站式DevOps平台,Gitee凭借其独特的本土化优势和 ...
- 微信小程序端智能项目工程化实践
作者: vivo 互联网大前端团队- You Chen 本文介绍可以在微信小程序上应用的端智能技术方案,聚焦 TensorFlow.js 推理和微信原生推理,详细讲解这两种方案在项目中的应用过程,为小 ...
- http发送get/post调用,传参为json对象
1.http 请求工具类 import com.alibaba.fastjson.JSONObject; import org.springframework.http.*; import org.s ...
- wget和yum-config-manager
wget和yum-config-manager都是Linux系统中常用的命令行工具,但它们的用途和功能有所不同.以下是关于这两个命令的详细解释: wget 用途:wget是一个从网络上自动下载文件的自 ...
- 【仅拼俩月,从此自由】一个已完成80%的AIGC项目寻技术合伙人
现实确实比短剧都狗血! 十五年创业老兵,成过事儿也败过事儿,中了梦想的"毒"非要死磕一款伟大的产品 --陆续带团队开发软件七八年,作品:2. 有国j部委直属单位合作伙伴和行业稀缺资 ...
- 直击现场! “ 直通乌镇 ”开源赛复赛收官,OpenCSG担任评委,十强藏着哪些产业机会?
2025年9月16日,备受瞩目的"直通乌镇"全球互联网开源模型应用赛复赛在杭州圆满落幕.浙江省经济和信息化厅相关领导及各界专家.参赛团队代表齐聚一堂,共同见证了这一激动人心的时刻. ...
- 【Echarts】前端echarts 常用总结
文章目录 一.vue2 项目如何使用echarts 二.Echarts设置柱状图y轴最⼩刻度为1 三.echarts报错 echarts is not defined 四.Echarts 柱形图实现从 ...
- 【有源码】流浪宠物管理系统+SpringBoot+VUE+前后端分离
学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:流浪宠物管理系统. 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 管理后台-截图 ...
- 服务运维 --- 如何查看linux硬盘目录使用情况 并 查找大文件
sudo du -sh /* | sort -rh Linux 查找大文件的命令 在 Linux 中查找大文件是释放磁盘空间的关键步骤.以下是几种常用的方法: 1. 使用 find 命令查找大文件 b ...
- 工作错误记录---javac找不到
现象 执行javac命令报错 原因 path路径问题 解决 彻底检查java jdk的path路径是否有错误 JAVA_HOME=C:\Program Files\Java\jdk-11.0.9 pa ...