Codeforces Round #672 (Div. 2)
A题
容易题。只有严格单调递减情况是NO因为需要n*(n-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 | #include <bits/stdc++.h> using namespace std; int main () { int t; cin >> t; while (t--) { int n; cin >> n; vector< int > v; bool ok = 0; for ( int i = 0; i < n; ++i) { int temp; cin >> temp; v.push_back(temp); } for ( int i = 1; i < n; ++i) { if (v[i - 1] <= v[i]) { ok = 1; } } if (ok) { cout << "YES" << endl; } else { cout << "NO" << endl; } } } |
B题
记得开long long!!!!!!!!!!!!!!!!!!!!!!!!!!
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; int main () { int t; cin >> t; while (t--) { int n; cin >> n; vector<ll> v(100); for ( int i = 0; i < n; ++i) { ll temp; cin >> temp; int circle = 0; for (circle = 0; temp; temp >>= 1) { circle++; } v[circle]++; } ll ans = 0; for ( int i = 0; i < v.size(); ++i) { if (v[i]) { ans += (v[i] - 1) * v[i] / 2; } } cout << ans << endl; } } |
C题
思维题
用两个数组进行记录
一定要注意这种思想
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; int main () { ios::sync_with_stdio( false ); cin.tie(0); int t; cin >> t; while (t--) { int n, q; cin >> n >> q; vector<ll> a(n + 1); for ( int i = 1; i <= n; ++i) { cin >> a[i]; } vector<ll> mx(n + 1); vector<ll> mn(n + 1); // for(int i = n - 1; i >= 0; --i) { // mx[i] = max(mx[i + 1], a[i] - mn[i + 1]); // mn[i] = min(mn[i + 1], a[i] - mx[i + 1]); // } // cout << mx[0] << endl; for ( int i = 1; i <= n; ++i) { mx[i] = max(mx[i - 1], a[i] - mn[i - 1]); mn[i] = min(mn[i - 1], a[i] - mx[i - 1]); } cout << mx[n] << endl; } } |
D题
组合数问题 用优先队列解决。本质上来讲是求几个区间公共情况的组合情况
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MODE = 998244353; const int N = 3e5 + 10; typedef pair< int , int > P; ll pre[N]; ll qpow(ll a, ll b) { ll res = 1; while (b) { if (b & 1) res = (res * a) % MODE; b >>= 1; a = (a * a) % MODE; } return res % MODE; } ll C(ll n, ll k) { if (k == 0) { return 1; } return (pre[n] % MODE * qpow((pre[k] * pre[n - k]) % MODE, MODE - 2) % MODE) % MODE; } int main () { ll n, k; cin >> n >> k; pre[0] = 1; for ( int i = 1; i < N; ++i) { pre[i] = (pre[i - 1] * i) % MODE; } vector<P> v(n); for ( int i = 0; i < n; ++i) { cin >> v[i].first >> v[i].second; } sort(v.begin(), v.end()); // for(int i = 0; i < v.size(); ++i) { // cout << v[i].first << " " << v[i].second << endl; // } ll ans = 0; // priority_queue<int, vector<int>, greater<int>> pq; priority_queue< int , vector< int >, greater< int > > pq; for ( int i = 0; i < n; ++i) { while (pq.size() && v[i].first > pq.top()) { pq.pop(); } if (pq.size() >= k - 1) { ans += C(pq.size(), k - 1); } pq.push(v[i].second); } cout << ans % MODE << endl; } |
作者:LightAc
出处:https://www.cnblogs.com/lightac/
联系:
Email: dzz@stu.ouc.edu.cn
QQ: 1171613053
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
出处:https://www.cnblogs.com/lightac/
联系:
Email: dzz@stu.ouc.edu.cn
QQ: 1171613053
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
2019-09-25 C#实验二