首页 > 其他 > 详细

纪念——代码首次达到近50K

时间:2019-10-26 18:08:53      阅读:128      评论:0      收藏:0      [点我收藏+]
   1 #include<bits/stdc++.h>
   2 #define re register
   3 #define F(A) for(re int (A)=1;(A)<=8;++(A))
   4 using namespace std;
   5 int n,mi[10],sp[10],sa[10],kn[10],MI,SP,SA,KN;
   6 double f[110][10][10][10][10],g[10][20];
   7 double ANS,mig[10],spe[10],san[10],kno[10];
   8 char s[100],s1[100],s2[100],s3[100],s4[100];
   9 double pre[10][20],suf[10][20];
  10 void addmi(int id,int val,double p){
  11     F(i) F(j) F(k) F(l){
  12         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  13         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
  14     }
  15 }
  16 void addsp(int id,int val,double p){
  17     F(i) F(j) F(k) F(l){
  18         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  19         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
  20     }
  21 }
  22 void addsa(int id,int val,double p){
  23     F(i) F(j) F(k) F(l){
  24         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  25         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
  26     }
  27 }
  28 void addkn(int id,int val,double p){
  29     F(i) F(j) F(k) F(l){
  30         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  31         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
  32     }
  33 }
  34 void mimixd(int id,int lim,int val){
  35     F(i) F(j) F(k) F(l){
  36         re double p=pre[mi[i]][lim];
  37         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  38         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  39         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
  40     }
  41 }
  42 void mispxd(int id,int lim,int val){
  43     F(i) F(j) F(k) F(l){
  44         re double p=pre[mi[i]][lim];
  45         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  46         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  47         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
  48     }
  49 }
  50 void misaxd(int id,int lim,int val){
  51     F(i) F(j) F(k) F(l){
  52         re double p=pre[mi[i]][lim];
  53         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  54         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  55         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
  56     }
  57 }
  58 void miknxd(int id,int lim,int val){
  59     F(i) F(j) F(k) F(l){
  60         re double p=pre[mi[i]][lim];
  61         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  62         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  63         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
  64     }
  65 }
  66 void spmixd(int id,int lim,int val){
  67     F(i) F(j) F(k) F(l){
  68         re double p=pre[sp[j]][lim];
  69         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  70         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  71         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
  72     }
  73 }
  74 void spspxd(int id,int lim,int val){
  75     F(i) F(j) F(k) F(l){
  76         re double p=pre[sp[j]][lim];
  77         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  78         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  79         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
  80     }
  81 }
  82 void spsaxd(int id,int lim,int val){
  83     F(i) F(j) F(k) F(l){
  84         re double p=pre[sp[j]][lim];
  85         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  86         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  87         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
  88     }
  89 }
  90 void spknxd(int id,int lim,int val){
  91     F(i) F(j) F(k) F(l){
  92         re double p=pre[sp[j]][lim];
  93         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
  94         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
  95         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
  96     }
  97 }
  98 void samixd(int id,int lim,int val){
  99     F(i) F(j) F(k) F(l){
 100         re double p=pre[sa[k]][lim];
 101         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 102         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 103         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 104     }
 105 }
 106 void saspxd(int id,int lim,int val){
 107     F(i) F(j) F(k) F(l){
 108         re double p=pre[sa[k]][lim];
 109         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 110         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 111         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 112     }
 113 }
 114 void sasaxd(int id,int lim,int val){
 115     F(i) F(j) F(k) F(l){
 116         re double p=pre[sa[k]][lim];
 117         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 118         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 119         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 120     }
 121 }
 122 void saknxd(int id,int lim,int val){
 123     F(i) F(j) F(k) F(l){
 124         re double p=pre[sa[k]][lim];
 125         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 126         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 127         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 128     }
 129 }
 130 void knmixd(int id,int lim,int val){
 131     F(i) F(j) F(k) F(l){
 132         re double p=pre[kn[l]][lim];
 133         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 134         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 135         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 136     }
 137 }
 138 void knspxd(int id,int lim,int val){
 139     F(i) F(j) F(k) F(l){
 140         re double p=pre[kn[l]][lim];
 141         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 142         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 143         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 144     }
 145 }
 146 void knsaxd(int id,int lim,int val){
 147     F(i) F(j) F(k) F(l){
 148         re double p=pre[kn[l]][lim];
 149         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 150         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 151         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 152     }
 153 }
 154 void knknxd(int id,int lim,int val){
 155     F(i) F(j) F(k) F(l){
 156         re double p=pre[kn[l]][lim];
 157         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 158         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 159         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 160     }
 161 }
 162 void mimix(int id,int lim,int val){
 163     F(i) F(j) F(k) F(l){
 164         re double p=pre[mi[i]][lim-1];
 165         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 166         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 167         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 168     }
 169 }
 170 void mispx(int id,int lim,int val){
 171     F(i) F(j) F(k) F(l){
 172         re double p=pre[mi[i]][lim-1];
 173         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 174         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 175         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 176     }
 177 }
 178 void misax(int id,int lim,int val){
 179     F(i) F(j) F(k) F(l){
 180         re double p=pre[mi[i]][lim-1];
 181         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 182         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 183         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 184     }
 185 }
 186 void miknx(int id,int lim,int val){
 187     F(i) F(j) F(k) F(l){
 188         re double p=pre[mi[i]][lim-1];
 189         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 190         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 191         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 192     }
 193 }
 194 void spmix(int id,int lim,int val){
 195     F(i) F(j) F(k) F(l){
 196         re double p=pre[sp[j]][lim-1];
 197         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 198         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 199         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 200     }
 201 }
 202 void spspx(int id,int lim,int val){
 203     F(i) F(j) F(k) F(l){
 204         re double p=pre[sp[j]][lim-1];
 205         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 206         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 207         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 208     }
 209 }
 210 void spsax(int id,int lim,int val){
 211     F(i) F(j) F(k) F(l){
 212         re double p=pre[sp[j]][lim-1];
 213         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 214         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 215         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 216     }
 217 }
 218 void spknx(int id,int lim,int val){
 219     F(i) F(j) F(k) F(l){
 220         re double p=pre[sp[j]][lim-1];
 221         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 222         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 223         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 224     }
 225 }
 226 void samix(int id,int lim,int val){
 227     F(i) F(j) F(k) F(l){
 228         re double p=pre[sa[k]][lim-1];
 229         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 230         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 231         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 232     }
 233 }
 234 void saspx(int id,int lim,int val){
 235     F(i) F(j) F(k) F(l){
 236         re double p=pre[sa[k]][lim-1];
 237         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 238         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 239         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 240     }
 241 }
 242 void sasax(int id,int lim,int val){
 243     F(i) F(j) F(k) F(l){
 244         re double p=pre[sa[k]][lim-1];
 245         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 246         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 247         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 248     }
 249 }
 250 void saknx(int id,int lim,int val){
 251     F(i) F(j) F(k) F(l){
 252         re double p=pre[sa[k]][lim-1];
 253         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 254         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 255         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 256     }
 257 }
 258 void knmix(int id,int lim,int val){
 259     F(i) F(j) F(k) F(l){
 260         re double p=pre[kn[l]][lim-1];
 261         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 262         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 263         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 264     }
 265 }
 266 void knspx(int id,int lim,int val){
 267     F(i) F(j) F(k) F(l){
 268         re double p=pre[kn[l]][lim-1];
 269         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 270         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 271         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 272     }
 273 }
 274 void knsax(int id,int lim,int val){
 275     F(i) F(j) F(k) F(l){
 276         re double p=pre[kn[l]][lim-1];
 277         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 278         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 279         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 280     }
 281 }
 282 void knknx(int id,int lim,int val){
 283     F(i) F(j) F(k) F(l){
 284         re double p=pre[kn[l]][lim-1];
 285         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 286         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 287         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 288     }
 289 }
 290 void mimidd(int id,int lim,int val){
 291     F(i) F(j) F(k) F(l){
 292         re double p=suf[mi[i]][lim];
 293         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 294         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 295         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 296     }
 297 }
 298 void mispdd(int id,int lim,int val){
 299     F(i) F(j) F(k) F(l){
 300         re double p=suf[mi[i]][lim];
 301         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 302         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 303         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 304     }
 305 }
 306 void misadd(int id,int lim,int val){
 307     F(i) F(j) F(k) F(l){
 308         re double p=suf[mi[i]][lim];
 309         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 310         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 311         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 312     }
 313 }
 314 void mikndd(int id,int lim,int val){
 315     F(i) F(j) F(k) F(l){
 316         re double p=suf[mi[i]][lim];
 317         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 318         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 319         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 320     }
 321 }
 322 void spmidd(int id,int lim,int val){
 323     F(i) F(j) F(k) F(l){
 324         re double p=suf[sp[j]][lim];
 325         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 326         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 327         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 328     }
 329 }
 330 void spspdd(int id,int lim,int val){
 331     F(i) F(j) F(k) F(l){
 332         re double p=suf[sp[j]][lim];
 333         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 334         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 335         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 336     }
 337 }
 338 void spsadd(int id,int lim,int val){
 339     F(i) F(j) F(k) F(l){
 340         re double p=suf[sp[j]][lim];
 341         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 342         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 343         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 344     }
 345 }
 346 void spkndd(int id,int lim,int val){
 347     F(i) F(j) F(k) F(l){
 348         re double p=suf[sp[j]][lim];
 349         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 350         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 351         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 352     }
 353 }
 354 void samidd(int id,int lim,int val){
 355     F(i) F(j) F(k) F(l){
 356         re double p=suf[sa[k]][lim];
 357         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 358         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 359         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 360     }
 361 }
 362 void saspdd(int id,int lim,int val){
 363     F(i) F(j) F(k) F(l){
 364         re double p=suf[sa[k]][lim];
 365         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 366         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 367         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 368     }
 369 }
 370 void sasadd(int id,int lim,int val){
 371     F(i) F(j) F(k) F(l){
 372         re double p=suf[sa[k]][lim];
 373         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 374         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 375         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 376     }
 377 }
 378 void sakndd(int id,int lim,int val){
 379     F(i) F(j) F(k) F(l){
 380         re double p=suf[sa[k]][lim];
 381         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 382         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 383         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 384     }
 385 }
 386 void knmidd(int id,int lim,int val){
 387     F(i) F(j) F(k) F(l){
 388         re double p=suf[kn[l]][lim];
 389         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 390         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 391         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 392     }
 393 }
 394 void knspdd(int id,int lim,int val){
 395     F(i) F(j) F(k) F(l){
 396         re double p=suf[kn[l]][lim];
 397         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 398         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 399         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 400     }
 401 }
 402 void knsadd(int id,int lim,int val){
 403     F(i) F(j) F(k) F(l){
 404         re double p=suf[kn[l]][lim];
 405         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 406         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 407         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 408     }
 409 }
 410 void knkndd(int id,int lim,int val){
 411     F(i) F(j) F(k) F(l){
 412         re double p=suf[kn[l]][lim];
 413         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 414         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 415         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 416     }
 417 }
 418 
 419 void mimid(int id,int lim,int val){
 420     F(i) F(j) F(k) F(l){
 421         re double p=suf[mi[i]][lim+1];
 422         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 423         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 424         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 425     }
 426 }
 427 void mispd(int id,int lim,int val){
 428     F(i) F(j) F(k) F(l){
 429         re double p=suf[mi[i]][lim+1];
 430         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 431         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 432         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 433     }
 434 }
 435 void misad(int id,int lim,int val){
 436     F(i) F(j) F(k) F(l){
 437         re double p=suf[mi[i]][lim+1];
 438         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 439         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 440         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 441     }
 442 }
 443 void miknd(int id,int lim,int val){
 444     F(i) F(j) F(k) F(l){
 445         re double p=suf[mi[i]][lim+1];
 446         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 447         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 448         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 449     }
 450 }
 451 void spmid(int id,int lim,int val){
 452     F(i) F(j) F(k) F(l){
 453         re double p=suf[sp[j]][lim+1];
 454         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 455         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 456         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 457     }
 458 }
 459 void spspd(int id,int lim,int val){
 460     F(i) F(j) F(k) F(l){
 461         re double p=suf[sp[j]][lim+1];
 462         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 463         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 464         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 465     }
 466 }
 467 void spsad(int id,int lim,int val){
 468     F(i) F(j) F(k) F(l){
 469         re double p=suf[sp[j]][lim+1];
 470         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 471         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 472         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 473     }
 474 }
 475 void spknd(int id,int lim,int val){
 476     F(i) F(j) F(k) F(l){
 477         re double p=suf[sp[j]][lim+1];
 478         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 479         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 480         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 481     }
 482 }
 483 void samid(int id,int lim,int val){
 484     F(i) F(j) F(k) F(l){
 485         re double p=suf[sa[k]][lim+1];
 486         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 487         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 488         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 489     }
 490 }
 491 void saspd(int id,int lim,int val){
 492     F(i) F(j) F(k) F(l){
 493         re double p=suf[sa[k]][lim+1];
 494         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 495         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 496         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 497     }
 498 }
 499 void sasad(int id,int lim,int val){
 500     F(i) F(j) F(k) F(l){
 501         re double p=suf[sa[k]][lim+1];
 502         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 503         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 504         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 505     }
 506 }
 507 void saknd(int id,int lim,int val){
 508     F(i) F(j) F(k) F(l){
 509         re double p=suf[sa[k]][lim+1];
 510         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 511         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 512         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 513     }
 514 }
 515 void knmid(int id,int lim,int val){
 516     F(i) F(j) F(k) F(l){
 517         re double p=suf[kn[l]][lim+1];
 518         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 519         if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 520         else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
 521     }
 522 }
 523 void knspd(int id,int lim,int val){
 524     F(i) F(j) F(k) F(l){
 525         re double p=suf[kn[l]][lim+1];
 526         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 527         if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 528         else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
 529     }
 530 }
 531 void knsad(int id,int lim,int val){
 532     F(i) F(j) F(k) F(l){
 533         re double p=suf[kn[l]][lim+1];
 534         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 535         if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 536         else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
 537     }
 538 }
 539 void knknd(int id,int lim,int val){
 540     F(i) F(j) F(k) F(l){
 541         re double p=suf[kn[l]][lim+1];
 542         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 543         if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
 544         else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
 545     }
 546 }
 547 void mimixdw(int id,int lim,int val){
 548     re int flag=(val<0)?-1:1;
 549     F(i) F(j) F(k) F(l){
 550         re double p=pre[mi[i]][lim];
 551         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 552         for(re int q=0;q<=16;++q){
 553             re double gl=g[abs(val)][q];
 554             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 555             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 556         }
 557     }
 558 }
 559 void mispxdw(int id,int lim,int val){
 560     re int flag=(val<0)?-1:1;
 561     F(i) F(j) F(k) F(l){
 562         re double p=pre[mi[i]][lim];
 563         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 564         for(re int q=0;q<=16;++q){
 565             re double gl=g[abs(val)][q];
 566             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 567             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 568         }
 569     }
 570 }
 571 void misaxdw(int id,int lim,int val){
 572     re int flag=(val<0)?-1:1;
 573     F(i) F(j) F(k) F(l){
 574         re double p=pre[mi[i]][lim];
 575         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 576         for(re int q=0;q<=16;++q){
 577             re double gl=g[abs(val)][q];
 578             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 579             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 580         }
 581     }
 582 }
 583 void miknxdw(int id,int lim,int val){
 584     re int flag=(val<0)?-1:1;
 585     F(i) F(j) F(k) F(l){
 586         re double p=pre[mi[i]][lim];
 587         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 588         for(re int q=0;q<=16;++q){
 589             re double gl=g[abs(val)][q];
 590             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 591             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 592         }
 593     }
 594 }
 595 void spmixdw(int id,int lim,int val){
 596     re int flag=(val<0)?-1:1;
 597     F(i) F(j) F(k) F(l){
 598         re double p=pre[sp[j]][lim];
 599         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 600         for(re int q=0;q<=16;++q){
 601             re double gl=g[abs(val)][q];
 602             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 603             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 604         }
 605     }
 606 }
 607 void spspxdw(int id,int lim,int val){
 608     re int flag=(val<0)?-1:1;
 609     F(i) F(j) F(k) F(l){
 610         re double p=pre[sp[j]][lim];
 611         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 612         for(re int q=0;q<=16;++q){
 613             re double gl=g[abs(val)][q];
 614             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 615             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 616         }
 617     }
 618 }
 619 void spsaxdw(int id,int lim,int val){
 620     re int flag=(val<0)?-1:1;
 621     F(i) F(j) F(k) F(l){
 622         re double p=pre[sp[j]][lim];
 623         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 624         for(re int q=0;q<=16;++q){
 625             re double gl=g[abs(val)][q];
 626             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 627             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 628         }
 629     }
 630 }
 631 void spknxdw(int id,int lim,int val){
 632     re int flag=(val<0)?-1:1;
 633     F(i) F(j) F(k) F(l){
 634         re double p=pre[sp[j]][lim];
 635         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 636         for(re int q=0;q<=16;++q){
 637             re double gl=g[abs(val)][q];
 638             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 639             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 640         }
 641     }
 642 }
 643 void samixdw(int id,int lim,int val){
 644     re int flag=(val<0)?-1:1;
 645     F(i) F(j) F(k) F(l){
 646         re double p=pre[sa[k]][lim];
 647         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 648         for(re int q=0;q<=16;++q){
 649             re double gl=g[abs(val)][q];
 650             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 651             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 652         }
 653     }
 654 }
 655 void saspxdw(int id,int lim,int val){
 656     re int flag=(val<0)?-1:1;
 657     F(i) F(j) F(k) F(l){
 658         re double p=pre[sa[k]][lim];
 659         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 660         for(re int q=0;q<=16;++q){
 661             re double gl=g[abs(val)][q];
 662             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 663             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 664         }
 665     }
 666 }
 667 void sasaxdw(int id,int lim,int val){
 668     re int flag=(val<0)?-1:1;
 669     F(i) F(j) F(k) F(l){
 670         re double p=pre[sa[k]][lim];
 671         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 672         for(re int q=0;q<=16;++q){
 673             re double gl=g[abs(val)][q];
 674             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 675             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 676         }
 677     }
 678 }
 679 void saknxdw(int id,int lim,int val){
 680     re int flag=(val<0)?-1:1;
 681     F(i) F(j) F(k) F(l){
 682         re double p=pre[sa[k]][lim];
 683         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 684         for(re int q=0;q<=16;++q){
 685             re double gl=g[abs(val)][q];
 686             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 687             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 688         }
 689     }
 690 }
 691 void knmixdw(int id,int lim,int val){
 692     re int flag=(val<0)?-1:1;
 693     F(i) F(j) F(k) F(l){
 694         re double p=pre[kn[l]][lim];
 695         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 696         for(re int q=0;q<=16;++q){
 697             re double gl=g[abs(val)][q];
 698             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 699             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 700         }
 701     }
 702 }
 703 void knspxdw(int id,int lim,int val){
 704     re int flag=(val<0)?-1:1;
 705     F(i) F(j) F(k) F(l){
 706         re double p=pre[kn[l]][lim];
 707         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 708         for(re int q=0;q<=16;++q){
 709             re double gl=g[abs(val)][q];
 710             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 711             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 712         }
 713     }
 714 }
 715 void knsaxdw(int id,int lim,int val){
 716     re int flag=(val<0)?-1:1;
 717     F(i) F(j) F(k) F(l){
 718         re double p=pre[kn[l]][lim];
 719         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 720         for(re int q=0;q<=16;++q){
 721             re double gl=g[abs(val)][q];
 722             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 723             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 724         }
 725     }
 726 }
 727 void knknxdw(int id,int lim,int val){
 728     re int flag=(val<0)?-1:1;
 729     F(i) F(j) F(k) F(l){
 730         re double p=pre[kn[l]][lim];
 731         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 732         for(re int q=0;q<=16;++q){
 733             re double gl=g[abs(val)][q];
 734             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 735             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 736         }
 737     }
 738 }
 739 void mimixw(int id,int lim,int val){
 740     re int flag=(val<0)?-1:1;
 741     F(i) F(j) F(k) F(l){
 742         re double p=pre[mi[i]][lim-1];
 743         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 744         for(re int q=0;q<=16;++q){
 745             re double gl=g[abs(val)][q];
 746             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 747             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 748         }
 749     }
 750 }
 751 void mispxw(int id,int lim,int val){
 752     re int flag=(val<0)?-1:1;
 753     F(i) F(j) F(k) F(l){
 754         re double p=pre[mi[i]][lim-1];
 755         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 756         for(re int q=0;q<=16;++q){
 757             re double gl=g[abs(val)][q];
 758             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 759             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 760         }
 761     }
 762 }
 763 void misaxw(int id,int lim,int val){
 764     re int flag=(val<0)?-1:1;
 765     F(i) F(j) F(k) F(l){
 766         re double p=pre[mi[i]][lim-1];
 767         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 768         for(re int q=0;q<=16;++q){
 769             re double gl=g[abs(val)][q];
 770             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 771             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 772         }
 773     }
 774 }
 775 void miknxw(int id,int lim,int val){
 776     re int flag=(val<0)?-1:1;
 777     F(i) F(j) F(k) F(l){
 778         re double p=pre[mi[i]][lim-1];
 779         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 780         for(re int q=0;q<=16;++q){
 781             re double gl=g[abs(val)][q];
 782             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 783             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 784         }
 785     }
 786 }
 787 void spmixw(int id,int lim,int val){
 788     re int flag=(val<0)?-1:1;
 789     F(i) F(j) F(k) F(l){
 790         re double p=pre[sp[j]][lim-1];
 791         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 792         for(re int q=0;q<=16;++q){
 793             re double gl=g[abs(val)][q];
 794             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 795             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 796         }
 797     }
 798 }
 799 void spspxw(int id,int lim,int val){
 800     re int flag=(val<0)?-1:1;
 801     F(i) F(j) F(k) F(l){
 802         re double p=pre[sp[j]][lim-1];
 803         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 804         for(re int q=0;q<=16;++q){
 805             re double gl=g[abs(val)][q];
 806             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 807             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 808         }
 809     }
 810 }
 811 void spsaxw(int id,int lim,int val){
 812     re int flag=(val<0)?-1:1;
 813     F(i) F(j) F(k) F(l){
 814         re double p=pre[sp[j]][lim-1];
 815         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 816         for(re int q=0;q<=16;++q){
 817             re double gl=g[abs(val)][q];
 818             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 819             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 820         }
 821     }
 822 }
 823 void spknxw(int id,int lim,int val){
 824     re int flag=(val<0)?-1:1;
 825     F(i) F(j) F(k) F(l){
 826         re double p=pre[sp[j]][lim-1];
 827         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 828         for(re int q=0;q<=16;++q){
 829             re double gl=g[abs(val)][q];
 830             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 831             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 832         }
 833     }
 834 }
 835 void samixw(int id,int lim,int val){
 836     re int flag=(val<0)?-1:1;
 837     F(i) F(j) F(k) F(l){
 838         re double p=pre[sa[k]][lim-1];
 839         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 840         for(re int q=0;q<=16;++q){
 841             re double gl=g[abs(val)][q];
 842             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 843             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 844         }
 845     }
 846 }
 847 void saspxw(int id,int lim,int val){
 848     re int flag=(val<0)?-1:1;
 849     F(i) F(j) F(k) F(l){
 850         re double p=pre[sa[k]][lim-1];
 851         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 852         for(re int q=0;q<=16;++q){
 853             re double gl=g[abs(val)][q];
 854             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 855             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 856         }
 857     }
 858 }
 859 void sasaxw(int id,int lim,int val){
 860     re int flag=(val<0)?-1:1;
 861     F(i) F(j) F(k) F(l){
 862         re double p=pre[sa[k]][lim-1];
 863         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 864         for(re int q=0;q<=16;++q){
 865             re double gl=g[abs(val)][q];
 866             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 867             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 868         }
 869     }
 870 }
 871 void saknxw(int id,int lim,int val){
 872     re int flag=(val<0)?-1:1;
 873     F(i) F(j) F(k) F(l){
 874         re double p=pre[sa[k]][lim-1];
 875         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 876         for(re int q=0;q<=16;++q){
 877             re double gl=g[abs(val)][q];
 878             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 879             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 880         }
 881     }
 882 }
 883 void knmixw(int id,int lim,int val){
 884     re int flag=(val<0)?-1:1;
 885     F(i) F(j) F(k) F(l){
 886         re double p=pre[kn[l]][lim-1];
 887         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 888         for(re int q=0;q<=16;++q){
 889             re double gl=g[abs(val)][q];
 890             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 891             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 892         }
 893     }
 894 }
 895 void knspxw(int id,int lim,int val){
 896     re int flag=(val<0)?-1:1;
 897     F(i) F(j) F(k) F(l){
 898         re double p=pre[kn[l]][lim-1];
 899         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 900         for(re int q=0;q<=16;++q){
 901             re double gl=g[abs(val)][q];
 902             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 903             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 904         }
 905     }
 906 }
 907 void knsaxw(int id,int lim,int val){
 908     re int flag=(val<0)?-1:1;
 909     F(i) F(j) F(k) F(l){
 910         re double p=pre[kn[l]][lim-1];
 911         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 912         for(re int q=0;q<=16;++q){
 913             re double gl=g[abs(val)][q];
 914             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 915             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 916         }
 917     }
 918 }
 919 void knknxw(int id,int lim,int val){
 920     re int flag=(val<0)?-1:1;
 921     F(i) F(j) F(k) F(l){
 922         re double p=pre[kn[l]][lim-1];
 923         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 924         for(re int q=0;q<=16;++q){
 925             re double gl=g[abs(val)][q];
 926             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 927             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 928         }
 929     }
 930 }
 931 void mimiddw(int id,int lim,int val){
 932     re int flag=(val<0)?-1:1;
 933     F(i) F(j) F(k) F(l){
 934         re double p=suf[mi[i]][lim];
 935         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 936         for(re int q=0;q<=16;++q){
 937             re double gl=g[abs(val)][q];
 938             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 939             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 940         }
 941     }
 942 }
 943 void mispddw(int id,int lim,int val){
 944     re int flag=(val<0)?-1:1;
 945     F(i) F(j) F(k) F(l){
 946         re double p=suf[mi[i]][lim];
 947         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 948         for(re int q=0;q<=16;++q){
 949             re double gl=g[abs(val)][q];
 950             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 951             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
 952         }
 953     }
 954 }
 955 void misaddw(int id,int lim,int val){
 956     re int flag=(val<0)?-1:1;
 957     F(i) F(j) F(k) F(l){
 958         re double p=suf[mi[i]][lim];
 959         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 960         for(re int q=0;q<=16;++q){
 961             re double gl=g[abs(val)][q];
 962             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 963             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
 964         }
 965     }
 966 }
 967 void miknddw(int id,int lim,int val){
 968     re int flag=(val<0)?-1:1;
 969     F(i) F(j) F(k) F(l){
 970         re double p=suf[mi[i]][lim];
 971         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 972         for(re int q=0;q<=16;++q){
 973             re double gl=g[abs(val)][q];
 974             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 975             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
 976         }
 977     }
 978 }
 979 void spmiddw(int id,int lim,int val){
 980     re int flag=(val<0)?-1:1;
 981     F(i) F(j) F(k) F(l){
 982         re double p=suf[sp[j]][lim];
 983         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 984         for(re int q=0;q<=16;++q){
 985             re double gl=g[abs(val)][q];
 986             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 987             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
 988         }
 989     }
 990 }
 991 void spspddw(int id,int lim,int val){
 992     re int flag=(val<0)?-1:1;
 993     F(i) F(j) F(k) F(l){
 994         re double p=suf[sp[j]][lim];
 995         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
 996         for(re int q=0;q<=16;++q){
 997             re double gl=g[abs(val)][q];
 998             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
 999             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1000         }
1001     }
1002 }
1003 void spsaddw(int id,int lim,int val){
1004     re int flag=(val<0)?-1:1;
1005     F(i) F(j) F(k) F(l){
1006         re double p=suf[sp[j]][lim];
1007         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1008         for(re int q=0;q<=16;++q){
1009             re double gl=g[abs(val)][q];
1010             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1011             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1012         }
1013     }
1014 }
1015 void spknddw(int id,int lim,int val){
1016     re int flag=(val<0)?-1:1;
1017     F(i) F(j) F(k) F(l){
1018         re double p=suf[sp[j]][lim];
1019         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1020         for(re int q=0;q<=16;++q){
1021             re double gl=g[abs(val)][q];
1022             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1023             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1024         }
1025     }
1026 }
1027 void samiddw(int id,int lim,int val){
1028     re int flag=(val<0)?-1:1;
1029     F(i) F(j) F(k) F(l){
1030         re double p=suf[sa[k]][lim];
1031         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1032         for(re int q=0;q<=16;++q){
1033             re double gl=g[abs(val)][q];
1034             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1035             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1036         }
1037     }
1038 }
1039 void saspddw(int id,int lim,int val){
1040     re int flag=(val<0)?-1:1;
1041     F(i) F(j) F(k) F(l){
1042         re double p=suf[sa[k]][lim];
1043         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1044         for(re int q=0;q<=16;++q){
1045             re double gl=g[abs(val)][q];
1046             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1047             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1048         }
1049     }
1050 }
1051 void sasaddw(int id,int lim,int val){
1052     re int flag=(val<0)?-1:1;
1053     F(i) F(j) F(k) F(l){
1054         re double p=suf[sa[k]][lim];
1055         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1056         for(re int q=0;q<=16;++q){
1057             re double gl=g[abs(val)][q];
1058             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1059             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1060         }
1061     }
1062 }
1063 void saknddw(int id,int lim,int val){
1064     re int flag=(val<0)?-1:1;
1065     F(i) F(j) F(k) F(l){
1066         re double p=suf[sa[k]][lim];
1067         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1068         for(re int q=0;q<=16;++q){
1069             re double gl=g[abs(val)][q];
1070             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1071             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1072         }
1073     }
1074 }
1075 void knmiddw(int id,int lim,int val){
1076     re int flag=(val<0)?-1:1;
1077     F(i) F(j) F(k) F(l){
1078         re double p=suf[kn[l]][lim];
1079         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1080         for(re int q=0;q<=16;++q){
1081             re double gl=g[abs(val)][q];
1082             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1083             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1084         }
1085     }
1086 }
1087 void knspddw(int id,int lim,int val){
1088     re int flag=(val<0)?-1:1;
1089     F(i) F(j) F(k) F(l){
1090         re double p=suf[kn[l]][lim];
1091         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1092         for(re int q=0;q<=16;++q){
1093             re double gl=g[abs(val)][q];
1094             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1095             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1096         }
1097     }
1098 }
1099 void knsaddw(int id,int lim,int val){
1100     re int flag=(val<0)?-1:1;
1101     F(i) F(j) F(k) F(l){
1102         re double p=suf[kn[l]][lim];
1103         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1104         for(re int q=0;q<=16;++q){
1105             re double gl=g[abs(val)][q];
1106             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1107             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1108         }
1109     }
1110 }
1111 void knknddw(int id,int lim,int val){
1112     re int flag=(val<0)?-1:1;
1113     F(i) F(j) F(k) F(l){
1114         re double p=suf[kn[l]][lim];
1115         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1116         for(re int q=0;q<=16;++q){
1117             re double gl=g[abs(val)][q];
1118             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1119             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1120         }
1121     }
1122 }
1123 void mimidw(int id,int lim,int val){
1124     re int flag=(val<0)?-1:1;
1125     F(i) F(j) F(k) F(l){
1126         re double p=suf[mi[i]][lim+1];
1127         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1128         for(re int q=0;q<=16;++q){
1129             re double gl=g[abs(val)][q];
1130             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1131             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1132         }
1133     }
1134 }
1135 void mispdw(int id,int lim,int val){
1136     re int flag=(val<0)?-1:1;
1137     F(i) F(j) F(k) F(l){
1138         re double p=suf[mi[i]][lim+1];
1139         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1140         for(re int q=0;q<=16;++q){
1141             re double gl=g[abs(val)][q];
1142             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1143             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1144         }
1145     }
1146 }
1147 void misadw(int id,int lim,int val){
1148     re int flag=(val<0)?-1:1;
1149     F(i) F(j) F(k) F(l){
1150         re double p=suf[mi[i]][lim+1];
1151         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1152         for(re int q=0;q<=16;++q){
1153             re double gl=g[abs(val)][q];
1154             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1155             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1156         }
1157     }
1158 }
1159 void mikndw(int id,int lim,int val){
1160     re int flag=(val<0)?-1:1;
1161     F(i) F(j) F(k) F(l){
1162         re double p=suf[mi[i]][lim+1];
1163         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1164         for(re int q=0;q<=16;++q){
1165             re double gl=g[abs(val)][q];
1166             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1167             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1168         }
1169     }
1170 }
1171 void spmidw(int id,int lim,int val){
1172     re int flag=(val<0)?-1:1;
1173     F(i) F(j) F(k) F(l){
1174         re double p=suf[sp[j]][lim+1];
1175         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1176         for(re int q=0;q<=16;++q){
1177             re double gl=g[abs(val)][q];
1178             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1179             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1180         }
1181     }
1182 }
1183 void spspdw(int id,int lim,int val){
1184     re int flag=(val<0)?-1:1;
1185     F(i) F(j) F(k) F(l){
1186         re double p=suf[sp[j]][lim+1];
1187         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1188         for(re int q=0;q<=16;++q){
1189             re double gl=g[abs(val)][q];
1190             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1191             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1192         }
1193     }
1194 }
1195 void spsadw(int id,int lim,int val){
1196     re int flag=(val<0)?-1:1;
1197     F(i) F(j) F(k) F(l){
1198         re double p=suf[sp[j]][lim+1];
1199         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1200         for(re int q=0;q<=16;++q){
1201             re double gl=g[abs(val)][q];
1202             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1203             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1204         }
1205     }
1206 }
1207 void spkndw(int id,int lim,int val){
1208     re int flag=(val<0)?-1:1;
1209     F(i) F(j) F(k) F(l){
1210         re double p=suf[sp[j]][lim+1];
1211         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1212         for(re int q=0;q<=16;++q){
1213             re double gl=g[abs(val)][q];
1214             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1215             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1216         }
1217     }
1218 }
1219 void samidw(int id,int lim,int val){
1220     re int flag=(val<0)?-1:1;
1221     F(i) F(j) F(k) F(l){
1222         re double p=suf[sa[k]][lim+1];
1223         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1224         for(re int q=0;q<=16;++q){
1225             re double gl=g[abs(val)][q];
1226             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1227             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1228         }
1229     }
1230 }
1231 void saspdw(int id,int lim,int val){
1232     re int flag=(val<0)?-1:1;
1233     F(i) F(j) F(k) F(l){
1234         re double p=suf[sa[k]][lim+1];
1235         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1236         for(re int q=0;q<=16;++q){
1237             re double gl=g[abs(val)][q];
1238             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1239             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1240         }
1241     }
1242 }
1243 void sasadw(int id,int lim,int val){
1244     re int flag=(val<0)?-1:1;
1245     F(i) F(j) F(k) F(l){
1246         re double p=suf[sa[k]][lim+1];
1247         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1248         for(re int q=0;q<=16;++q){
1249             re double gl=g[abs(val)][q];
1250             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1251             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1252         }
1253     }
1254 }
1255 void sakndw(int id,int lim,int val){
1256     re int flag=(val<0)?-1:1;
1257     F(i) F(j) F(k) F(l){
1258         re double p=suf[sa[k]][lim+1];
1259         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1260         for(re int q=0;q<=16;++q){
1261             re double gl=g[abs(val)][q];
1262             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1263             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1264         }
1265     }
1266 }
1267 void knmidw(int id,int lim,int val){
1268     re int flag=(val<0)?-1:1;
1269     F(i) F(j) F(k) F(l){
1270         re double p=suf[kn[l]][lim+1];
1271         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1272         for(re int q=0;q<=16;++q){
1273             re double gl=g[abs(val)][q];
1274             if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1275             else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1276         }
1277     }
1278 }
1279 void knspdw(int id,int lim,int val){
1280     re int flag=(val<0)?-1:1;
1281     F(i) F(j) F(k) F(l){
1282         re double p=suf[kn[l]][lim+1];
1283         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1284         for(re int q=0;q<=16;++q){
1285             re double gl=g[abs(val)][q];
1286             if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1287             else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1288         }
1289     }
1290 }
1291 void knsadw(int id,int lim,int val){
1292     re int flag=(val<0)?-1:1;
1293     F(i) F(j) F(k) F(l){
1294         re double p=suf[kn[l]][lim+1];
1295         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1296         for(re int q=0;q<=16;++q){
1297             re double gl=g[abs(val)][q];
1298             if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1299             else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1300         }
1301     }
1302 }
1303 void knkndw(int id,int lim,int val){
1304     re int flag=(val<0)?-1:1;
1305     F(i) F(j) F(k) F(l){
1306         re double p=suf[kn[l]][lim+1];
1307         f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1308         for(re int q=0;q<=16;++q){
1309             re double gl=g[abs(val)][q];
1310             if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1311             else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1312         }
1313     }
1314 }
1315 signed main(){
1316     scanf("%s%d",s+1,&MI);F(i) mi[i]=s[i]-0;
1317     scanf("%s%d",s+1,&SP);F(i) sp[i]=s[i]-0;
1318     scanf("%s%d",s+1,&SA);F(i) sa[i]=s[i]-0;
1319     scanf("%s%d",s+1,&KN);F(i) kn[i]=s[i]-0;
1320     f[0][MI][SP][SA][KN]=1.0; 
1321     scanf("%d",&n);  g[0][0]=1.0;
1322     for(re int i=0;i<8;++i)
1323         for(re int j=0;j<=16;++j){
1324             g[i+1][j+0]+=g[i][j]*1.0/3.0;
1325             g[i+1][j+1]+=g[i][j]*1.0/3.0;
1326             g[i+1][j+2]+=g[i][j]*1.0/3.0;
1327         }
1328     for(re int i=1;i<=8;++i){
1329         pre[i][0]=g[i][0];
1330         for(re int j=1;j<=16;++j)
1331             pre[i][j]=g[i][j]+pre[i][j-1];
1332     }
1333     for(re int i=8;i>=1;--i){
1334         suf[i][17]=g[i][17];
1335         for(re int j=16;j>=0;--j)
1336             suf[i][j]=g[i][j]+suf[i][j+1];
1337     }
1338     for(re int id=1;id<=n;++id){
1339         scanf("%s%s",s1+1,s2+1);
1340         if(s2[1]==+||s2[1]==-){
1341             re int val=s2[2]-0;
1342             if(s2[1]==-) val=-val;
1343             if(s2[3]==?){
1344                 re int dat=abs(val); 
1345                 re int flag=(s2[1]==-)?-1:1;
1346                 for(re int i=0;i<=16;++i){
1347                     if(s1[2]==i) addmi(id,i*flag,g[dat][i]);
1348                     if(s1[2]==p) addsp(id,i*flag,g[dat][i]);
1349                     if(s1[2]==a) addsa(id,i*flag,g[dat][i]);
1350                     if(s1[2]==n) addkn(id,i*flag,g[dat][i]);
1351                 }
1352             }
1353             else{
1354                 if(s1[2]==i) addmi(id,val,1);
1355                 if(s1[2]==p) addsp(id,val,1);
1356                 if(s1[2]==a) addsa(id,val,1);
1357                 if(s1[2]==n) addkn(id,val,1);
1358             }
1359             continue;
1360         }
1361         else if(s2[1]==>||s2[1]==<){
1362             re int dat;
1363             scanf("%d%s%s",&dat,s3+1,s4+1);
1364             re int val=s4[2]-0;
1365             re int flag=(s4[1]==-)?-1:1;
1366             if(s4[3]==?){
1367                 if(s2[1]==>&&s2[2]===){
1368                     if(s1[2]==i){
1369                         if(s3[2]==i) mimiddw(id,dat,val*flag);
1370                         if(s3[2]==p) mispddw(id,dat,val*flag);
1371                         if(s3[2]==a) misaddw(id,dat,val*flag);
1372                         if(s3[2]==n) miknddw(id,dat,val*flag);    
1373                         continue;
1374                     }
1375                     if(s1[2]==p){
1376                         if(s3[2]==i) spmiddw(id,dat,val*flag);
1377                         if(s3[2]==p) spspddw(id,dat,val*flag);
1378                         if(s3[2]==a) spsaddw(id,dat,val*flag);
1379                         if(s3[2]==n) spknddw(id,dat,val*flag);
1380                         continue;
1381                     }
1382                     if(s1[2]==a){
1383                         if(s3[2]==i) samiddw(id,dat,val*flag);
1384                         if(s3[2]==p) saspddw(id,dat,val*flag);
1385                         if(s3[2]==a) sasaddw(id,dat,val*flag);
1386                         if(s3[2]==n) saknddw(id,dat,val*flag);
1387                         continue;
1388                     }
1389                     if(s1[2]==n){
1390                         if(s3[2]==i) knmiddw(id,dat,val*flag);
1391                         if(s3[2]==p) knspddw(id,dat,val*flag);
1392                         if(s3[2]==a) knsaddw(id,dat,val*flag);
1393                         if(s3[2]==n) knknddw(id,dat,val*flag);
1394                         continue;
1395                     }
1396                 }
1397                 else if(s2[1]==<&&s2[2]===){
1398                     if(s1[2]==i){
1399                         if(s3[2]==i) mimixdw(id,dat,val*flag);
1400                         if(s3[2]==p) mispxdw(id,dat,val*flag);
1401                         if(s3[2]==a) misaxdw(id,dat,val*flag);
1402                         if(s3[2]==n) miknxdw(id,dat,val*flag);
1403                         continue;    
1404                     }
1405                     if(s1[2]==p){
1406                         if(s3[2]==i) spmixdw(id,dat,val*flag);
1407                         if(s3[2]==p) spspxdw(id,dat,val*flag);
1408                         if(s3[2]==a) spsaxdw(id,dat,val*flag);
1409                         if(s3[2]==n) spknxdw(id,dat,val*flag);
1410                         continue;
1411                     }
1412                     if(s1[2]==a){
1413                         if(s3[2]==i) samixdw(id,dat,val*flag);
1414                         if(s3[2]==p) saspxdw(id,dat,val*flag);
1415                         if(s3[2]==a) sasaxdw(id,dat,val*flag);
1416                         if(s3[2]==n) saknxdw(id,dat,val*flag);
1417                         continue;
1418                     }
1419                     if(s1[2]==n){
1420                         if(s3[2]==i) knmixdw(id,dat,val*flag);
1421                         if(s3[2]==p) knspxdw(id,dat,val*flag);
1422                         if(s3[2]==a) knsaxdw(id,dat,val*flag);
1423                         if(s3[2]==n) knknxdw(id,dat,val*flag);
1424                         continue;
1425                     }
1426                 }
1427                 else if(s2[1]==>){
1428                     if(s1[2]==i){
1429                         if(s3[2]==i) mimidw(id,dat,val*flag);
1430                         if(s3[2]==p) mispdw(id,dat,val*flag);
1431                         if(s3[2]==a) misadw(id,dat,val*flag);
1432                         if(s3[2]==n) mikndw(id,dat,val*flag);    
1433                         continue;
1434                     }
1435                     if(s1[2]==p){
1436                         if(s3[2]==i) spmidw(id,dat,val*flag);
1437                         if(s3[2]==p) spspdw(id,dat,val*flag);
1438                         if(s3[2]==a) spsadw(id,dat,val*flag);
1439                         if(s3[2]==n) spkndw(id,dat,val*flag);
1440                         continue;
1441                     }
1442                     if(s1[2]==a){
1443                         if(s3[2]==i) samidw(id,dat,val*flag);
1444                         if(s3[2]==p) saspdw(id,dat,val*flag);
1445                         if(s3[2]==a) sasadw(id,dat,val*flag);
1446                         if(s3[2]==n) sakndw(id,dat,val*flag);
1447                         continue;
1448                     }
1449                     if(s1[2]==n){
1450                         if(s3[2]==i) knmidw(id,dat,val*flag);
1451                         if(s3[2]==p) knspdw(id,dat,val*flag);
1452                         if(s3[2]==a) knsadw(id,dat,val*flag);
1453                         if(s3[2]==n) knkndw(id,dat,val*flag);
1454                         continue;
1455                     }
1456                 }
1457                 else if(s2[1]==<){
1458                     if(s1[2]==i){
1459                         if(s3[2]==i) mimixw(id,dat,val*flag);
1460                         if(s3[2]==p) mispxw(id,dat,val*flag);
1461                         if(s3[2]==a) misaxw(id,dat,val*flag);
1462                         if(s3[2]==n) miknxw(id,dat,val*flag);    
1463                         continue;
1464                     }
1465                     if(s1[2]==p){
1466                         if(s3[2]==i) spmixw(id,dat,val*flag);
1467                         if(s3[2]==p) spspxw(id,dat,val*flag);
1468                         if(s3[2]==a) spsaxw(id,dat,val*flag);
1469                         if(s3[2]==n) spknxw(id,dat,val*flag);
1470                         continue;
1471                     }
1472                     if(s1[2]==a){
1473                         if(s3[2]==i) samixw(id,dat,val*flag);
1474                         if(s3[2]==p) saspxw(id,dat,val*flag);
1475                         if(s3[2]==a) sasaxw(id,dat,val*flag);
1476                         if(s3[2]==n) saknxw(id,dat,val*flag);
1477                         continue;
1478                     }
1479                     if(s1[2]==n){
1480                         if(s3[2]==i) knmixw(id,dat,val*flag);
1481                         if(s3[2]==p) knspxw(id,dat,val*flag);
1482                         if(s3[2]==a) knsaxw(id,dat,val*flag);
1483                         if(s3[2]==n) knknxw(id,dat,val*flag);
1484                         continue;
1485                     }
1486                 }
1487             }
1488             else{
1489                 if(s2[1]==>&&s2[2]===){
1490                     if(s1[2]==i){
1491                         if(s3[2]==i) mimidd(id,dat,val*flag);
1492                         if(s3[2]==p) mispdd(id,dat,val*flag);
1493                         if(s3[2]==a) misadd(id,dat,val*flag);
1494                         if(s3[2]==n) mikndd(id,dat,val*flag);    
1495                         continue;
1496                     }
1497                     if(s1[2]==p){
1498                         if(s3[2]==i) spmidd(id,dat,val*flag);
1499                         if(s3[2]==p) spspdd(id,dat,val*flag);
1500                         if(s3[2]==a) spsadd(id,dat,val*flag);
1501                         if(s3[2]==n) spkndd(id,dat,val*flag);
1502                         continue;
1503                     }
1504                     if(s1[2]==a){
1505                         if(s3[2]==i) samidd(id,dat,val*flag);
1506                         if(s3[2]==p) saspdd(id,dat,val*flag);
1507                         if(s3[2]==a) sasadd(id,dat,val*flag);
1508                         if(s3[2]==n) sakndd(id,dat,val*flag);
1509                         continue;
1510                     }
1511                     if(s1[2]==n){
1512                         if(s3[2]==i) knmidd(id,dat,val*flag);
1513                         if(s3[2]==p) knspdd(id,dat,val*flag);
1514                         if(s3[2]==a) knsadd(id,dat,val*flag);
1515                         if(s3[2]==n) knkndd(id,dat,val*flag);
1516                         continue;
1517                     }
1518                 }
1519                 else if(s2[1]==<&&s2[2]===){
1520                     if(s1[2]==i){
1521                         if(s3[2]==i) mimixd(id,dat,val*flag);
1522                         if(s3[2]==p) mispxd(id,dat,val*flag);
1523                         if(s3[2]==a) misaxd(id,dat,val*flag);
1524                         if(s3[2]==n) miknxd(id,dat,val*flag);    
1525                         continue;
1526                     }
1527                     if(s1[2]==p){
1528                         if(s3[2]==i) spmixd(id,dat,val*flag);
1529                         if(s3[2]==p) spspxd(id,dat,val*flag);
1530                         if(s3[2]==a) spsaxd(id,dat,val*flag);
1531                         if(s3[2]==n) spknxd(id,dat,val*flag);
1532                         continue;
1533                     }
1534                     if(s1[2]==a){
1535                         if(s3[2]==i) samixd(id,dat,val*flag);
1536                         if(s3[2]==p) saspxd(id,dat,val*flag);
1537                         if(s3[2]==a) sasaxd(id,dat,val*flag);
1538                         if(s3[2]==n) saknxd(id,dat,val*flag);
1539                         continue;
1540                     }
1541                     if(s1[2]==n){
1542                         if(s3[2]==i) knmixd(id,dat,val*flag);
1543                         if(s3[2]==p) knspxd(id,dat,val*flag);
1544                         if(s3[2]==a) knsaxd(id,dat,val*flag);
1545                         if(s3[2]==n) knknxd(id,dat,val*flag);
1546                         continue;
1547                     }
1548                 }
1549                 else if(s2[1]==>){
1550                     if(s1[2]==i){
1551                         if(s3[2]==i) mimid(id,dat,val*flag);
1552                         if(s3[2]==p) mispd(id,dat,val*flag);
1553                         if(s3[2]==a) misad(id,dat,val*flag);
1554                         if(s3[2]==n) miknd(id,dat,val*flag);    
1555                         continue;
1556                     }
1557                     if(s1[2]==p){
1558                         if(s3[2]==i) spmid(id,dat,val*flag);
1559                         if(s3[2]==p) spspd(id,dat,val*flag);
1560                         if(s3[2]==a) spsad(id,dat,val*flag);
1561                         if(s3[2]==n) spknd(id,dat,val*flag);
1562                         continue;
1563                     }
1564                     if(s1[2]==a){
1565                         if(s3[2]==i) samid(id,dat,val*flag);
1566                         if(s3[2]==p) saspd(id,dat,val*flag);
1567                         if(s3[2]==a) sasad(id,dat,val*flag);
1568                         if(s3[2]==n) saknd(id,dat,val*flag);
1569                         continue;
1570                     }
1571                     if(s1[2]==n){
1572                         if(s3[2]==i) knmid(id,dat,val*flag);
1573                         if(s3[2]==p) knspd(id,dat,val*flag);
1574                         if(s3[2]==a) knsad(id,dat,val*flag);
1575                         if(s3[2]==n) knknd(id,dat,val*flag);
1576                         continue;
1577                     }
1578                 }
1579                 else if(s2[1]==<){
1580                     if(s1[2]==i){
1581                         if(s3[2]==i) mimix(id,dat,val*flag);
1582                         if(s3[2]==p) mispx(id,dat,val*flag);
1583                         if(s3[2]==a) misax(id,dat,val*flag);
1584                         if(s3[2]==n) miknx(id,dat,val*flag);    
1585                         continue;
1586                     }
1587                     if(s1[2]==p){
1588                         if(s3[2]==i) spmix(id,dat,val*flag);
1589                         if(s3[2]==p) spspx(id,dat,val*flag);
1590                         if(s3[2]==a) spsax(id,dat,val*flag);
1591                         if(s3[2]==n) spknx(id,dat,val*flag);
1592                         continue;
1593                     }
1594                     if(s1[2]==a){
1595                         if(s3[2]==i) samix(id,dat,val*flag);
1596                         if(s3[2]==p) saspx(id,dat,val*flag);
1597                         if(s3[2]==a) sasax(id,dat,val*flag);
1598                         if(s3[2]==n) saknx(id,dat,val*flag);
1599                         continue;
1600                     }
1601                     if(s1[2]==n){
1602                         if(s3[2]==i) knmix(id,dat,val*flag);
1603                         if(s3[2]==p) knspx(id,dat,val*flag);
1604                         if(s3[2]==a) knsax(id,dat,val*flag);
1605                         if(s3[2]==n) knknx(id,dat,val*flag);
1606                         continue;
1607                     }
1608                 }
1609             }
1610         }
1611     }
1612     printf("%.2lf\n",ANS*100.0);
1613     F(i) F(j) F(k) F(l){
1614         mig[mi[i]]+=f[n][i][j][k][l];
1615         spe[sp[j]]+=f[n][i][j][k][l];
1616         san[sa[k]]+=f[n][i][j][k][l];
1617         kno[kn[l]]+=f[n][i][j][k][l];
1618     }
1619     F(i) printf("%.2lf ",mig[i]*100.0);puts("");
1620     F(i) printf("%.2lf ",spe[i]*100.0);puts("");
1621     F(i) printf("%.2lf ",san[i]*100.0);puts("");
1622     F(i) printf("%.2lf ",kno[i]*100.0);puts("");
1623 }

只剩感慨。。(真TM难调)

纪念——代码首次达到近50K

原文:https://www.cnblogs.com/Hzoi-lyl/p/11743864.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!