[JLOI2013] Card Game [вероятность дп]

P2059 [JLOI2013] Card Game

Динамическое программирование и вероятность

проблемы деформации Joseph: м карта, каждый случайным образом взять карту, номера карты ми, от 0 до Ми-1 сообщил, что число людей, и спросил каждую вероятность выигрыша.
1 <= п, числа т, карточка <= 50
О Джозеф рекурсивная проблема может быть получена х русских людей, которые фиксированной время победы
F [I] я представляет лиц, которые выигрывают, F [I] = (F [I-1] + X)% п
Рассмотрим индивида я в первом раунде, после отдельных х, из всех х, х + 1 ... 0,1, х-2 перенумерованы 0,1 ... N-2, а затем становится меньшая проблема, в то время как последний победитель в первом раунде у должно быть расположен в положении (у + х)% п
Этот вопрос, предполагается, Fi [I] [J] представляет собой индивидуальное время я, вероятность выигрыша личного J, фи [I] [J] = сигма ((к + миль)% я == J) F [I -1] [к] / м, инициализация фи [1] [0] = 100 (в процентах), конечный результат ц [п] [] на нем.
Может → F [+ 1] из F [I] [J] [(J + х)% (г + 1)], т.е., когда (к + миль)% я == J, когда
 От простого к общему выталкивающему думать, когда вероятность успеха 100% уверена, а затем снова нажмите
 
# include <бит / STDC ++ ч.>
 с использованием  пространства имен STD;
#define Max (х, у) (х)> (у)? (х) :( у)
 #define Min (х, у) (х)> (у)? (у) :( х)
 #define регистр гк
 #define LL долго долго
 Const  INT N = 100 + 5 , М = 0 , инф = 0x3f3f3f3f , Р = 99999997 ;
INT п, т, а [N];
двойная F [N] , [N]; 
Шаблон < класса т> недействительного й (т & х) { 
    х = 0 ; INT ш = 0 ;символ ч = 0 ;
    в то время как вес | = ч == (isdigit (ч)!) ' - ' , ч = GetChar ();
    в то время как (isdigit (ч)) х = (х << 1 ) + (х << 3 ) + (ч ^ 48 ), гл = GetChar (); 
    х ? = ш - х: х; 
} 


INT основных () {
 //     freopen ( "in.txt", "г", STDIN); 
    й (п), й (м);
    для ( INT I = 1 ; я <= т; ++ я) й (а [I]); 
    F [ 1 ] [ 0 ] = F [ 1 ] [ 1 ] = 100,0;
    для ( INT I = 2 ; г <= п; ++ я)
     для ( INT J = 1 , J <= я; ++ к) {
         для ( Int к = 1 ; к <= т; ++ , к) {
         INT х = ([к]% я) [к]%? я: я;
        если (х <у) е [I] [J] + = F [i - 1 ] [JX] / м;
        остальное ,  если (х> к) е [I] [J] + = F [i - 1 ] [I- (Xj)] / м; 
            
        } 
    } 
    Для ( INT I = 1 ; г <= п; ++ я) Е ( " % .2f %%" , Е [п] [I]);
     вернуть  0 ; 
}
 

 

рекомендация

отwww.cnblogs.com/lxyyyy/p/11240946.html