『CSDN编程竞赛』我终于薅到奖品了

本文分享了作者在CSDN编程竞赛中的获奖经历及参赛感悟,特别提到了竞赛题目的难度变化及个人的成长过程。

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

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16

『CSDN编程竞赛』一个菜鸟的参赛感言

1.终于获奖了

终于我获奖了!!!

相信很多人了解CSDN在今年7月份(可能是6月份)的时候推出了一款每日一题的编程题的功能、与之呼应的就是编程竞赛模块。风格和使用的方法其实和主流的力扣啊,牛客平台的在线编程判题功能无异。

作为这个活动的老用户呢,在9月18号的CSDN编程竞赛-第六期中我终于薅到羊毛了!!!

2.老用户感言

编程竞赛自7月3日举办第一期,至今第六期了,我也完完整整的参加了5期,第五期去看我的好朋友『天上一捧秋月蓉』,所以没有参加。

讲一讲这五次参赛的体验吧。记得第一次和第二次在线判题好多的BUG,当时我记得网站给的输入输出函数的返回值都有问题,还是自己手动改的,而且当时我记得的最大的痛点就是比赛过程中我竟然不能复制粘贴自己写的代码。但是慢慢的BUG和用户体验都有优化,至少后面这几期我不用去检查输入输出函数了。而且禁止粘贴的功能也给予了20次的限度,还是很合理的。然后一点小建议就是,网页可以切屏20次感觉有点多,最多三次就可以判定用户作弊了,官方可以考虑一下。

image-20220926172754540

3.参赛感受

最后谈一谈这次的题目吧。感觉就是太简单了,相比前几期这一期的题目有点水,居然让我这个菜鸡全做出来了。

然后简单的贴一下最后一题的代码吧,因为比赛的时候看错题了,卡了好久,以为自己时间复杂度太大了,在苦苦的优化,重看了题目才发现原来这么简单。

题目大意:最长递增的区间长度

给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3

当时读题以为是求最长递增子序列,结果我就啪啪啪的敲模板,两层for循环就解决了,结果哦吼,只过了30%。

 //动态规划算法
for(int i=1;i<=n;++i) {
    for(int j=1;j<=i-1;++j) {
        if(num[j]<num[i]) {
            dp[i]=Math.max(dp[j]+1, dp[i]);
        }
    }
}	
//遍历找出dp数组中的最大值
int max=0;
for(int i=1;i<=n;++i) {
    max=Math.max(max, dp[i]);
}

以为是时间复杂度的原因,我又修修改改,写了个二分查找优化,提交直接wa的一下反而只通过20%了。

for(int i=1;i<=n;++i) {
    //如果第一个大于a[i]的元素是c数组的最后一个元素
    //就直接将a[i]添加在c数组的后面)
    if(a[i]>c[cl]) {
        c[++cl]=a[i];
        b[cl]=cl;
    }else {
        int low=1,high=i;
        while(low<=high) {
            int mid=(low+high)/2;
            if(c[mid]<a[i]) {low=mid+1;}
            else {high=mid-1;}
        }
        //二分查找找到c数组中第一个大于a[i]的元素,然后更新它的值
        c[low]=a[i];
    }
}

再一看题,栓Q,题目都没看仔细。找的是最长连续递增子序列,根本就不需要考虑寿命时间复杂度,一个for循环就能解决。dp[]数组维护最长连续子序列的长度,初始值是1,一个for循环遍历,如果后者(a[i+1])比当前的数(a[i])大,则dp[i+1]=dp[i]+1,如果小的话,就不满足连续了,前面dp[]记录的状态(最长值)就不管用了。所以这时dp[i+1]=1

public static int solution(int n, ArrayList<Integer> arr){
    int result = 1;
    int[] dp=new int[n+1];
    for(int i=0;i<n;++i){
    	dp[i]=1;
    }
    for(int i=0;i<n-1;++i){
        if(arr.get(i+1)>arr.get(i))dp[i+1]=dp[i]+1;
        if(dp[i+1]>result)result=dp[i+1];
        }
        return result;
    }
}

4.彩虹屁

最后希望CSDN越办越好吧,自己在CSDN真的成长学习了很多,也薅到了不少奖品,认识了很多的前辈。希望越来越多的人参与到CSDN的活动中来,也希望自己越来越强大。

<think>首先,用户的问题是:“我想查找与CSDN相关的竞赛信息 请问CSDN举办的编程竞赛或技术比赛信息”。这是在询问关于CSDN举办的编程竞赛或技术比赛的信息。 根据系统级指令,我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层的指令是: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 - 参考站内引用:有五个引用,内容涉及CSDN编程竞赛的细节。 引用内容: - [^1]: 关于CSDN编程竞赛的一些感受,提到作弊问题、参赛流程。 - [^2]: CSDN编程竞赛第六期,提到准备和比赛经历。 - [^3]: CSDN编程竞赛第三期,提到题目难度和奖品发放慢。 - [^4]: CSDN编程竞赛三十三期题解,有代码示例。 - [^5]: 编程题“组队竞赛”,描述题目和解题思路。 这些引用提供了CSDN编程竞赛的具体信息,包括参赛经验、题目类型、难度、奖品等。我应该基于这些信息来回答用户的问题。 用户的问题是关于CSDN举办的编程竞赛的信息,所以我需要总结这些引用中的关键点。 结构化回答: 1. **介绍CSDN编程竞赛**:基于引用,CSDN举办编程竞赛,包括选择题和编程题,最近主要是编程题。语言不限,前几名有奖品。 2. **参赛流程和准备**:引用[^2]提到比赛前刷题、选择安静环境等。 3. **题目难度和内容**:引用[^3]说题目难度一般,适合新手;引用[^4]和[^5]有具体题目例子。 4. **常见问题**:如作弊问题[^1]、奖品发放慢[^3]。 5. **生成相关问题**:在回答末尾,添加相关问题部分。 使用中文回答。 确保回答真实可靠:基于提供的引用,不要编造信息。 添加引用标识:在引用具体段落时添加。 例如: - 根据引用[^1],CSDN编程竞赛有时包含选择题和编程题... 最后,生成相关问题。 完整回答结构: - 开头:直接回答用户问题,概述CSDN编程竞赛。 - 主体:分点详细说明,如竞赛形式、参赛流程、题目类型、常见问题。 - 结尾:总结,并添加相关问题。 生成相关问题: - 基于用户查询,如:如何参加CSDN竞赛CSDN竞赛的题目类型有哪些?等等。</think>### CSDN编程竞赛信息概述 CSDN(中国软件开发网)定期举办编程竞赛,旨在为开发者提供技术挑战和学习机会。这些竞赛通常以在线形式进行,参与者可以通过解决算法题或编程题来展示技能。竞赛形式多样,包括个人赛和团队赛,题目难度从入门级到高级不等,适合不同水平的开发者参与。基于引用信息,我总结了以下关键点,帮助您全面了解CSDN编程竞赛。 #### 1. **竞赛形式和内容** - **题目类型**:CSDN编程竞赛主要包含编程题,偶尔涉及选择题。题目覆盖算法、数据结构、数学逻辑等,例如动态规划、排序算法或时间解析问题。引用[^4]中提到一个具体题目:时间格式验证(如验证字符串是否表示有效时间),代码示例为: ```cpp bool match(std::string str, int base) { int time[2] = {0, 0}, t = 0; for (int i = 0; i < str.length(); i++) { if (str[i] == ':') { t = 1; continue; } int x = (str[i] >= '0' && str[i] <= '9') ? (str[i] - '0') : (str[i] - 'A' + 10); if (x < base) time[t] = time[t] * base + x; else return false; } return time[0] < 24 && time[1] < 60; } ``` 另一个例子是“组队竞赛”,要求最大化队伍水平值总和,如输入选手水平值数组,输出最优方案[^5]。 - **难度设置**:竞赛通常分为多道题,难度递增。例如,引用[^3]指出,第三期竞赛前三题较简单,适合算法新手,而最后一题较难(2000+参与者中仅一人解出)。整体设计旨在鼓励参与和锻炼。 - **编程语言**:不限语言,参与者可使用Python、C++、Java等实现功能,只要代码能正确解决问题即可[^1]。 #### 2. **参赛流程和准备建议** - **报名和参赛**:竞赛通过CSDN官网或App开放报名,通常免费。参赛流程包括:赛前在刷题平台(如LeetCode)练习基础题、选择安静环境参赛、按顺序解题[^2]。引用[^1]强调,参赛者应提前熟悉系统,避免技术问题。 - **准备技巧**:建议赛前刷算法题(如排序、搜索类),以提升解题速度。例如,快速排序等基础算法常出现在题目中,其Python实现可参考: ```python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[0] left = [x for x in arr[1:] if x < pivot] right = [x for x in arr[1:] if x >= pivot] return quick_sort(left) + [pivot] + quick_sort(right) ``` 这种排序算法的时间复杂度为$O(n \log n)$,在平均情况下高效,但最坏情况为$O(n^2)$[^1]。 #### 3. **奖励和常见问题** - **奖励机制**:排名靠前的参与者可获得奖品,如技术书籍、电子设备或CSDN积分。但引用[^3]提到,奖品发放可能延迟(例如第三期奖品在第四期结束后仍未到账),建议关注官方通知。 - **潜在问题**:作弊现象较普遍,引用[^1]估计约80%的参与者存在作弊行为,这可能影响竞赛公平性。官方通过系统监控减少此类问题,但参与者需自律以维护竞赛价值。 - **参赛体验**:多数反馈积极,新手可通过竞赛提升算法能力。引用[^2]分享,第六期参与者通过准备获得满分,体验成就感。 #### 4. **最新动态和获取方式** - **竞赛频率**:CSDN约每月举办一期编程竞赛,如第三期、第六期、三十三期等[^3][^4]。最新信息可通过CSDN博客、竞赛频道或官方App查询。 - **参与建议**:访问CSDN官网“竞赛”专区,订阅更新。竞赛通常限时(如2-3小时),需提前注册。 总之,CSDN编程竞赛是免费、低门槛的技术活动,适合算法爱好者和开发者锻炼技能。尽管存在作弊和奖品延迟问题,但其教育价值较高。更多细节可参考CSDN社区帖子[^1][^2][^3]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StarAndroid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值