2024ICPC网络赛第一场

server/2024/9/22 8:37:40/

A

最终答案与中国队能力值的排名有关,具体每个情况手推一下,用 if else 即可通过。

#include <bits/stdc++.h>
using namespace std;int main() {ios::sync_with_stdio(false); cin.tie(0);int t, a[40];cin >> t;while (t--) {int num = 0;for (int i = 1; i <= 32; i++) {cin >> a[i];if (a[i] <= a[0]) num++;}if (num == 32) puts("1");else if (num >= 28) puts("2");else if (num >= 14) puts("4");else if (num >= 7) puts("8");else if (num >= 3) puts("16");else puts("32");}return 0;
}

F

每一个数都能更新左右比它小的数,直到遇到一个大于等于它的数为止。从小到大一个个更新,更新次数一定最多,但在计算结果的时候只需要计算数量,不用考虑计算顺序。

利用单调栈求出每一个 a_i 左边第一个大于等于它的数的位置 lef_i 和右边第一个大于等于它的数的位置 rig_i

计算结果的时候要注意,如果 a_i = a_{lef_i},即 a_i 与左边第一个大于等于它的数相等的时候,只需要记右边小于它的数的个数,不然会跟前面的算重;其余情况都要加上左右小于它的数的个数。

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;
int n, a[N], lef[N], rig[N];
stack<int> s;inline int read() {int x = 0, f = 1; char c = getchar();while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}int main () {int t = read();while (t--) {n = read();for (int i = 1; i <= n; i++) a[i] = read();for (int i = 1; i <= n; i++) {if (s.empty() || a[i] < a[s.top()]) s.push(i);else {while (!s.empty() && a[i] >= a[s.top()]) {rig[s.top()] = i;s.pop();}s.push(i);}}while (!s.empty()) rig[s.top()] = n + 1, s.pop();for (int i = n; i; i--) {if (s.empty() || a[i] < a[s.top()]) s.push(i);else {while (!s.empty() && a[i] >= a[s.top()]) {lef[s.top()] = i;s.pop();}s.push(i);}}while (!s.empty()) lef[s.top()] = 0, s.pop();long long ans = 0LL;for (int i = 1; i <= n; i++) {if (!lef[i] || a[lef[i]] != a[i]) ans += rig[i] - lef[i] - 2;else ans += rig[i] - i - 1;}printf("%lld\n", ans);}return 0;
}

M

#include <bits/stdc++.h>
using namespace std;int main() {ios::sync_with_stdio(false); cin.tie(0);int t, n;string team, status;char prob;cin >> t;while (t--) {cin >> n;set<string> st[30];for (int i = 1; i <= n; i++) {cin >> team >> prob >> status;if (status == "accepted") st[prob - 'A'].insert(team);}int idx = 0;for (int i = 1; i <= 'Z' - 'A'; i++) {if (st[idx].size() < st[i].size()) idx = i;}printf("%c\n", 'A' + idx);}return 0;
}


http://www.ppmy.cn/server/118290.html

相关文章

如何快速解决程序中的BUG

前提 获得更多信息 - 搞清楚为什么bug会发生什么情况下会发生、用户到底做了什么操作&#xff0c;才导致这个bug、是每次都会出现bug、还是偶发性、是否可以复现&#xff08;不能复现的bug&#xff0c;还能叫bug&#xff09;&#xff1f;拿到用户详细的报错输出明确边界&#…

3D云渲染农场为何怎么贵?主要消耗成本介绍

随着对高质量3D动画的需求持续增长&#xff0c;云渲染农场对于旨在以高效速度生产高质量视觉效果的工作室来说变得至关重要。然而&#xff0c;用户经常想知道为什么渲染农场的价格如此之高&#xff0c;理解背后的原因可以帮助艺术家做出更好的选择。 什么是云渲染农场&#xff…

《深度学习》PyTorch 手写数字识别 案例解析及实现 <上>

目录 一、了解MINIST数据集 1、什么是MINIST 2、查看MINIST由来 二、实操代码 1、下载训练数据集 2、下载测试数据集 运行结果&#xff1a; 3、展示手写数字图片 运行结果&#xff1a; 4、打包图片 运行结果&#xff1a; 5、判断当前pytorch使用的设备 1&#xff…

c语言--力扣简单题目(回文链表)讲解

题目如下&#xff1a; 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表。 如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 示例 2&#xff1…

DockerDocker Compose安装(离线+在线)

Docker&Docker Compose安装(离线在线) Docker离线安装 下载想要安装的docker软件版本&#xff1a;https://download.docker.com/linux/static/stable/x86_64/ 如目标机无法从链接下载&#xff0c;可以在本机下载后 scp docker版本压缩包[如docker-20.10.9.tgz] usernameh…

电巢科技携Ecosmos元宇宙产品亮相第25届中国光博会

第25届中国国际光电博览会&#xff08;“CIOE中国光博会”&#xff09;今日在深圳国际会展中心盛大开幕。本届博览会以“光电引领未来&#xff0c;驱动应用创新”为主题&#xff0c;吸引了全球超过3700家优质光电企业参展&#xff0c;展示了光电产业的最新成果和前沿技术。 电…

数据库语言、SQL语言、数据库系统提供的两种语言

1.数据库语言 数据库语言有很多种&#xff0c;其中一种是SQL语言。 2. SQL语言 【几乎所有的关系数据库系统都使用SQL语言。】 SQL语言中包含很多不同的部分&#xff0c;有&#xff1a; &#xff08;1&#xff09;DDL语言&#xff08;Data definition language&#xff09;…

Matlab simulink建模与仿真 第十七章(补充离散库和补充数学库)

参考视频&#xff1a;simulink1.1simulink简介_哔哩哔哩_bilibili 一、补充离散库和补充数学库中的模块概览 1、补充离散库 注&#xff1a;每个版本的补充离散库不一定相同&#xff0c;也不是每个版本的库都有如上所有模块。 2、补充数学库 二、离散直接传递函数Ⅱ模块 1、…