一周学习总结

成环dp
Circle of Monsters
你在玩另一个电脑游戏,现在你必须杀人n怪物。这些怪物站成一个圆圈,按顺时针方向编号。1到n。最初,i-这个怪物ai健康。

你可以向怪物开枪杀了他们。每一次射击都需要一颗子弹,并降低目标怪物的健康。1(交易)1(对它的损害)。而且,当某个怪物的健康i成0或少于0,它死了,爆炸了,交易bi对下一个怪物(怪物)的伤害i+1,如果i<n,或怪物1,如果i=n)。如果下一个怪物已经死了,那么什么都不会发生。如果爆炸杀死了下一个怪物,它也会爆炸,破坏之后的怪物,并可能引发另一次爆炸,以此类推。

你必须计算出你必须发射的子弹的最小数量才能杀死所有的人。n圈子里的怪物。

输入
第一行包含一个整数。T (1≤T≤150000)-测试用例的数量。

然后测试用例如下,每个测试用例从包含一个整数的一行开始。n (2≤n≤300000)-怪物的数量。然后n每一行都包含两个整数ai和bi (1≤ai,bi≤1012)-i-圆圈里的怪物

保证所有测试用例中的怪物总数不超过300000.

输出量
对于每个测试用例,打印一个整数–你必须发射的最小数量的子弹才能杀死所有的怪物。


输入复制
1
3
7 15
2 14
5 3
输出量复制
6
6
杀死一个怪物需要两部分力量,一部分是爆炸伤害一部分是枪伤,那么子弹数目a=a+max(0,怪物血量-爆炸伤害),但是,一定有一个怪物不可能受到爆炸伤害,那么就需要将这个爆炸伤害补上,即b=min(b,血量-max(0,血量-爆炸伤害)),如果怪物会被炸死,那么子弹耗费数为0,但是这个怪物也有可能被枪打死,所以和零比较,最后由于是站成环所以需要特殊处理一下。(i-1+n)%n(0~n-1),即d[(i-1+n)%n]就可以表示第i的上一个怪物。
看到这题一直在蒙,主要是第一个先死的怪物难以确定,但是如果转换思路,先不考虑第一个谁先死,直接找最优值,然后再对那个要先死的那个进行补刀,就好办多了。
区间dp
区间dp就是用区间来划分阶段,在区间中选出最优值的方法。
1.将区间分开为两部分,中分点k参与到区间中的情况。
石子合并
两堆石子合并为一堆,耗费为两堆石子数之和,求把所有石子和为一堆所耗费最小值。
最小区间长度为2,那么将一个区间分开,前一部分表示一个值后一部分表示另外一个值,不同的分法就有不同的值,在多种值之间找最小的花费,由于无论如何都要花费整个区间的值,所以要加上区间的值。
f[i][j]从i到j的最小花费,f[i][k]+f[k+1][j]+sum(i~j);(k为中分点);
这种题目的特点为将区间分开,分法不同值不同。
这道题目还可以用贪心来做,排序后结合优先队列不难求出答案。

2.将区间分为两部分,但是中分点k不参与其中,而是起到一个判定的作用或作为一个单独的值,或者两种作用都有的情况。
you are the one hdu4283
一群人排成一排,可通过栈调整顺序,第k个出来值为a[i](k-1);求和最小值。
既然为栈,那么第k个人出来,则其之前的人一定出来了,而在他之后的人的值一定要都乘上k,
f[i][j] 由i到j的人的最小值,那么f[i][j]=min(f[i][j],f[i][i+k-1]+a[i]
(k-1)+f[i+k][j]+sum(i+k~j)*k));
在这个表达式中,中分点k并没有加入到区间之中而是作为出来的点单独为一个值。
3题目与区间的左右两点相关,k作为辅助判别的条件或值
uva 10891
有一个数列,A,B两人轮流从左或右中取一个或多个数,都尽量是自己的数列的和最大,求A与B的差值。
f[i][j]表示A,B两个人分摊i~j个数,由于要确保A,和B都得分摊到数,所以,B分别由i+1到j与i到j-1两个区间中选小值,两个边界i,j点是为了确保A能分到数,f[k][j] ,f[i][k],分别表示B的和值。
于是,(i~j-1)f【i】【k】找最小,(i+1到j)f【k】【j】找最小,两者综合找最小,最终sum(i到j)-找到的最小,即为A的值。
在这个题中,起到判别意义的是区间的两个端点,而k是作为辅助找值的工具。

总结
最近自己的懒病又犯了,哎,一个人笨不要紧,但懒很要命,最近老师在讲背包问题,在寒假的时候陪它玩了好长时间还是有些犯浑,但这次突然发现比第一次好像明白多了,哎,好的武功都是练出来的,克服懒惰,克服懒惰,熟能生巧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值