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

比赛地址: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: 倒水问题

取膜


代码链接

你可能感兴趣的:(【题解】2016.12.3FJNU2016-2017学年第二十届低年级程序设计竞赛(正式赛)题解)