日常训练2025-1-2
1.日常刷题2025-3-16
2.日常训练2025-1-2
3.日常训练2025-1-34.日常训练2025-1-55.日常训练2025-1-86.日常训练2025-1-117.日常训练2025-1-128.日常训练2025-1-139.日常训练2025-1-1410.日常训练2025-1-1511.日常训练2025-1-1612.日常训练2025-1-1713.日常训练2025-1-1814.日常训练2025-1-1915.日常训练2025-1-2116.日常训练2025-1-2217.日常刷题2025-1-2318.日常训练2025-1-2419.日常刷题2025-1-2520.日常刷题21.日常刷题2025-2-622.日常刷题2025-2-923.日常刷题2025-2-1424.日常刷题2025-2-1525.日常刷题2025-2-1726.日常刷题2025-2-2027.日常刷题2025-2-2128.日常刷题2025-2-2229.日常刷题2025-2-2430.日常刷题2025-2-2631.日常刷题2025-2-2732.日常刷题2025-2-2833.日常刷题2025-3-134.日常刷题2025-3-235.日常刷题2025-3-336.日常刷题2025-3-537.日常刷题2025-3-638.日常刷题2025-3-739.日常刷题2025-3-840.日常刷题2025-3-941.日常刷题2025-3-1042.日常刷题2023-3-1143.日常刷题2025-3-1344.非常棒的二分和DP日常训练2025-1-2
D. Digital string maximization
rating:1300
思路:找trick + 暴力
根据题意,一个数值为 i 的数最多向左移动 i 步。而最大的数为 9 ,也就是说对于一个位置 x ,他的值只可能来自于
这个范围,更远的那些数不可能移动过来 所以即使是暴力时间复杂度也不过是
评述
好烦这道题!!
代码
#include <bits/stdc++.h> typedef std::pair<int, int> pii; #define INF 0x3f3f3f3f #define MOD 998244353 using i64 = long long; const int N = 1e5+5; void solve(){ std::string s; std::cin >> s; int n = s.size(); for (int i = 0; i < n; i++){ int cur = s[i] - '0'; int pos = -1; for (int j = i; j < n && j < i + 10; j++){ if (s[j] - '0' - j + i > cur){ pos = j; cur = s[j] - '0' - j + i; } } if (pos != -1){ for (int k = pos; k >= i + 1; k--){ s[k]--; std::swap(s[k], s[k-1]); } } } std::cout << s << '\n'; } signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout<<std::setiosflags(std::ios::fixed)<<std::setprecision(2); int t = 1, i; std::cin >> t; for (i = 0; i < t; i++){ solve(); } return 0; }
B. pspspsps
rating:1300
思路(找trick)
直接找规律吧,没啥其他方法
代码
#include <bits/stdc++.h> using namespace std; using i64 = long long; #if !defined(ONLINE_JUDGE) && defined(LOCAL) #include "helper.h" bool IS_LOCAL = true; #else #define dbg(...) ; bool IS_LOCAL = false; #endif void go() { int n; string s; cin >> n >> s; if (n == 1) { cout << "YES" << endl; } else if (!s.contains('s') || !s.contains('p')) { cout << "YES" << endl; } else if (s[0] == 's' && !s.substr(1, s.size() - 1).contains('s')) { cout << "YES" << endl; } else if (s[n - 1] == 'p' && !s.substr(0, n - 1).contains('p')) { cout << "YES" << endl; } else { cout << "NO" << endl; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); if (IS_LOCAL) std::cout << std::unitbuf; for (int batch = 1;; batch++) { int caseCnt; cin >> caseCnt; if (!caseCnt || cin.fail()) break; for (int i = 1; i <= caseCnt; i++) { dbg(batch, i); go(); } } return 0; }
本文作者:califeee
本文链接:https://www.cnblogs.com/califeee/p/18648838
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步