HDU6140Hybrid Crystals(证明题)

来源:互联网 发布:现在开淘宝店好做吗 编辑:程序博客网 时间:2024/06/11 03:59

题意:

给一个正整数序列a[],正整数n,整数k。一个字符序列b[],b[i]==N表示a[i]可取正可取负,b[i]==L表示a[i]只能取正,b[i]==D表示a[i]只能取负:问你能不能从a中选几个数使得和为k

思路:

这道题中的数能组成的数构成了一个连续区间.

一开始只有 a1 的时候能够构成 [−1,1] 中的所有整数.

如果一堆数能够构成 [−a,b] 中的所有整数, 这时候来了一个数x. 如果 x 只能取正值的话, 如果有x≤b, 那么就能够构成[−a,b+x]的所有整数.

如果 x 只能取负值, 如果有x<=a, 那么就能构成[−a−x,b] 的所有整数.

如果 x 可正可负, 如果有x≤min(a,b)那么就能构成[−a−x,b+x]中的所有整数.

然后题目中那个奇怪的不等式就保证了上面的"如果有"的条件.(某个dalao的证明:主要因为他组成序列的条件使得,若k<=lsum,则序列一定可以在b[j]=L||b[j]==N的数中取出几个数组成k(因为序列是 <=1,<=2,<=4,<=8..))

原创粉丝点击