题面暂无
先给出代码,题解稍后补充
附上成绩
目录
- L1-1
- L1-2
- L1-3
- L1-4
- L1-5
- L1-6
- L1-7
- L1-8
- L2-1
- L2-2
- L2-3
- L2-4
- L3-1
- L3-2
- L3-3
L1-1
print('To iterate is human, to recurse divine.')
L1-2
#include <bits/stdc++.h>
using namespace std;
int n;
int k, m;
int main() {scanf("%d", &n);scanf("%d%d", &k, &m);int ans = n - k * m;printf("%d\n", ans);return 0;
}
L1-3
#include <bits/stdc++.h>
using namespace std;
string s;
int main() {cin >> s;if (s.length() == 4) {if (s.substr(0, 2) < "22") {cout << "20" << s.substr(0, 2) << "-" << s.substr(2, 2) << endl;} else {cout << "19" << s.substr(0, 2) << "-" << s.substr(2, 2) << endl;}} else {cout << s.substr(0, 4) << "-" << s.substr(4, 2) << endl;}return 0;
}
L1-4
#include <bits/stdc++.h>
using namespace std;
int n, m;
double p;
int main() {scanf("%d%d", &n, &m);for (int i = 0; i < n; ++i) {scanf("%lf", &p);if (p < m) {printf("On Sale! %.1lf\n", p);}}return 0;
}
L1-5
#include <bits/stdc++.h>
#define N 24
using namespace std;
int a[N], op;
int main() {for (int i = 0; i < N; ++i) {scanf("%d", &a[i]);}while (~scanf("%d", &op) && op >= 0 && op <= 23) {if (a[op] > 50) {printf("%d Yes\n", a[op]);} else {printf("%d No\n", a[op]);}}return 0;
}
L1-6
#include <bits/stdc++.h>
#define N 31
using namespace std;
int n, m, pos;
string tim[N];
bool qiandao[N];
int main() {scanf("%d%d", &n, &m);getchar();for (int i = 0; i < n; ++i) {getline(cin, tim[i]);int len = tim[i].length();for (int j = 0; j < len; ++j) {if (tim[i].substr(j, 7) == "qiandao" ||tim[i].substr(j, 4) == "easy") {qiandao[i] = true;break;}}}while (pos < n && m) {if (!qiandao[pos]) {--m;}++pos;}while (qiandao[pos]) {++pos;}if (pos == n) {printf("Wo AK le\n");} else {cout << tim[pos] << endl;}return 0;
}
L1-7
#include <bits/stdc++.h>
#define N 20004
using namespace std;
int n;
int a[N];
int minn = 1e8, cnt1;
int maxx = -1, cnt2;
int main() {scanf("%d", &n);for (int i = 0; i < n; ++i) {scanf("%d", &a[i]);if (a[i] <= minn) {if (a[i] < minn) {minn = a[i];cnt1 = 0;}++cnt1;}if (a[i] >= maxx) {if (a[i] > maxx) {maxx = a[i];cnt2 = 0;}++cnt2;}}printf("%d %d\n", minn, cnt1);printf("%d %d\n", maxx, cnt2);return 0;
}
L1-8
#include <bits/stdc++.h>
#define N 2003
using namespace std;
int n, a[N], p = 3;
int main() {scanf("%d%d", &a[1], &a[2]);scanf("%d", &n);for (int i = 1; i <= n && p <= n; ++i) {int tmp = a[i] * a[i + 1];if (tmp >= 10) {a[p++] = tmp / 10;a[p++] = tmp % 10;} else {a[p++] = tmp;}}for (int i = 1; i <= n; ++i) {printf(" %d" + !(i - 1), a[i]);}printf("\n");return 0;
}
L2-1
#include <bits/stdc++.h>
#define N 102
#define M 1003
using namespace std;
int n, m, smax, op;
char g[N][M];
string kuang, ans;
int cnt[N];
int main() {scanf("%d%d%d", &n, &m, &smax);for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {scanf(" %c", &g[i][j]);}}while (~scanf("%d", &op) && op != -1) {if (op == 0) {if (cnt[0]) {ans += kuang[--cnt[0]];}} else {if (cnt[op] < m) {if (cnt[0] == smax) {ans += kuang[--cnt[0]];}if (cnt[0] < kuang.length()) {kuang[cnt[0]] = g[op][++cnt[op]];} else {kuang += g[op][++cnt[op]];}cnt[0]++;}}}cout << ans << endl;return 0;
}
L2-2
#include <bits/stdc++.h>
#define N 10004
using namespace std;
int n, u;
int in[N], out[N];
struct Edge {int v, nxt;
} e[N];
int head[N], cnt;
void addedge(int u, int v) {e[++cnt].v = v;e[cnt].nxt = head[u];head[u] = cnt;
}
struct Node {int v, dfn;Node() {}Node(int _v, int _dfn) : v(_v), dfn(_dfn) {}bool operator<(const Node &y) const {if (dfn == y.dfn) return v < y.v;return dfn > y.dfn;}
};
vector<Node> g[N];
int dfn[N];
int s, t;
bool vis[N];
int main() {scanf("%d", &n);for (int v = 0; v < n; ++v) {scanf("%d", &out[v]);for (int j = 0; j < out[v]; ++j) {scanf("%d", &u);++in[u];g[v].push_back(Node(u, 0));addedge(u, v);}}queue<int> q;for (int i = 0; i < n; ++i) {if (!out[i]) {q.push(i);dfn[i] = 1;vis[i] = true;}}while (!q.empty()) {u = q.front();q.pop();for (int i = head[u]; i; i = e[i].nxt) {int v = e[i].v;dfn[v] = max(dfn[v], dfn[u] + 1);if (!vis[v]) {q.push(v);vis[v] = true;}}}for (int i = 0; i < n; ++i) {if (in[i] == 0) {s = i;break;}}cout << dfn[s] << endl;cout << s;while (g[s].size()) {for (int i = 0; i < g[s].size(); ++i) {g[s][i].dfn = dfn[g[s][i].v];}sort(g[s].begin(), g[s].end());s = g[s][0].v;cout << " " << s;}cout << endl;return 0;
}
L2-3
#include <bits/stdc++.h>
#define N 102
using namespace std;
int n, m;
struct Node {int a[N];bool operator<(const Node &y) const {int p = 1;while (p <= m && a[p] == y.a[p]) {++p;}return a[p] < y.a[p];}
};
map<Node, int> mp;
struct ANS {int a[N];ANS() {}ANS(int cnt, const int _a[N]) {a[0] = cnt;for (int i = 1; i <= m; ++i) {a[i] = _a[i];}}bool operator<(const ANS &y) const {if (a[0] == y.a[0]) {int p = 1;while (p <= m && a[p] == y.a[p]) {++p;}return a[p] < y.a[p];}return a[0] > y.a[0];}
};
vector<ANS> ans;
int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; ++i) {Node tmp;for (int j = 1; j <= m; ++j) {scanf("%d", &tmp.a[j]);}++mp[tmp];}cout << mp.size() << endl;for (map<Node, int>::iterator iter = mp.begin(); iter != mp.end(); ++iter) {ans.push_back(ANS(iter->second, iter->first.a));}sort(ans.begin(), ans.end());for (int i = 0; i < ans.size(); ++i) {cout << ans[i].a[0];for (int j = 1; j <= m; ++j) {cout << " " << ans[i].a[j];}cout << endl;}return 0;
}
L2-4
#include <bits/stdc++.h>
#define N 100005
using namespace std;
int n, m, tmp, op, p = 1;
int k[N], save[102];
vector<int> g[N];
int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; ++i) {scanf("%d", &k[i]);for (int j = 0; j < k[i]; ++j) {scanf("%d", &tmp);g[i].push_back(tmp);}}for (int i = 0; i < m; ++i) {scanf("%d%d", &op, &tmp);if (op == 0) {p = g[p][tmp - 1];} else if (op == 1) {save[tmp] = p;printf("%d\n", p);} else if (op == 2) {p = save[tmp];}}printf("%d\n", p);return 0;
}
L3-1
L3-2
#include <bits/stdc++.h>
#define N 100005
using namespace std;
int n, m, tmp;
int cut[N], k[N];
bool vis[N];
vector<int> ct[N];
vector<int> ans(N);
bool dfs(int paper, int num_cut, int now_paper) {if (paper == m && num_cut == n) {return true;}bool flag = false;for (int i = 1; i <= m; ++i) {if (vis[i]) continue;bool fuhe = true;int j;for (j = 0; j < k[i]; ++j) {if (cut[num_cut + j] != ct[i][j]) {fuhe = false;break;}}if (!fuhe) continue;vis[i] = true;ans[paper] = i;flag = dfs(paper + 1, num_cut + k[i] - 1, i);if (flag) {break;}vis[i] = false;}return flag;
}
int main() {scanf("%d", &n);for (int i = 0; i < n; ++i) {scanf("%d", &cut[i]);}scanf("%d", &m);for (int i = 1; i <= m; ++i) {scanf("%d", &k[i]);for (int j = 0; j < k[i]; ++j) {scanf("%d", &tmp);ct[i].push_back(tmp);}}dfs(0, 0, 0);for (int i = 0; i < m; ++i) {printf(" %d" + !i, ans[i]);}printf("\n");return 0;
}