Submission #103425
Source Code Expand
#include<cstdio> #include<vector> #include<iostream> #include<algorithm> #include<cassert> #include<cstdlib> #include<cmath> #include<cstdio> #include<cstring> #include<complex> using namespace std; typedef long long LL; //typedef double LDouble; typedef long double LDouble; //typedef __float128 LDouble; //typedef long long double LDouble; //typedef complex<LDouble> Complex; const double INF = 1e12; typedef vector<LDouble> Poly; // a*b where x^n = c Poly mulPoly(const Poly&a, const Poly&b, const Poly&c) { int n=a.size(); Poly r(n*2); for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { r[i+j] = (r[i+j]+a[i]*b[j]); } } for (int i=n*2; i-->n; ) { for (int j=1; j<=n; j++) { r[i-j] = (r[i-j]+r[i]*c[n-j]); } } r.resize(n); //for (int i=0; i<n; i++) assert(abs((double)r[i]) < INF); return r; } Poly powPoly(Poly a, LL y, const Poly&c) { if (y==0) { int n = a.size(); Poly r(n); r[0]=1; return r; } if (y&1) return mulPoly(a, powPoly(a, y-1, c), c); return powPoly(mulPoly(a, a, c), y>>1, c); } int main() { //printf("double %d\n__float128 %d\nlong double %d\n", sizeof(double), sizeof(__float128), sizeof(long double)); double _p, _q, _r; LDouble p, q, r; LL N, K, M; cin >> _p >> _q >> _r; cin >> N >> K >> M; p=_p; q=_q; r=_r; vector<LDouble> v(N*K+1); LDouble base = p+q+r; v[0] += -r / base; v[1] += r / base; v[N*(K-1)] += -p /base; v[N*(K-1) + 1] += p / base; v[N*K-1] += -q / base; v[N*K] += (p+2*q+r) / base; vector<LDouble>alpha(N*K+1); for (int i=1; i<=N*K; i++) { alpha[i] = (i>=N ? p*alpha[i-N] : 0) + (i>=1 ? q*alpha[i-1] : 0) + (i>=N*K ? r*alpha[i-N*K] : 0) + 1; alpha[i] /= base; } //for (int i=0; i<N*K+1; i++) { printf("%d %f\n", i, double(alpha[i])); } puts(""); Poly beta(N*K+1); beta[1]=1; beta = powPoly(beta, M*N, v); //for (int i=0; i<N*K+1; i++) { printf("%d %f\n", i, double(beta[i])); } puts(""); LDouble ans=0; for (int i=0; i<N*K+1; i++) ans += beta[i] * alpha[i]; printf("%.9f\n", double(ans)); //cout << ans << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | B - Cans of Toys |
User | natsugiri |
Language | C++11 (GCC 4.8.1) |
Score | 0 |
Code Size | 2370 Byte |
Status | WA |
Exec Time | 1267 ms |
Memory | 3104 KB |
Judge Result
Set Name | all | ||||
---|---|---|---|---|---|
Score / Max Score | 0 / 100 | ||||
Status |
|
Set Name | Test Cases |
---|---|
all | 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5, 6, 7, 8, 9 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
1 | AC | 20 ms | 732 KB |
10 | AC | 21 ms | 804 KB |
11 | AC | 21 ms | 808 KB |
12 | AC | 21 ms | 756 KB |
13 | AC | 190 ms | 1316 KB |
14 | AC | 57 ms | 936 KB |
15 | AC | 21 ms | 808 KB |
16 | AC | 33 ms | 928 KB |
17 | AC | 142 ms | 1196 KB |
18 | WA | 899 ms | 2716 KB |
19 | WA | 62 ms | 1068 KB |
2 | AC | 21 ms | 744 KB |
20 | WA | 33 ms | 1060 KB |
21 | WA | 35 ms | 928 KB |
22 | WA | 87 ms | 1184 KB |
23 | WA | 23 ms | 808 KB |
24 | AC | 22 ms | 736 KB |
25 | AC | 20 ms | 928 KB |
26 | AC | 21 ms | 804 KB |
27 | AC | 214 ms | 1188 KB |
28 | AC | 20 ms | 924 KB |
29 | AC | 21 ms | 924 KB |
3 | AC | 19 ms | 796 KB |
30 | AC | 20 ms | 932 KB |
31 | AC | 208 ms | 1184 KB |
32 | AC | 20 ms | 804 KB |
33 | WA | 21 ms | 804 KB |
34 | WA | 22 ms | 924 KB |
35 | WA | 1254 ms | 3104 KB |
36 | AC | 22 ms | 924 KB |
37 | WA | 23 ms | 800 KB |
38 | WA | 23 ms | 932 KB |
39 | WA | 1267 ms | 2996 KB |
4 | AC | 26 ms | 796 KB |
40 | AC | 514 ms | 1960 KB |
41 | WA | 722 ms | 2212 KB |
42 | WA | 457 ms | 1956 KB |
43 | AC | 618 ms | 2208 KB |
44 | WA | 493 ms | 1956 KB |
45 | AC | 142 ms | 1324 KB |
46 | WA | 676 ms | 2208 KB |
47 | WA | 463 ms | 1952 KB |
48 | WA | 582 ms | 2084 KB |
49 | AC | 199 ms | 1560 KB |
5 | AC | 209 ms | 1248 KB |
6 | AC | 22 ms | 800 KB |
7 | AC | 21 ms | 800 KB |
8 | AC | 21 ms | 932 KB |
9 | AC | 20 ms | 800 KB |