Codeforces Round #530 (Div. 2)

A:给你雪球初始的重量和高度,每秒下降一米,每下降一米重量就会增加对应的高度。

      然后给你两个x1,h1和x2,h2表示高度h1会让雪球重量减少x1,高度h2会让雪球重量减少x2(当然还是要增加对应高度),

       雪球最小重量为0,求到h=0的时候雪球的重量。

解:
记录h1和h2,再一个for解决。

 

B:按照题目问最少需要多少根木棒可以(通过补充)摆成n个正方形。

解:
找规律ok

C:给你一个包含小写字母和* ?的字符串,保证* ?前面有字符。*可以删除前面的字符或者保留前面的字符,或者把前一个字符复制任意次。?只能删除前面的字符或者保留前面的字符。问你每个* ?选择使用方式以后,是否能使字符串长度为n。

解:

统计一下 * 和 ?的数量,然后按题意进行填充或删除即可。

 

D:给你n-1个数a[i](2<=i<=n),表示i的祖先是a[i](无向边,保证构成树,1为根节点),然后给你n个数s[i]。

每个节点有权值,但是未知。若i为奇数层节点,则s[i]为从根节点(1号节点)到i号节点的所有点的权值之和(包括第i个点),否则s[i]为-1。现在请你给每个点赋权值,使所有节点的权值之和最小。如果不存在合法方案,输出-1。

解:

只需一个dfs就很容易确定树的奇数层和偶数层的节点。

而要使总权值最小,肯定是让分支节点承担尽可能大的值。于是用一个dp数组

dp[i]=      s[i]                     i为奇数层节点

               min(dp[i],dp[v])  i为偶数层节点,v为i节点的直接子节点

然后再dfs一下,val表示根节点到当前节点的权值和,

对于奇数层的点,如果s[i]<val,那显然是-1了,否则令a[i]=val-s[i]。

对于偶数层的节点,如果dp[i]<val,显然还是-1,否则如果dp[i]未赋值(偶数层的叶子结点)。则a[i]=0即可,否则a[i]=dp[i]-val。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值