题面暂无
先给出代码,题解稍后补充
附上成绩
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;
}