CCF CSP-2022-01 赛题练习

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF CSP-2022-01 赛题练习相关的知识,希望对你有一定的参考价值。

CCF CSP-2022-01 赛题练习

1. 现值计算

题目描述

问题描述
评估一个长期项目的投资收益,资金的时间价值是一个必须要考虑到的因素。简单来说,假设银行的年利率为 5,那么当前的 100 元一年后就会变成 105 元,两年后变成 110.25 元。因此,现在收到 100 元比两年后收到 100 元收益更多,两年后再支出 100 元会比立刻支出 100 元更加划算。

基于上述分析,我们使用如下的模型来衡量时间价值:假设银行的年利率为 i,当前(第 0 年)的 x 元就等价于第 k 年的 x*(1+i)^k 元;相应的,第 k 年的 x 元的当前价值实际为 x*(1+i)^(−k) 元。

现给出某项目未来 n 年的预计收入支出情况,在将所有款项转换为当前价值后,试计算该项目的总收益。

输入格式
从标准输入读入数据。

输入的第一行包含空格分隔的一个正整数 n 和一个实数 i,分别表示年数和银行年利率。

输入的第二行包含空格分隔的 n+1 个整数,依次表示该项目第 0,1,,n 年的预计收入(正数)或支出(负数)。

输出格式
输出到标准输出中。

输出一个实数,表示该项目在当前价值标准下的总盈利或亏损。
样例输入
2 0.05
-200 100 100

样例输出
-14.059

样例说明
该项目当前支出 200 元,在接下来两年每年收入 100 元。虽然表面看起来收支相抵,但计算当前价值可知总共亏损了约 14.059 元。

思路描述

本题主要是要理解题目的问题描述中的 “第 k 年的 x 元的当前价值实际为 x*(1+i)^(−k) 元” 这一句话,即之后的每一年的x元 = 当前价值的x*(1+i)^(−k),然后将所有的价值相加即可得到最后答案。

Python:

a = input().split()
n = int(a[0])
i = float(a[1])
 
money = [i for i in map(int, input().split())]
 
all = 0
for j in range(n+1):
    all += money[j]*(1+i)**(-j)
print("%.3f"%all)

C++不会实现!

202104-4 校门外的树

题意概述

具体图例请见原题。

给定一个区间 [ a l , a r ) [a_l,a_r) [al,ar),对于树的坐标的集合 T ⊂ ( a l , a r ) ( T ⊂ Z ) T\\subset (a_l,a_r) (T\\subset Z) T(al,ar)(TZ),归纳定义 T T T [ a l , a r ) [a_l,a_r) [al,ar)上是美观的:

  1. 如果 T ≠ ∅ T\\neq \\emptyset T= T ∩ a l , a l + 1 , ⋯   , a r = ∅ T\\cap \\a_l,a_l+1,\\cdots,a_r\\=\\emptyset Tal,al+1,,ar=,并且存在一个公差 d > = 1 d>=1 d>=1,使得 中的元素按照从小到大的顺序排序后,可以构成一个公差为 d d d的等差数列(显然,这个等差数列的首项为 a l a_l al,末项为 a r a_r ar),则 T T T [ a l , a r ) [a_l,a_r) [al,ar)上是美观的;
  2. 如果 T ∩ a l , a l + 1 , ⋯   , a r = ∅ T\\cap \\a_l,a_l+1,\\cdots,a_r\\=\\emptyset Tal,al+1,,ar=,并且存在一个下标 m ( l < m < r ) m(l<m<r) m(l<m<r),使得 T ∩ ( a l , a m ) T\\cap (a_l,a_m) T(al,am) [ a l , a m ) [a_l,a_m) [al,am)是美观的,且 T ∩ [ a m , a r ) T\\cap [a_m,a_r) T[am,ar) [ a m , a r ) [a_m,a_r) [am,ar)是美观的,则 T T T [ a l , a r ) [a_l,a_r) [al,ar)上是美观的。

根据这一定义,空集在任意区间上都不是美观的;另外,如果存在下标 i i i使得 a i ∈ T a_i\\in T aiT,那么 T T T一定不是美观的。

我们称两种种树的方案是本质不同的,当且仅当两种方案中,种树的坐标集合不同。请求出 [ a l , a r ) [a_l,a_r) [al,ar)所有本质不同的美观的种树方案。当然,由于方案可能很多,你只需要输出总方案数对 1 0 9 + 7 10^9+7 109+7取模的结果。

输入输出格式

输入的第一行包含一个正整数 n n n,表示障碍物的数量。输入的第二行包括 n n n个非负整数,表示每个障碍物的坐标 a 1 , a 2 , … , a n a_1,a_2,\\dots,a_n a1,a2,,an。保证障碍物坐标严格递增给出。

输出一个非负整数,表示本质不同的美观的种树方案的数量对 1 0 9 + 7 10^9+7 109+7取模的结果。

数据规模

2 < n < = 1000 , 0 < = a i < = 1 0 5 2<n<=1000, 0<=a_i<=10^5 2<n<=1000,0<=ai<=105

算法设计

不妨设数字 n n n不包含自己在内的约数个数为 f i f_i fi,例如数字 6 的约数有 3 个: 1 , 2 , 3 1,2,3 1,2,3。显然,区间 [ a i , a i + 1 ] [a_i,a_i+1] [ai,ai+1]构成的种树方案数量恰好为 f a i + 1 − a i f_a_i+1-a_i fai+1ai(想一想为什么?)。不妨令 d p [ i ] dp[i] dp[i]表示前 i i i个障碍物构成的种树方案数量,我们可以利用一个动态规划算法求解 d p [ i ] dp[i] dp[i]。边界条件为 d p [ 1 ] = 1 dp[1]=1 dp[1]=1。对于第 i i i个障碍物,利用一个set记录遍历过的所有约数,按 i − 1 i-1 i1 1 1 1的顺序枚举CCF CSP-2021-04 赛题练习

CCF-CSP 202209 赛题练习

CCF-CSP 201712 赛题训练

CCF-CSP 201604 赛题训练

CCF-CSP 201612 赛题训练

CCF-CSP 201609 赛题训练