总结(我的塘人局):
单调栈是忘得差不多了
A - delete .
题意:
输出删除所有'.'的字符串
思路:
遍历输出不是'.'
复杂度:
O(n)
Code:
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using i64 = int64_t;
void solve() {
string s;
cin >> s;
for (char c : s) {
if (c != '.') cout << c;
}
}
int main() {
cin.tie(0) -> sync_with_stdio(false);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
B - 3^A
题意:
给定一个一个M找到长度为n数组a[]满足(
且一定存在一个序列满足
)

思路:
通过贪心从最大的3 ^ i开始减去,直至M被分解完成
复杂度:
O(M)
Code:
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using i64 = int64_t;
constexpr int N = 22;
int pre[N], m;
void solve() {
cin >> m;
int idx = 0;
vector <int> ver;
for ( ; m > 0;) {
idx = 0;
while (m >= pre[idx + 1] && idx <= 9) {
idx++;
}
ver.push_back(idx);
m -= pre[idx];
}
cout << ver.size() << '\n';
for (int i : ver) cout << i << ' ';
}
int main() {
cin.tie(0) -> sync_with_stdio(false);
int t = 1;
// cin >> t;
for (int i = 0; i < 11; i++) pre[i] = pow(3, i);
while (t--) {
solve();
}
return 0;
}
D - Buildings
类似力扣的一题:
1944. 队列中可以看到的人数 - 力扣(LeetCode)