记录编号 |
569990 |
评测结果 |
AAAAAAAAAAAAAAA |
题目名称 |
[USACO Final95]奶牛排队 |
最终得分 |
100 |
用户昵称 |
lihaoze |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2022-03-20 23:32:18 |
内存使用 |
0.00 MiB |
显示代码纯文本
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- #include <vector>
- #include <string>
- #include <deque>
- #define OPEN(_x) freopen(#_x".in", "r", stdin); freopen(#_x".out", "w", stdout)
- #define MAX(_a, _b) [&](int __a, int __b) { return __a < __b ? __b : __a; }((_a), (_b))
- #define MIN(_a, _b) [&](int __a, int __b) { return __a > __b ? __b : __a; }((_a), (_b))
- #define ABS(_x) [&](int __x) { return __x < 0 ? -__x : __x; }(_x)
- #define INT(_x) int _x = IO::read<int>();
- #define fi first
- #define se second
-
- using ll = long long;
- using PII = std::pair<int, int>;
-
- namespace IO {
- template <typename T> inline T read() {
- char ch = getchar();
- T ret = 0, sig = 1;
- while(ch < '0' || ch > '9') { if(ch == '-') sig = -1; ch = getchar(); }
- while(ch >= '0' && ch <= '9') ret *= 10, ret += ch - 48, ch = getchar();
- return ret * sig;
- }
- template <typename T> inline void write(T out) {
- if(!out) { putchar('0'), putchar(' '); return; }
- int stk[100], tt = 0;
- if(out < 0) out = -out, putchar('-');
- while(out) stk[tt++] = out % 10, out /= 10;
- for(register int i = --tt; i>=0; --i) putchar(stk[i] + 48);
- putchar(' ');
- }
- template <typename T> inline void read(T& ret) { ret = IO::read<T>(); }
- template <typename T, typename... Args> inline void read(T& x, Args&... args) { IO::read(x), IO::read(args...); }
- template <typename T, typename... Args> inline void write(T x, Args... args) { IO::write(x), IO::write(args...); }
- };
-
-
- const int N = 1 << 15;
- int n;
- std::vector<int> chosen[N], a;
-
- inline void mk_g() {
- int m = 1 << ( n - 1 );
- int tmp = m - 1;
- for (register int i = 0; i < m; ++i) {
- chosen[i].emplace_back(((i << 1) + 1) & tmp);
- chosen[i].emplace_back((i << 1) & tmp);
- }
- }
-
- inline void euler(int x) {
- while (chosen[x].size()) {
- int u = chosen[x][0];
- chosen[x].erase(chosen[x].begin());
- euler(u);
- }
- a.emplace_back(x);
- }
-
- int main() {
- #ifdef DEBUG
- OPEN(test);
- #endif
- OPEN(cowsonparade);
- IO::read(n);
-
- if(n == 1 ) {
- IO::write(0, 1);
- return 0;
- }
-
- mk_g();
- euler(0);
-
- std::reverse(a.begin(), a.end());
-
- int len = a.size();
- for (register int i = 1; i<n-1; ++i) putchar(48), putchar(' ');
- for (register int i = 0; i<len; ++i) putchar((a[i] & 1) + 48), putchar(' ');
-
- return 0;
- }