AcWing2022春季每日一题,第二周题解
AcWing 1442. 单词处理器—原题链接
题目标签:字符串 | 模拟
思路:
恩模拟就完了,派大星看了都会(向派大星道歉)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <bits/stdc++.h> using namespace std; typedef long long LL;
const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int n, k;
int main() { cin >> n >> k; int now = 0; while(n--) { string s; cin >> s; if(now + s.size() <= k) now += s.size(); else { now = s.size(); cout << endl; } cout << s << " "; } return 0; }
|
AcWing 1671. 三角形—原题链接
题目标签:暴力 | 枚举
思路:
恩枚举就完了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII;
const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int n, res; vector<PII> q;
int main() { cin >> n; while(n--) { int x, y; cin >> x >> y; q.push_back({x, y}); }
for(int i=0; i<q.size(); i++) { for(int j=0; j<q.size(); j++) { for(int k=0; k<q.size(); k++) { if(i==j || j==k || i==k) continue; if (q[i].first == q[j].first && q[j].second == q[k].second) res = max(res, abs(q[j].first - q[k].first) * abs(q[j].second - q[i].second)); } } }
cout << res<< endl; return 0; }
|
AcWing 1659. 社交距离 I—原题链接
题目标签:分类讨论 | 模拟 | (也可以)二分
思路:
两头牛能摆放的情况,除了原先一头牛也没有之外,只有两种情况:
1、两头牛在同一去年内
2、两头牛分别在不同区间
算出这两种情况下的取值,取最大值的那个方案即为所需要的方案(输出时要和原先区间的最小值做比对并取最小值)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <bits/stdc++.h> using namespace std;
const int N = 1e5 + 10; int n, cnt; int p[N]; string s;
int main() { cin >> n >> s; for(int i=0; i<s.size(); i++) { if(s[i] == '1') p[++cnt] = i+1; } if(cnt == 0) cout << n-1 << endl; else { int xmin = N; for(int i=1; i<cnt; i++) xmin = min(xmin, p[i+1] - p[i]); int y = max((p[1]-1)/2, (n-p[cnt])/2); for(int i=1; i<cnt; i++) y = max(y, (p[i+1]-p[i])/3); int y1 = p[1]-1, y2 = n-p[cnt]; if(y1 < y2) swap(y1, y2); for(int i=1; i<cnt; i++) { int d = (p[i+1]-p[i])/2; if(d >= y1) y2 = y1, y1 = d; else if(d > y2) y2 = d; } cout << min(xmin, max(y, y2)) << endl; } return 0; }
|
AcWing 1714. 混合牛奶—原题链接
题目标签:模拟 | 找规律(做的时候没找到…)
思路:
恩模拟就完了,这里面有规律可以找不过只需要操作100次因此恩模拟也没问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII;
const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int n;
struct acow { PII a, b, c; };
int main() { acow cow; cin >> cow.a.first >> cow.a.second >> cow.b.first >> cow.b.second >> cow.c.first >> cow.c.second;
for(int i=1; i<=100; i++) { if(i % 3 == 1) { if(cow.a.second + cow.b.second <= cow.b.first) { cow.b.second += cow.a.second; cow.a.second = 0; } else { cow.a.second -= cow.b.first - cow.b.second; cow.b.second = cow.b.first; } } else if(i % 3 == 2) { if(cow.b.second + cow.c.second <= cow.c.first) { cow.c.second += cow.b.second; cow.b.second = 0; } else { cow.b.second -= cow.c.first - cow.c.second; cow.c.second = cow.c.first; } } else if(i % 3 == 0) { if(cow.c.second + cow.a.second <= cow.a.first) { cow.a.second += cow.c.second; cow.c.second = 0; } else { cow.c.second -= cow.a.first - cow.a.second; cow.a.second = cow.a.first; } } }
cout << cow.a.second << endl << cow.b.second << endl << cow.c.second << endl; return 0; }
|
AcWing 1695. 果壳游戏—原题链接
题目标签:模拟
思路:
将三个杯子预定义好,按照题目的要求进行交换,点中的杯子就杯子内容+1,也就是说如果这个杯子里提前放了鹅卵石那他就能猜对,最后输出最大值即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <bits/stdc++.h> using namespace std; typedef long long LL;
const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int n; int p[4] = {0, 1, 2, 3}, ans[4];
int main() { cin >> n; while(n--) { int a, b, c; cin >> a >> b >> c; swap(p[a], p[b]); ans[p[c]]++; } cout << *max_element(ans+1, ans+4) << endl; return 0; }
|