結果
問題 | No.66 輝け☆全国たこやき杯 |
ユーザー | 37kt_ |
提出日時 | 2016-03-09 01:38:13 |
言語 | C++11 (gcc 13.3.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 4,411 bytes |
コンパイル時間 | 1,234 ms |
コンパイル使用メモリ | 163,356 KB |
最終ジャッジ日時 | 2024-11-14 19:35:37 |
合計ジャッジ時間 | 1,675 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘std::ostream& operator>>(std::istream&, std::tuple<_Tps ...>&)’: main.cpp:67:94: error: invalid initialization of reference of type ‘std::ostream&’ {aka ‘std::basic_ostream<char>&’} from expression of type ‘std::istream’ {aka ‘std::basic_istream<char>’} 67 | TMP_Ts ostream &operator>>(istream &is, tuple<T...> &x){ input_tuple<0, T...>(is, x); return is; } | ^~
ソースコード
/* template.cpp {{{ */ #include <bits/stdc++.h> using namespace std; // #define int long long #define GET_MACRO(a, b, c, d, NAME, ...) NAME #define REP1(n) REP2(i_, n) #define REP2(i, n) REP3(i, 0, n) #define REP3(i, a, b) REP4(i, a, b, 1) #define REP4(i, a, b, s) for (long long i = (a); i < (long long)(b); i += (long long)(s)) #define RREP1(n) RREP2(i_, n) #define RREP2(i, n) RREP3(i, 0, n) #define RREP3(i, a, b) RREP4(i, a, b, 1) #define RREP4(i, a, b, s) for (long long i = (b) - 1; i >= (long long)(a); i -= (long long)(s)) #define rep(...) GET_MACRO(__VA_ARGS__, REP4, REP3, REP2, REP1)(__VA_ARGS__) #define rrep(...) GET_MACRO(__VA_ARGS__, RREP4, RREP3, RREP2, RREP1)(__VA_ARGS__) #define fs first #define sc second #define all(c) std::begin(c), std::end(c) #define rall(c) (c).begin(), (c).end() #define pcnt(x) __builtin_popcountll(x) #define each(x, c) for (auto &&x : c) #define endl "\n" #define y0 y0_ #define y1 y1_ #define yn yn_ #define left left_ #define right right_ #define TMP_T template<typename T> #define TMP_TU template<typename T, typename U> #define TMP_Ts template<typename ...T> #define TMP_NTs template<size_t N, typename ...T> #define TMP_CT template<bool C, typename T = void> #ifndef DEBUG #define cerr no_output struct NoOutput : ostream { TMP_T ostream &operator<<(const T &){ return *this; } } no_output; #endif using uint = unsigned; using ll = long long; using ull = unsigned long long; using ld = long double; TMP_T using PQL = priority_queue<T, vector<T>, greater<T>>; TMP_T using PQG = priority_queue<T>; TMP_CT using enable_if_t = typename enable_if<C, T>::type; const ll LLINF = 1e18 + 10; #ifndef int const int INF = 1e9 + 10; #else const int INF = LLINF; #endif const int dx[] = {-1, 0, 1, 0, -1, 1, 1, -1}; const int dy[] = {0, -1, 0, 1, -1, -1, 1, 1}; TMP_T inline constexpr T sq(T x){ return x * x; } TMP_TU inline T& chmin(T &x, U y){ if (x > y) x = y; return x; } TMP_TU inline T& chmax(T &x, U y){ if (x < y) x = y; return x; } TMP_NTs enable_if_t<(N >= sizeof...(T))> input_tuple(istream &, tuple<T...> &){} TMP_NTs enable_if_t<(N < sizeof...(T))> input_tuple(istream &is, tuple<T...> &x){ is >> get<N>(x); input_tuple<N + 1, T...>(is, x); } TMP_Ts ostream &operator>>(istream &is, tuple<T...> &x){ input_tuple<0, T...>(is, x); return is; } TMP_TU ostream &operator>>(istream &is, pair<T, U> &x){ return is >> x.first >> x.second; } TMP_NTs enable_if_t<(N >= sizeof...(T))> print_tuple(ostream &, const tuple<T...> &){} TMP_NTs enable_if_t<(N < sizeof...(T))> print_tuple(ostream &os, const tuple<T...> &x){ os << (N > 0 ? " " : "") << get<N>(x); print_tuple<N + 1, T...>(os, x); } TMP_Ts ostream &operator<<(ostream &os, const tuple<T...> &x){ print_tuple<0, T...>(os, x); return os; } TMP_TU ostream &operator<<(ostream &os, const pair<T, U> &x){ return os << x.first << " " << x.second; } TMP_T vector<T> reversed(const vector<T> &c){ auto d = c; reverse(all(d)); return d; } string reversed(const string &s){ auto t = s; reverse(all(t)); return t; } TMP_T void unique(vector<T> &c){ sort(all(c)); c.erase(unique(all(c)), end(c)); } TMP_T vector<T> uniqued(const vector<T> &c){ auto d = c; unique(d); return d; } #undef TMP_T #undef TMP_TU #undef TMP_Ts #undef TMP_NTs #undef TMP_CT ll gcd(ll a, ll b){ return b ? gcd(b, a % b) : a; } ll lcm(ll a, ll b){ return a / gcd(a, b) * b; } tuple<ll, ll, ll> extgcd(ll a, ll b){ if (b){ ll g, x, y; tie(g, x, y) = extgcd(b, a % b); return make_tuple(g, y, x - a / b * y); } return make_tuple(a, 1, 0); } ll invmod(ll a, ll m = 1000000007){ ll g, x; tie(g, x, ignore) = extgcd(a, m); return g == 1 ? (x + m) % m : 0; } inline ll in(){ ll x; cin >> x; return x; } struct prepare { prepare(){ ios::sync_with_stdio(false); cout << fixed << setprecision(12); cerr << fixed << setprecision(12); #ifndef DEBUG cin.tie(nullptr); #endif } } prepare_; /* }}} */ int n, m; double s[2000]; double dp[20][2000]; double calc(int i, int j){ if (i == 0) return 1.0; if (dp[i][j] > -1) return dp[i][j]; int l = (((j >> (i - 1)) ^ 1) << (i - 1)), r = l + (1 << (i - 1)); dp[i][j] = 0.0; rep(k, l, r){ if (k != j) dp[i][j] += calc(i - 1, k) * sq(s[j]) / (sq(s[j]) + sq(s[k])); } return dp[i][j] *= calc(i - 1, j); } signed main(){ cin >> m, n = 1 << m; rep(i, n) cin >> s[i]; fill_n(*dp, 20 * 2000, -1); cout << calc(m, 0) << endl; }