2013-09-09 4 views
0

Я решал эту проблему: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=286&page=show_problem&problem=3268
и я застрял и не нашел подсказок.
Вопрос:Подсчет уникальных наборов?

You will be given an integer n (n<=10^9) now you have to tell how many 
distinct sets of integers are there such that each number from 1 to n can 
be generated uniquely from a set. Also sum of set should be n. eg for n=5 , one such set is: 
{1,2,2} as 
1 can be generated only by { 1 } 
2 by { 2 } 
3 by {1,2} (note the two 2's are indistinguishable) 
4 by {2,2} 
5 by {1,2,2} 
for generating a number each number of a set can be used only once. ie for above set 
we can't do {1,1} to generate 2 as only one 1 is there. 
Also the set {1,2,2} is equivalent to {2,1,2} ie sets are unordered. 

Мой подход:

The conclusion I came to was. Let F(S,k) denote number desired sets of sum S whose 
largest element is k.Then to construct a valid set we can take two paths from this 
state.Either to F(S+k,k) or to F(2*S+1,S+1).I keep a count of how many times I come 
to state where S=n(the desired sum) and do not go further if S becomes > n.This is 
clearly bruteforce which I just wrote to see if my logic was correct(which is correct) 
.But this will give time limit exceed . How do I improve my approach??I have a 
feeling it is done by dp/memoization. 
+1

Как сформулировать проблему, ответ всегда «бесконечно много». Проблема в том, что вы опустили одно из условий, которые были поставлены на исходную проблему вашего источника: все веса должны быть сведены до 'n'. Если вы опустите это условие, вы всегда можете добавить веса к своему набору, которые больше, чем 'n' - например, для' n' = 5, множества '{1,2,2,6}', '{1, 2,2,7} ',' {1,2,2,8} 'и т. Д. Все работает. Набор, который всегда работает, принимает 'n' копии элемента' 1', поэтому у нас всегда есть базовый случай, из которого мы можем перейти. –

+0

(Обратите внимание, что эта проблема на самом деле не связана с наборами, а скорее с объектами, традиционно известными как мультимножество или сумка - набор традиционно не допускает множественные копии одного элемента.) –

+0

thks Я сделал редактирование –

ответ

Смежные вопросы