当前位置: 首页 > news >正文

Codeforces Round 998 (Div. 3)(部分题解)

补题链接

A. Fibonacciness

思路:了解清楚题意,求得是最大的斐波那契的度,数组只有5个数(最多度为3),能列出其对应的式子

a_3 = a_1+a_2 或 a_3=a_4-a_2a_3=a_5-a_4

#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{int n, m, k;vector<int> a(4);set<int> s;for (int i= 0; i<4; i++) cin >> a[i];s.insert(a[0]+a[1]);s.insert(a[2]-a[1]);s.insert(a[3]-a[2]);cout << 4-s.size() << endl;
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while (t--){solve();}return 0;
}

B. Farmer John's Card Game

 思路:

我的思路偏向于暴力一点,先排好序,并记录位置,再遍历跑一边n*m检查有没有不符合条件的。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define vvi vector<vi>void solve()
{int n, m, k;cin >> n >> m;vvi a(n+1, vi(m+1));map<int, int> mp;for (int i = 1; i <= n; ++i){for (int j = 1; j <= m; ++j){cin >> a[i][j];}sort(a[i].begin()+1, a[i].end());mp[a[i][1]] = i;}sort(a.begin()+1, a.end(), [](vi &x, vi &y){return x[1] < y[1];});int flag = 0;int last = -1;for (int i = 1; i <= m; ++i){for (int j = 1; j <= n; ++j){if (a[j][i] < last) {flag = 1;break;}else last = a[j][i];}if (flag) break;}if (flag) cout << -1 << endl;else {for (int i = 1; i <= n; ++i){cout << mp[a[i][1]] << " \n"[i == n];}}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while (t--){solve();}return 0;
}

题解的思路会巧一点不用重复遍历。

附上关键代码:

for (vll &we : ve) {for (ll &i : we) cin >> i;ll minN = *min_element(we.begin(), we.end());if (minN < n) p[minN] = c++;val &= minN < n;sort(we.begin(), we.end());ll last = we[0]-n;for (ll i : we) {val &= last+n == i;last = i;}}

C. Game of Mathletes

思路:

记录数字出现的次数,枚举k的一半,(k为偶数特判一下)取mp[i],mp[k-i]的较小值。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>void solve()
{int n, m, k;cin >> n >> k;vi a(n);map<int, int> mp;for (int i = 0; i < n; i++){cin >> a[i];mp[a[i]]++;}int ans = 0;for (int i = 1; i<=k/2; i++){if (k % 2 ==0 && i == k/2) ans += mp[i]/2;else ans += min(mp[i], mp[k-i]);}cout << ans << endl;
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while (t--){solve();}return 0;
}

D. Subtract Min Sort

思路:

从头开始遍历,如果a[i-1]>a[i]就不成立,

否则a[i]和a[i-1]都同时减去min(a[i-1],a[i])

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define endl '\n'
void solve()
{int n, m, k;cin >> n;vi a(n);int flag = 0;for (int i = 0; i < n; i++) cin >> a[i];for (int i = 1; i<n; i++){if (a[i-1] > a[i]) {flag = 1;break;}else {int mi = min(a[i-1], a[i]);a[i-1] -= mi;a[i]-=mi;}}if (flag) cout << "NO" << endl;else cout << "YES" << endl;
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while (t--){solve();}return 0;
}

http://www.lryc.cn/news/524810.html

相关文章:

  • [创业之路-261]:《向流程设计要效率》-1-流程体系的建立是一场全方位的变革,一定会遇到各种阻力,需要全方位、系统性地进行流程管理
  • 深入理解 Spring 的 Lazy Loading:原理、实现与应用场景
  • 扬帆数据结构算法之雅舟航程,漫步C++幽谷——LeetCode刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构
  • 【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)
  • Excel常用功能总结
  • 【go语言】变量和常量
  • Node.js——express中间件(全局中间件、路由中间件、静态资源中间件)
  • 大语言模型的语境中“越狱”和思维链
  • JAVA学习记录4
  • 手机网络性能测试仪器介绍
  • vue3+ts watch 整理
  • 【Elasticsearch入门到落地】6、索引库的操作
  • Java TCP可靠传输(1)
  • ipad和macbook同步zotero文献附件失败的解决办法
  • linux-ubuntu学习笔记碎记
  • RV1126+FFMPEG推流项目(11)编码音视频数据 + FFMPEG时间戳处理
  • 人工智能的出现,给生命科学领域的研究带来全新的视角|行业前沿·25-01-22
  • python注释格式总结
  • Django实现数据库的表间三种关系
  • C++蓝桥真题讲解
  • 【21】Word:德国旅游业务❗
  • 如何分辨ddos攻击和cc攻击?
  • enum EPOLL_EVENTS详解
  • 阿里前端开发规范
  • 从函数式编程到响应式编程:现代开发中的范式转变
  • Django学习笔记(启动项目)-03
  • 量变引起质变
  • NewStar CTF week1 web wp
  • 李沐vscode配置+github管理+FFmpeg视频搬运+百度API添加翻译字幕
  • 深度学习中Batch Normalization(BN)原理、作用浅析