Codeforces Round 826 (Div. 3)(VP)

传送门

A Compare T-Shirt Sizes

简单模拟,分情况讨论即可。

#include<bits/stdc++.h> #define int long long using namespace std; const int N = 100010; void solve() { string a, b; cin >> a >> b; if (a == b) { puts("="); return; } if (a.back() == 'S') { if (b.back() == 'M' || b.back() == 'L')puts("<"); else if (b.back() == 'S') { if (b.size() < a.size())puts("<"); else puts(">"); } } else if (a.back() == 'L') { if (b.back() == 'M' || b.back() == 'S')puts(">"); else if (b.back() == 'L') { if (b.size() < a.size())puts(">"); else puts("<"); } } else if (a.back() == 'M') { if (b.back() == 'S')puts(">"); else if (b.back() == 'L')puts("<"); } } int32_t main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int h_h; cin>>h_h; //h_h = 1; while (h_h--)solve(); return 0; }

B Funny Permutation

构造题,我是直接达标找规律了,将排列1,2,3,4....n,将1,2移动到最后两位,其他往前移两位输出即可,其实也不用打表,推推就出来了,不难,1和3无论如何也不行,注意特判。

#include<bits/stdc++.h> #define int long long using namespace std; const int N = 200010; int a[N]; void solve() { int n; cin >> n; if (n == 1 || n == 3) { cout << -1 << endl; return; } if (n == 2) { cout << 2 << ' ' << 1 << endl; return; } for (int i = 3; i <= n; i++)cout << i << ' '; for (int i = 1; i <= 2; i++)cout << i << ' '; cout << endl; } int32_t main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int h_h; cin>>h_h; //h_h = 1; while (h_h--)solve(); return 0; }

C Minimize the Thickness

数据范围小,直接暴力的枚举即可,先把所有数的总和求出来,把能把这个数整除的数存到一个数组里,如何去遍历这个数组,求出每一种分割情况的最大长度,最后取个min,但要注意,最后输出的时候要判断一下,万一每个分割的长度不满足题目要求,那么就要输出n,否则就输出ans,vp时就因为这个点卡了好久,导致第四题都没做出来。

#include<bits/stdc++.h> #define int long long using namespace std; const int N = 200010; int n; void solve() { cin >> n; vector<int> a(n + 10); vector<int> s(n + 10); vector<int> b; for (int i = 1; i <= n; i++)cin >> a[i], s[i] = s[i - 1] + a[i]; int mx = *max_element(a.begin(), a.end()); int mn = *min_element(a.begin(), a.end()); //cout << s[n] << ' ' << mx << endl; for (int i = 2; i<=n; i++)if (s[n] % i == 0 && s[n] / i >= mx)b.push_back(i); if (!b.size()) { cout << n << endl; return; } //reverse(b.begin(), b.end()); //for (auto i: b)cout << i << ' '; // cout << endl; // for(auto i:s)cout<<i<<' ';cout<<endl; bool ok = true; int aans = INT_MAX; for (auto i: b) { int res = s[n] / i; int pos = 0; int ans = 0; for (int j = 1; j <= n; j++) { if (s[j] - s[pos] == res) { ans = max(ans, j - pos); pos = j; } } if (pos == n) aans = min(aans, ans); } if(aans==INT_MAX)cout<<n<<endl; else cout << aans << endl; } int32_t main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int h_h; cin >> h_h; //h_h = 1; while (h_h--)solve(); return 0; }

D Masha and a Beautiful Tree

使用了分治的思想,根本不用建树,直接递归即可,先递归到最下面一层,如何判断两个数的相对大小,我们要找到一个规律,要变成题目要求的样子,那么左右哪一边的最小值一定要大于另一边的最大值,如果一边并不是全部严格大于另一边,则不行,标记一下即可,最后输出的时候判断一下。

#include<bits/stdc++.h> #define int long long using namespace std; const int N = 262154; int a[N]; int n; int ans; bool ok; void dfs(int l,int r) { if (l >= r)return; int mid = l + r >> 1; dfs(l, mid); dfs(mid + 1, r); // int mx1 = INT_MIN, mn1 = INT_MAX; for (int i = l; i <= mid; i++)mx1 = max(mx1, a[i]), mn1 = min(mn1, a[i]); // int mx2 = *max_element(a + mid + 1, a + r); // int mn2 = *min_element(a + mid + 1, a + r); int mx2 = INT_MIN, mn2 = INT_MAX; for (int i = mid + 1; i <= r; i++)mx2 = max(mx2, a[i]), mn2 = min(mn2, a[i]); if (mx1 > mn2 && mn1 < mx2)ok = false; else if (mn1 >= mx2)ans++; } void solve() { ans = 0; cin >> n; for (int i = 1; i <= n; i++)cin >> a[i]; ok = true; dfs(1, n); if (!ok)cout << -1 << endl; else cout << ans << endl; } int32_t main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int h_h; cin >> h_h; //h_h = 1; while (h_h--)solve(); return 0; }

__EOF__

本文作者north_h
本文链接https://www.cnblogs.com/north-h/p/17619553.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   north_h  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
点击右上角即可分享
微信分享提示