2021CCPC final游记

博主参加了退役前的最后一场CCPC比赛,由于疫情延期至7月底。在热身赛中遇到多位算法竞赛偶像,包括叉姐,其出题风格独特。比赛中遇到难题,尽管复习了多种算法,但仍然未能解决某些复杂问题。最终依靠罚时获得银牌,感到些许遗憾。回顾整个赛季,虽然打入多个比赛,但意识到自己技术还有不足。对于是否继续参赛,博主已有所释怀,准备周二的答辩,面对可能的延毕风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第18场,退役赛,第一次来ccpc final
沈阳因为辽宁疫情延期了,据说7月底办,于是这就是最后一场比赛了。冒着延毕的风险论文啥也没改就来了。
周五参观了旷世快手腾讯,见到了黄学长,qsc姐姐,芳姐,旷世食堂比腾讯高到不知道哪去了。
周六热身赛,才知道叉姐出题,感觉ccpcf整场下来见到了一大堆远古算法竞赛偶像233,叉姐的题打过很多套了,15四川,16171920湖南,18湘潭,181920牛客多校,20小米网络选拔赛第二场,这是第11次打叉姐题了,一如既往地很偏思维。
热身赛题目全是数学,f是小米第二场a题原题,我好后期才看到还wa了一发,这题当时还是hls教我的,%hls热身赛吊打逆十字三个顶俩。
正赛前晚复习了好久各种花里胡哨的dp,叉姐经常出牛逼dp,wqs二分,分治写决策单调性优化好像全从叉姐题里学的,然而今天的dp题我还是不会做。
正赛开局35分钟我才过F,主要是我太菜了看了A不会做丢给了队友,队友过ac后我去把L写了,接下来队友过了k,帮另一个队友写线段树过了e就开始经典2个半小时没题写了挂机,g构造一生之敌,三维几何也不会,5维dp也不会,最后一场比赛就结束了。
最后靠罚时银了,不过这场没ec可惜,手上没有题了也没当x题第一,再过一题也金不了。这赛季所有碰见hls的比赛都被hls虐一题按在地上锤,hlstql
之前还想着要不要研一再打,跟雅米老师聊过后感觉看开了,因为去了也打不进一队最多还是吧今年的全体验一遍,今年ccpc,icpc,小米,namomocamp, ec,字节camp,ccpc final全部打进了,然而确实没wf水平,大学四年摸鱼太多走歪路太多,有点辜负了大一时xushu的期望了,然而感觉凡事总有遗憾,也看开了。
本来感觉退役会有一堆话想说,到最后感觉也只剩平静。感谢这赛季两位队友carry我
完了下周二上午答辩我周一中午才回学校,要毕不了业了。

### 2021 CCPC Guangzhou Onsite 题目解析 #### H题: Three Integers 该题目主要考察的是分类讨论以及合理运用倍数关系的能力。当输入数据中存在一个零时,需特别注意是否存在数值为1的情况。在这种情况下,为了防止被特定测试用例攻击(即所谓的“hack”),应适当调整倍数逻辑[^1]。 以下是实现此算法的一个可能代码示例: ```cpp #include <bits/stdc++.h> using namespace std; int main(){ int a,b,c; cin>>a>>b>>c; vector<int> nums={abs(a), abs(b), abs(c)}; sort(nums.begin(),nums.end()); long long res=LLONG_MAX; do{ if(nums[1]==0 && nums[2]!=0){ // 特殊情况处理 res=min(res,(long long)(nums[0]*nums[2])); } else { // 正常计算最小操作次数 long long temp=(nums[1]-nums[0]%nums[1])%nums[1]; temp += (nums[2]-nums[1]%nums[2])%nums[2]; res = min((long long)res,temp); } }while(next_permutation(nums.begin(),nums.end())); cout<<res<<"\n"; } ``` #### C题: Necklace 对于C题Necklace而言,其核心思路在于如何通过贪心策略来解决问题。具体来说,可以从第一个节点出发尝试尽可能地向右扩展路径长度;一旦遇到超出允许的最大长度`max_len`的情形,则将整个项链结构向左侧平移一定距离,从而最大化利用可用空间并减少资源浪费[^4]。 下面给出了一种基于上述思想的解决方案框架: ```cpp // 假设已知一些变量定义如 max_len, nodes 等... bool check(double mid){ double sum=0; for(auto &len:nodes){ if(sum+len<=mid){ sum+=len; } else{ return false; } } return true; } double binarySearch(){ double l=0,r=accumulate(nodes.begin(),nodes.end(),0.0); while(r-l>=EPS){ double mid=l+(r-l)/2; if(check(mid)){ r=mid-EPS; } else{ l=mid+EPS; } } return l; } ``` 以上两道典型题目展示了不同类型的解法技巧——前者依赖于细致入微的状态枚举与边界条件判断,后者则体现了经典优化理论中的动态规划与二分查找相结合的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值