結果
問題 | No.314 ケンケンパ |
ユーザー |
![]() |
提出日時 | 2019-05-19 00:50:32 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 5,657 bytes |
コンパイル時間 | 886 ms |
コンパイル使用メモリ | 113,448 KB |
最終ジャッジ日時 | 2025-01-07 03:46:13 |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp:94:107: error: redefinition of default argument for ‘typename std::enable_if<(! has_begin<T>::value), std::nullptr_t>::type <anonymous>’ 94 | template<class Primitive, class... Tail, std::enable_if_t<!has_begin<Primitive>::value, std::nullptr_t> = nullptr>inline void print(std::list<std::string> & str, const Primitive & x, const Tail & ... tail) { std::cout << *str.begin() << ":" << x << " "; if (sizeof...(tail) > 0) { std::cout << "\n"; str.pop_front(); print(str, tail...); } } | ^~~~~~~ main.cpp:90:156: note: original definition appeared here 90 | inline void print(std::list<std::string> & str); template<class Primitive, class... Tail, std::enable_if_t<!has_begin<Primitive>::value, std::nullptr_t> = nullptr>inline void print(std::list<std::string> & str, const Primitive & x, const Tail & ... tail); template<class Container, class... Tail>inline auto print(std::list<std::string> & str, const Container & c, const Tail & ... tail) -> decltype(c.begin()); template<class... Tail>inline void print(std::list<std::string> & str, const std::string & s, const Tail & ... tail); | ^~~~~~~
ソースコード
#include <iostream>#include <iomanip>#include <string>#include <cmath>#include <algorithm>#include <vector>#include <set>#include <map>#include <unordered_map>#include <unordered_set>#include <list>#include <stack>#include <queue>#include <bitset>#include <numeric>/* (=^o^=) */#define int ll/* macro */#define FOR(i, b, e) for(ll i = (ll)(b); i < (ll)(e); ++i)#define RFOR(i, b, e) for(ll i = (ll)(e-1); i >= (ll)(b); --i)#define REP(i, n) FOR(i, 0, n)#define RREP(i, n) RFOR(i, 0, n)#define REPC(x,c) for(const auto& x:(c))#define REPI2(it,b,e) for(auto it = (b); it != (e); ++it)#define REPI(it,c) REPI2(it, (c).begin(), (c).end())#define RREPI(it,c) REPI2(it, (c).rbegin(), (c).rend())#define REPI_ERACE2(it, b, e) for(auto it = (b); it != (e);)#define REPI_ERACE(it, c) REPI_ERACE2(it, (c).begin(), (c).end())#define ALL(x) (x).begin(),(x).end()#define cauto const auto&/* macro func */#define SORT(x) do{sort(ALL(x));}while(false)#define RSORT(x) do{sort((x).rbegin(),(x).rend());}while(false)#define UNIQUE(v) do{v.erase( unique(v.begin(), v.end()), v.end() );}while(false)#define MAX(x,y) do{x = std::max(x,y);}while(false)#define MIN(x,y) do{x = std::min(x,y);}while(false)#define BR do{cout<<"\n";}while(false)#define dump(...) do{ auto __DUMP_NAME_LIST__ = split(#__VA_ARGS__,','); print(__DUMP_NAME_LIST__, __VA_ARGS__);BR;}while(false)/* type define */using ll = long long;using PAIR = std::pair<ll, ll>;using VS = std::vector<std::string>;using VL = std::vector<long long>;using VVL = std::vector<VL>;using VVVL = std::vector<VVL>;using VD = std::vector<double>;/* using std */using std::cout;constexpr char endl = '\n';using std::cin;using std::sort;using std::pair;using std::string;using std::stack;using std::queue;using std::vector;using std::list;using std::map;using std::unordered_map;using std::multimap;using std::unordered_multimap;using std::set;using std::unordered_set;using std::unordered_multiset;using std::multiset;using std::bitset;using std::priority_queue;/* constant value */constexpr ll MOD = 1000000007;//constexpr ll MOD = 998244353;/* Initial processing */struct Preprocessing { Preprocessing() { std::cin.tie(0); std::ios::sync_with_stdio(0); }; }_Preprocessing;/* define hash */namespace std { template <> class hash<std::pair<ll, ll>> { public: size_t operator()(const std::pair<ll, ll>& x) const { return hash<ll>()(1000000000 * x.first + x.second); } }; }/* input output */template<class T> std::istream& operator >> (std::istream& is, vector<T>& vec) { for (T& x : vec) is >> x; return is; }template<class S, class T>std::ostream& operator<<(std::ostream & os, const std::pair<S, T> & p) { os << "(" << p.first << ", " << p.second << ")";return os; }/* for dump function */inline std::list<std::string> split(std::string str, char del) { std::list<std::string> sList; string s = ""; for (const auto& c : str) { if (c ==del) { sList.emplace_back(s); s = ""; } else { if (c != ' ' || del == ' ') { s += c; } } }sList.emplace_back(s); return sList; }template<class T>struct has_begin { private: template <class U> static auto check(U x) -> decltype(x.begin(), std::true_type{}); static std::false_type check(...); public: static bool const value = decltype(check(std::declval<T>()))::value; };inline void print(std::list<std::string> & str); template<class Primitive, class... Tail, std::enable_if_t<!has_begin<Primitive>::value, std::nullptr_t> = nullptr>inline void print(std::list<std::string> & str, const Primitive & x, const Tail & ... tail); template<class Container,class... Tail>inline auto print(std::list<std::string> & str, const Container & c, const Tail & ... tail) -> decltype(c.begin()); template<class... Tail>inline void print(std::list<std::string> & str, const std::string & s, const Tail & ... tail);template<class Container>inline auto printSingle(const Container & c) ->decltype(c.begin()) { for (const auto& x : c) { std::cout << x << " "; }std::cout << "\n"; return c.begin(); }template<class Primitive, std::enable_if_t<!has_begin<Primitive>::value, std::nullptr_t> = nullptr>inline void printSingle(const Primitive & x) { std::cout << x << " "; }inline void print(std::list<std::string> & str) {}template<class Primitive, class... Tail, std::enable_if_t<!has_begin<Primitive>::value, std::nullptr_t> = nullptr>inline void print(std::list<std::string> & str, const Primitive & x, const Tail & ... tail) { std::cout << *str.begin() << ":" << x << " "; if (sizeof...(tail) > 0) { std::cout<< "\n"; str.pop_front(); print(str, tail...); } }template<class Container, class... Tail>inline auto print(std::list<std::string> & str, const Container & c, const Tail & ... tail) ->decltype(c.begin()) { std::cout << "-- " << *str.begin() << " --\n"; for (const auto& x : c) { printSingle(x); BR; }std::cout << "\n"; str.pop_front();print(str, tail...); return c.begin(); }template<class... Tail>inline void print(std::list<std::string> & str, const std::string & s, const Tail & ... tail) { std::cout << *str.begin() << ":" << s << "\n"; str.pop_front(); print(str, tail...); }//=============================================================================================signed main() {ll n;cin >> n;if (n == 1) {cout << 1 << endl;return 0;}VVVL dp(n + 1, VVL(2, VL(2)));dp[2][0][0] = 1;dp[2][0][1] = 1;FOR(i, 3, n + 1) {dp[i][0][0] = dp[i - 1][1][0] % MOD;dp[i][0][1] = (dp[i - 1][1][0] + dp[i - 1][0][0]) % MOD;dp[i][1][0] = dp[i - 1][0][1] % MOD;}// dump(dp[n]);ll ans = 0;REP(i, 2)REP(j, 2) { ans += dp[n][i][j]; }cout << ans % MOD << endl;}