2016.8.14中山纪中信息学比赛题解

本文分享了一次编程竞赛的经历,包括在有限时间内完成四道题目的策略与反思。详细介绍了使用快速排序解决第一题的方法,以及通过推导公式解答第二题的过程。同时提到了第三题采用的优化策略,并概述了第四题的基本思路。

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

    这次考试比上次有进步,不过就差5秒我就把第二题叫上去了,本来交上去的话有240分的,结果我现在只有195分。。。早上我先研究了一下第一题,觉得可能是计数排序,然后,就看第二题,认为有公式,接着,我就开始算公式,算得差不多了,我也基本认为是对的,我就去看第三题和第四题,没啥思路,于是呢我打了一个计数排序,但是我还是有点犹豫,快排好像也可以吧(后来证实差不多)然后换了快排,第二题就是做不对,后来暴力45,第三题排序了一下,然后累加,就交了,后来我发现第二题怎么做了,就差5秒我就交上去了,我的心情多么崩溃。第三题我也想到优化了,只是没时间[哭].


    第一题的题目大意是输出倒数k个分数,很简单的,快排就ac了.倒着输出k个数,o了.


    第二题的题目大意是求1到n里有多少个1,这是有一点思考难度的,根据规律我们可以推出一个公式
 ans:=ans+(n div x)*y;
 if(n mod x>=y*2-1)then ans:=ans+y
 else ans:=ans+max(0,n mod x-y+1);
这就是算1的个数的公式了,已开始记得算出读入的数的长度,然后1 to 长度进行循环,每次将x和y乘10,因为把个位,十位,百位等分开计算,每次都要计算一次,算累加和.


    第三题呢,题目大意是要你求最小的方法中的最大危险值,危险值:累加重量-此人力气。就是快排力量加重量的和,然后累加每层的重量,最后计算最大值就可以了.


    第四题就是看看前面的可不可以组成这个字符串,如果可以就算什么时候可以组成,否则就输出-1,当读入0的时候就更新f数组的值.
 
    我也想去c组,要努力!
  
    希望 ,自己 ,奇迹.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值