VP Codeforces Round 908 (Div. 2)

news/2025/1/24 22:00:49/文章来源:https://www.cnblogs.com/maburb/p/18690409

A - Secret Sport

题意:两个人比赛,每有一个人赢了\(X\)场就算它赢了一轮。比赛是在有一个人赢了\(Y\)轮后结束。你不知道\(XY\),但给你一个每场的输赢情况,求谁是赢家。

去求\(XY\)非常难,不如倒着想,一轮必然是因为赢的那个人赢了一把而结束,同样,整个比赛也是因为赢的那个人赢了一轮而结束。所有,最后一个赢得人就是赢家。

点击查看代码
void solve() {int n;std::cin >> n;std::string s;std::cin >> s;std::cout << s.back() << "\n";
}

B. Two Out of Three

题意:题意,给你一个\(a\),你要构造一个\(b\)使得正好满足三个条件其中得任意两个。

  1. 有一个 \(1 \leq i, j \leq n\) 使得 \(a_i = a_j\), \(b_i = 1\), \(b_j = 2\).
  2. 有一个 \(1 \leq i, j \leq n\) 使得 \(a_i = a_j\), \(b_i = 1\), \(b_j = 3\).
  3. 有一个 \(1 \leq i, j \leq n\) 使得 \(a_i = a_j\), \(b_i = 2\), \(b_j = 3\).

对于每一类数,他们只能由两个不同的值,否则就会同时满足三个条件。那么让每个个数大于等于\(2\)的数字满足一个条件,只需要两个就可以满足两个条件,其他的全部赋值为\(1\)就行。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}std::map<int, std::vector<int> > mp;for (int i = 0; i < n; ++ i) {mp[a[i]].push_back(i);}std::vector<int> b(n, 1);int cnt = 0;for (auto & [x, a] : mp) {if (a.size() >= 2) {if (cnt == 0) {b[a[1]] = 2;} else if (cnt == 1) {b[a[1]] = 3;}++ cnt;} }if (cnt < 2) {std::cout << -1 << "\n";} else {for (int i = 0; i < n; ++ i) {std::cout << b[i] << " \n"[i == n - 1];}}
}	

C. Anonymous Informant

题意:如果\(a_i = i\),则可以让\(a\)左移\(i\)次。现在给你一个数组\(b\),说他是由某个数组进行\(k\)次操作变过来的,判断对错。

模拟一下发现,因为\(a_i = i\),那么左移\(i\)次后\(a_i\)到了结尾。因为\(b\)是变过来的,那么它的最后一个数就代表上一次左移了几位,那我们可以不断右移反着回去,如果某一次出现操作的数大于\(n\),可能无解,如果有一个位置出现两次,说明有环,我们在环上必然可以选一个起点使得它操作\(k\)次变成\(b\)。我们模拟\(\min(n, k)\)次即可。因为\(n\)次必然会出现一个环,否则我们\(k < n\)并且可以操作\(n\)次以上,一定有一个数组可以通过\(k\)次操作到\(b\)

点击查看代码
void solve() {int n, k;std::cin >> n >> k;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int x = 0;std::vector<int> st(n);st[0] = 1;for (int i = 0; i < std::min(n, k); ++ i) {if (a[n - 1 - x] > n) {std::cout << "NO\n";return;}x += a[n - 1 - x];x %= n;if (st[x]) {std::cout << "YES\n";return;}st[x] = 1;}std::cout << "YES" << "\n";
}

D. Neutral Tonality

做过最简单的\(d\)

题意:给你两个数组\(a, b\),你要把\(b\)的每个数插到\(a\)的任意一个位置,让最后数组的最长子序列长度最短。

如果\(a_i > a_{i+1}\),那么我们是不是可以把\([a_{i+1}, a_i]\)的数都插到中间,这样不会使\(LIS\)变长。然后发现,好像就做完了。

点击查看代码
void solve() {int n, m;std::cin >> n >> m;std::vector<int> a(n), b(m);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}for (int i = 0; i < m; ++ i) {std::cin >> b[i];}std::vector<int> ans;std::sort(b.begin(), b.end(), std::greater<int>());int j = 0;for (int i = 0; i < n; ++ i) {while (j < m && b[j] >= a[i]) {ans.push_back(b[j ++ ]);}ans.push_back(a[i]);}while (j < m) {ans.push_back(b[j ++ ]);}for (int i = 0; i < n + m; ++ i) {std::cout << ans[i] << " \n"[i == n + m - 1];}
}

E. Freedom of Choice

题意:\(m\)个多重集,第\(i\)个多重集有\(n_i\)个数,每个数有\(c_i\)个。你要从每个集合里选数,选的个数在\([l_i, r_i]\)之间。定义集合的价值为在集合内且等于集合元素个数的元素数量。

我们可以枚举选\(i\)数,那么尽量不要选\(i\)这个数字。每个数字模拟一下取最小值就行。

点击查看代码
void solve() {int m;std::cin >> m;std::map<i64, std::vector<std::pair<int, i64> > > mp;std::vector<std::array<i64, 4> > a(m);i64 suml = 0, sumr = 0;for (int i = 0; i < m; ++ i) {i64 n, l, r;std::cin >> n >> l >> r;suml += l, sumr += r;std::vector<i64> b(n), c(n);for (int j = 0; j < n; ++ j) {std::cin >> b[j];}for (int j = 0; j < n; ++ j) {std::cin >> c[j];}i64 tot = 0;for (int j = 0; j < n; ++ j) {mp[b[j]].push_back({i, c[j]});tot += c[j];}a[i] = {n, l, r, tot};}for (i64 i = suml; i <= sumr; ++ i) {if (!mp.count(i)) {std::cout << 0 << "\n";return;}}i64 ans = 1e18;for (i64 i = suml; i <= sumr; ++ i) {i64 sum = sumr, res = 0;for (auto & [id, cnt] : mp[i]) {auto & [n, l, r, tot] = a[id];sum -= r;if (tot - cnt < l) {res += l - (tot - cnt);sum += l;} else {sum += std::min(r, tot - cnt);}}res += std::max(0ll, i - sum);ans = std::min(ans, res);}std::cout << ans << "\n";
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/874898.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新春“码”启 | 0 基础开发微信小游戏,Cocos 游戏引擎 + AI 辅助编程(第1天)

春节期间,老牛同学计划借助 AI 开启一场挑战自我和为小朋友开发微信小游戏的系列计划,0 基础开始了第1天的体验。目标是采用 Cocos 游戏引擎框架,借助 AI 辅助编程,最终完成微信小游戏研发。目前已对相关概念有了初步了解,后续将持续探索……好羡慕小朋友们,已经放了快两…

grammarly 使用问题

1 Word 使用时,有时下面的图标不出现,无法使用 2 3

那是我们的影子

那是我们的影子 题目描述 由 $3 \times n$ 个单元格构成的 $3$ 行 $n$ 列异形数独规则如下:每一个单元格都需要填入 $1$ 到 $9$ 之间的整数; 任意一个 $3 \times 3$ 的子矩阵中都不包含重复的数字;现在,牛可乐已经填入了一些数字,请你在此基础上帮助他计算,这个异形数独一…

NPS如何安装Windows版的客户端

Windows 首先下载Windows版的客户端: github下载地址:https://github.com/yisier/nps/releases 54 雨云ROS下载地址:https://cn-sy1.rains3.com/rainyun-assets/Pic/2023/11/windows_amd64_client.tar.gz 51我在需要运行NPS客户端的Windows设备的C盘根目录下建立一个名字叫【…

通过宝塔Docker安装NPS客户端

# 拉取 yisier1/npc 镜像 docker pull yisier1/npc安装拉取镜像成功后如下图所示:创建容器: 选择:命令创建 # 运行 npc 容器,按提示改好命令,如下图所示 docker run -d --name=npc --restart=always --net=host yisier1/npc -server=<ip:port> -vkey=<web界面中…

DeepSeekR1本地可视化运行!同时支持GPT4,Gemini,Cluade,Ollama所有开源模型

昨天使用Ollama在本地运行了DeepSeek R1这个可以深度思考的AI模型。通过这种方式可以快速体验模型,但是要长期高频使用的话,通过命令行这种方式终究是不太方便。所以今天来分享一个可视的软件ChatWise。 添加图片注释,不超过 140 字(可选)这是一个独立开发者开发的软件,界…

[ABC266Ex] Snuke Panic (2D) 题解

[ABC266Ex] Snuke Panic (2D) 题解 前言 前几天看到了这个,发现自己还真没仔细思考过。 做了两道题,把这个题当个总结。 思路 设 \(f_i\) 表示:在 \(T_i\) 走到第 \(i\) 个节点的最大收益。 有转移:\(f_i=\max \{f_j\} + A_i\)。 其中 \(j\) 需要满足:\(y_j\le y_i\) \(T_i…

DeepSeek R1果然有点意思! Windows本地使用ollama轻松跑起来。

这段时间国内外讨论DeepSeek的人都比较多,我印象比较深的是,Deepseek用较低的成本训练了一个不错的模型。另一个是说最近的R1可以匹敌chatgpt的o1。 对比chatgpt的模型很多,我也不知道是宣传而已,还是真的这么牛逼。所以准备本地运行一下看看。因为ollama上已经有这个模型了…

跟着狂神学java-第一天

Markdown学习 标题 (一个#+空格,一级标题) 二级标题 (两个#+空格,二级标题) 三级标题 (以此类推。。。) 字体helloworld (两个星号,加粗) hello world ( 一个星号,斜体) hello world (三个*,加粗的斜体) hello world (两个~,删除线) hello world…

36. 打印机

一、打印机应用程序一般都有打印功能,可以将重要内容打印成纸质资料。PySide6 支持打印操作,它可以识别系统中已经安装的打印机,驱动打印机进行工作,可以用与打印机有关的类直接打印,也可通过打印对话框进行打印,还可对打印的内容在打印前进行打印预览。与打印有关的类主…

MiniCPM-o 2.6 本地部署记录,Windows+RTX3060全部跑通!

上一篇中,大致聊了下国产小钢炮MiniCPM的特性,看起来很不错,可玩性很高。今天,主要来说一下,如何在本地运行这个项目。 添加图片注释,不超过 140 字(可选)配置过程花了一些时间,最终还是成功了,可以正常进行视频通话,语音通话,和聊天机器人。安装和测试过程中遇到了…

CTF-web-计算器

1.打开题目2.发现只能输入一个数字 3.查看源代码4.修改参数5.可以正确输入后得到flag