L1-1
解题思路:无脑输出就行了
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
cout << "I'm gonna win! Today!" << endl;
cout << "2022-04-23";
return 0;
}
L1-2
解题思路:小学算术
参考代码
#include <bits/stdc++.h>
using namespace std;
int n, v;
int main() {
cin >> n >> v;
cout << n / v;
return 0;
}
L1-3
解题思路:模拟,注意分类讨论
参考代码
#include <bits/stdc++.h>
using namespace std;
int a, b, c1, c2;
char X, Y;
int main() {
cin >> a >> b >> c1 >> c2;
if (c1 < a && c2 < a) {
cout << c1 << "-N" << ' ' << c2 << "-N" << endl;
cout << "zhang da zai lai ba";
return 0;
}
if (c1 >= a && c2 >= a) {
cout << c1 << "-Y" << ' ' << c2 << "-Y" << endl;
cout << "huan ying ru guan";
return 0;
}
int mi = min(c1, c2);
int ma = max(c1, c2);
if (mi < a && ma >= a && ma < b) {
if (c1 < c2) cout << c1 << "-N" << ' ' << c2 << "-Y" << endl;
else cout << c1 << "-Y" << ' ' << c2 << "-N" << endl;
if (c1 < c2) X = '2';
else X = '1';
cout << X << ": huan ying ru guan";
return 0;
}
if (mi < a && ma >= b) {
cout << c1 << "-Y" << ' ' << c2 << "-Y" << endl;
if (c1 < c2) X = '2', Y = '1';
else X = '1', Y = '2';
cout << "qing " << X << " zhao gu hao " << Y;
return 0;
}
return 0;
}
L1-4
解题思路:求阶乘
参考代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll ans = 1;
int a, b;
int main() {
cin >> a >> b;
for (int i = 1; i <= a + b; i++) ans *= i;
cout << ans;
return 0;
}
L1-5
解题思路:记录每个骰子用过的点数,每次循环倒叙求没用过且最大的点数即可
参考代码
#include <bits/stdc++.h>
using namespace std;
int n;
int is[10][10];
int ans[10];
int main() {
for (int i = 1; i <= 6; i++) {
cin >> ans[i];
is[i][ans[i]] = 1;
}
cin >> n;
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= 6; i++) {
for (int j = 6; j >= 1; j--) {
if (is[i][j] == 0) {
ans[i] = j;
is[i][j] = 1;
break;
}
}
}
}
for (int i = 1; i <= 5; i++) cout << ans[i] << ' ';
cout << ans[6];
return 0;
}
L1-6
解题思路:直接套题目给个代码
参考代码
#include <bits/stdc++.h>
using namespace std;
string a, b, s1, s2;
int main() {
cin >> a >> b;
for (int i = 1; i < a.size(); i++) {
if (a[i] % 2 == a[i - 1] % 2) {
s1 += max(a[i], a[i - 1]);
}
}
for (int i = 1; i < b.size(); i++) {
if (b[i] % 2 == b[i - 1] % 2) {
s2 += max(b[i], b[i - 1]);
}
}
if (s1 != s2) cout << s1 << endl << s2;
else cout << s1;
return 0;
}
L1-7
解题思路:先算行的,每次减去m,再算列的,每次减去(n-行的选择数),剩下的就是安全的格子数
参考代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5 + 5;
int n, m, q;
int cnt;
int is_a[N];
int is_b[N];
ll ans;
int main() {
cin >> n >> m >> q;
ans = n * m;
int t, c;
for (int i = 1; i <= q; i++) {
cin >> t >> c;
if (t == 0) is_a[c] = 1;
else is_b[c] = 1;
}
for (int i = 1; i <= n; i++) {
if (is_a[i]) {
cnt++;
ans -= m;
}
}
for (int i = 1; i <= m; i++) {
if (is_b[i]) {
ans -= n - cnt;
}
}
cout << ans;
return 0;
}
L1-8
解题思路:得分不小于175且PAT通过的一定可以选,得分不小于175但是PAT未通过,可以选,但是只能选k个人,定义cnt表示得分为i的选择数,初始化为k,每次选这样的则减1,如果为0,则不能选这个得分的人
参考代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5 + 5;
struct node {
int s1, s2;
} a[N];
int n, k, s;
int ans;
int cnt[300];
int main() {
cin >> n >> k >> s;
for (int i = 1; i <= 290; i++) cnt[i] = k;
for (int i = 1; i <= n; i++) cin >> a[i].s1 >> a[i].s2;
for (int i = 1; i <= n; i++) {
if (a[i].s1 >= 175 && a[i].s2 < s && cnt[a[i].s1]) {
cnt[a[i].s1]--;
ans++;
continue;
}
if (a[i].s1 >= 175 && a[i].s2 >= s) ans++;
}
cout << ans;
return 0;
}
L2-1
解题思路:模拟
参考代码
#include<bits/stdc++.h>
using namespace std;
int n, m, k;
queue<int> q;
vector<vector<int>> ans;
vector<int> st;
stack<int> sh;
int d;
int main() {
cin >> n >> m >> k;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
q.push(x);
}
while (sh.size() || q.size()) {
if (st.size() != 0) d = st.back();
else d = 1e9;
if (sh.size() && sh.top() <= d) {
st.push_back(sh.top());
sh.pop();
if ((int)st.size() == k) {
ans.push_back(st);
st.clear();
}
} else if (q.size() && q.front() <= d) {
st.push_back(q.front());
q.pop();
if ((int)st.size() == k) {
ans.push_back(st);
st.clear();
}
} else if (q.size() && (int)sh.size() < m) {
sh.push(q.front());
q.pop();
} else {
ans.push_back(st);
st.clear();
}
}
if (st.size()) {
ans.push_back(st);
st.clear();
}
for (auto &p : ans) {
cout << p[0];
for (int i = 1; i < p.size(); i++)
cout << " " << p[i];
cout << endl;
}
return 0;
}
L2-2
解题思路:模拟即可
参考代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e3 + 5;
int n;
vector<pair<string, string>> v;
string a, b, c;
int main() {
cin >> n;
while (n--) {
cin >> a >> c >> b;
v.push_back({a, b});
}
v.push_back({"", "00:00:00"});
v.push_back({"23:59:59", ""});
sort(v.begin(), v.end());
for (int i = 0; i < v.size() - 1; i++) {
if (v[i].second != v[i + 1].first)
cout << v[i].second << " - " << v[i + 1].first << endl;
}
return 0;
}
L2-3(不知道哪里错了,21分)
解题思路:弗洛伊德
参考代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 5e2 + 5;
int inf = 0x3f3f;
int n, k;
char f[N];
int dis[N][N];
string s;
void Floyd() {
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
}
}
}
struct node {
int id, max;
};
bool cmp(node a, node b) {
return a.max < b.max;
}
int main() {
memset(dis, inf, sizeof(dis));
cin >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (i == j) dis[i][j] = 0;
for (int i = 1; i <= n; i++) {
cin >> f[i] >> k;
while (k--) {
int v, w;
scanf("%d:%d", &v, &w);
dis[i][v] = w;
}
}
Floyd();
vector<node>ans;
for (int i = 1; i <= n; i++) {
int ma = 0;
if (f[i] == 'F') {
for (int j = 1; j <= n; j++) {
if (f[j] == 'M' && dis[j][i] != inf) {
ma = max(ma, dis[j][i]);
}
}
if (ma != 0) ans.push_back({i, ma});
}
}
vector<int>v;
sort(ans.begin(), ans.end(), cmp);
for (int i = 0; i < ans.size(); i++) {
if (ans[i].max == ans[0].max) {
v.push_back(ans[i].id);
}
}
for (int i = 0; i < v.size() - 1; i++) {
cout << v[i] << ' ';
}
if (!v.empty()) cout << v.back();
cout << endl;
ans.clear();
v.clear();
for (int i = 1; i <= n; i++) {
int ma = 0;
if (f[i] == 'M') {
for (int j = 1; j <= n; j++) {
if (f[j] == 'F' && dis[j][i] != inf) {
ma = max(ma, dis[j][i]);
}
}
if (ma != 0) ans.push_back({i, ma});
}
}
sort(ans.begin(), ans.end(), cmp);
for (int i = 0; i < ans.size(); i++) {
if (ans[i].max == ans[0].max) {
v.push_back(ans[i].id);
}
}
for (int i = 0; i < v.size() - 1; i++) {
cout << v[i] << ' ';
}
if (!v.empty()) cout << v.back();
return 0;
}
L2-4
L3-1
L3-2