27 October in ss
Contest
A. chrono
计算某年的干支纪年法年份。
Too easy.
然而我忘记 C++ 取模运算是向0取整。然而数据太水,还是有 90 分。
B. clock
计算某时刻时针和分针的夹角。假设时针和分针指针任意时刻对齐刻度,例如时刻 12:11 夹角为 0°,时刻 12:12 夹角为 6°。角度值范围 [0°, 180°)。
Too easy.
C. sequence
给定一个长度为 \(n\) 的数列 \(a\),每个修改操作仅限对一段连续区间进行自增、自减,求使数列每个数相同的最小操作次数,以及达到操作次数最小的方案总数。$1\le n\le 10^5,\ 0\le a_i< 2^{31},\ a_i\in \mathbf{N} $。
样例输入:
10 4 32 16 23 46 49 42 16 30 21
样例输出:
75 18
先对数列求出差分数组,记为 \(d=\{28,-16,7,23,3,-7,-26,14,-9\}\)。
求出 \(d\) 中所有正数的和、所有负数的和的相反数,二者最大值即为最小操作次数。
二者的差 \(+1\) 即为方案总数。
Why?
每次对数列的修改操作,对应到差分数组当中,则为对 \(d\) 中任意两个数进行修改,其中:一个自增、一个自减。由此,问题转化为把差分数组变为全 0 的操作次数。
显然,把正数变为 0 和把负数变为 0 应该是同步的,而其中一者多出来的次数是和数组整体做修改。所以最小操作次数即为二者最大值。多余的操作次数,可以是把整个数组自增,也可以是把整个数组自减。所以方案总数即为多余操作次数 \(+1\)。
拓展:把 \(n\) 个相同物品放入 \(m\) 个篮子, 若
(1) 篮子可以为空, 篮子不同:共有 \(C_{n+m-1}^{m-1}\) 种方案.
(2) 篮子不可以为空, 篮子不同:共有 \(C_{n-1}^{m-1}\) 种方案. (挡板法)
(3) 篮子可以为空, 篮子相同:方案递推式为 \(f(n,m)=f(n-1,m)+f(n,m-1)\).
(4) 篮子不可以为空, 篮子相同:方案算式为 \(f'(n,m)=f(n-m,m)\).
推广:记 \(Q(n,m)\) 为把自然数 \(n\) 拆分为 \(m\) 个无序的自然数的方案数.
\[\displaystyle Q(n,m)=\begin{cases} 1,& m=1\text{ or } n=1,\\ Q(n,n),& m>n,\\ 1+Q(n,n-1),& m=n,\\ Q(n,m-1)+Q(n-m,m),& m<n. \end{cases} \]
D. milktea
已知摄入某能量物质可以减少任务完成时间,量化为物理量 \(a\text{ s} \cdot \text{mL}^{-1}\)。给定 \(n\) 个任务的 \(a_i\)、预计完成时间 \(b_i\)、期限时间 \(d_i\)。求使所有任务按时完成的最小某能量物质摄入量,保留两位小数。\(1\le n\le 2\cdot 10^5\)。
注:某能量物质的摄入对任意任务完成时间的作用是同时的、普适的。(被坑)
Too easy. 但是坑太深了……
Post author 作者: Grey
Copyright Notice 版权说明: Except where otherwise noted, all content of this blog is licensed under a CC BY-NC-SA 4.0 International license. 除非另有说明,本博客上的所有文章均受 知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议 保护。