【题解】2016.12.3FJNU2016-2017学年第二十届低年级程序设计竞赛(正式赛)题解

本文解析了2016-2017学年第二十届低年级程序设计竞赛的八道题目,包括快速跑步算法、终点向量计算、动态规划路径选择、任务分配策略、三角形物品装箱优化、火柴棒数字构建、特定公式计算及倒水问题等,提供了详细的思路与解决方案。

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

比赛地址:2016-2017学年第二十届低年级程序设计竞赛(正式赛)


Problem A: 跑得比谁都快的IDrandom

计算距离之后膜400

Problem B: 捧杯

终点减起点得到向量求和,对 xy 绝对值进行约分,注意处理有0的情况

Problem C: 汪老司机

dp,用 f(i,j,sta) 表示第 i 段路,已经变了j次道,现在在 sta 道上,状态转移方程为 f(i,j,sta)=min(f(i1,j,sta)+v(i1,sta),f(i1,j1,1sta)+v(i1,1sta))

Problem D: 蒟蒻的任务分配

注意到,物品体积范围很小,将物品分成可容和不可容,用多重背包处理之后,将可行解按顺序排列(以下称为可容序列和不可容序列),分为三种情况:
1. 不可容物品和 Sumuct 大于可容物品 Sumct ,直接输出
2. 只有一边有不可容任务,在可容序列中二分查找 Sumuct+SumctSumuct2
3. 两边均有不可容任务,在不可容序列中枚举 x ,在可容序列中二分x+SumctSumuct2

Problem E: 杂物整理

完美三角形使用的箱子数量为 k(k+1)2 ,打表之后二分枚举小于等于 n 的最大值并减去

Problem F: 火柴棒

尽量放1,也就是每4根火柴,直接放成11,对于余数分情况处理
1. 余1,如果火柴数量和为5,放成5,否则拆开两个1变成777,并将两侧的7放在末尾
2. 余2,在中间放1
3. 余3,在中间放7

Problem G: PY

该式在j>i的情况下可转换为 f(i,j)=aj+j+(aii) ,记录 max(aii) 即可

Problem H: 倒水问题

取膜


代码链接

### 关于电子科技大学第八ACM趣味程序设计竞赛第二场正式的题目解析 目前未找到针对电子科技大学第八ACM趣味程序设计竞赛第二场正式的具体题解文档或官方解析[^1]。然而,可以通过分析常见的ACM竞赛题型以及类似的解题思路来推测可能涉及的内容。 #### 常见ACM竞赛题型及其解决方法 1. **暴力求解与优化** 许多ACM竞赛中的问题可以从暴力求解入手,逐步优化至更高效的算法。例如,《算法竞赛入门经典第二版》第七章提到的从暴力到枚举排列的方法可以帮助理解如何通过生成子集和回溯法解决问题[^2]。 2. **字符串处理与模式匹配** 类似于引用[2]中描述的“猜数字游戏”,需要编写一个程序比较两个四位数并输出特定格式的结果(如`xAyB`)。这类问题通常涉及到字符串操作、条件判断以及循环结构的设计[^3]。 3. **动态规划与状态转移方程** 动态规划是一种常用的技巧,尤其适用于具有重叠子问题特性的场景。比如计算某个位置可达路径总数时需考虑是否存在障碍物影响最终结果,正如引用[5]所展示的例子那样[(3,1)]无法获取金币因为后续移动受限[^4]。 4. **组合数学与计数原理应用** 对于某些统计类问题,则需要用到基本的加法规则或者乘法规则来进行有效数目估算。像引用[3]里关于OJ平台可免费使用的合适难度题目数量定义方式就是基于简单的位运算累加得出结论[^5]。 以下是部分典型代码片段示例: ```python def sum_of_digits(number): """返回整数number各位数字相加之和""" total = 0 while number > 0: total += number % 10 number //= 10 return total # 测试函数sum_of_digits() print(sum_of_digits(233)) # 输出应为8 ``` 上述Python脚本展示了如何快速计算任意正整数各个位上的数值总合,这正是应对类似a_i=a[i]=Σd_j形式需求的有效手段之一。 --- #### 总结 尽管未能直接定位到目标事的确切解答资料,但借助已知资源仍能够构建起一套完整的思考框架用于指导实际参过程中的策略制定工作。希望以上分享对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值