牛客 周赛111 20251008

news/2026/1/20 23:08:38/文章来源:https://www.cnblogs.com/dianman/p/19130145

牛客 周赛111 20251009

https://ac.nowcoder.com/acm/contest/117763

A:
题目大意:

void solve(){int a, b, c;cin >> a >> b >> c;if (b != a + 1 || c != b + 1) cout << "No";else cout << "Yes";
}

签到

B:

题目大意:

image-20251008200228783

void solve(){int n;cin >> n;int mn = 1e9, pos = 0;for (int i = 1; i <= n; i ++){int x;cin >> x;if (mn > x){mn = x;pos = i;}}cout << pos << ' ';int mx = 0;for (int i = 1; i <= n; i ++){int x;cin >> x;if (mx < x){mx = x;pos = i;}}cout << pos;
}

转换方程,当 \(a_x\)\(a\) 数组中最小的元素,\(b_y\)\(b\) 数组中最大的元素时两式相减有最大值

C:
题目大意:

image-20251008200411479

void solve(){LL n, k, x;cin >> n >> k >> x;vector<int> a(2 * x);vector<int> b;if (k == 0){for (int i = 1; i <= n; i ++){int t;cin >> t;cout << t << ' ';}return;}for (int i = 0; i < n; i ++){int t;cin >> t;if (i < x)a[i + x] = a[i] = t;elseb.push_back(t);}int st = (((x - k) % x) + x) % x;for (int i = st; i < st + x; i ++) cout << a[i] << ' ';for (auto i : b) cout << i << ' ';}

每次都令第 \(x\) 张牌放到顶部,那么前 \(x\) 张牌的顺序会形成一个循环

\(k\) 次操作相当于把前 \(x\) 张牌循环右移 \(k\) 次,那么最终的位置的偏移量就是 \(k \% x\)

D:
题目大意:

image-20251008200624240

void solve(){int n;cin >> n;vector<int> a(n);for (auto &x : a) cin >> x;vector<int> b(n);for (int i = 0; i < n; i ++){b[i] = to_string(a[i]).size() & 1;a[i] %= 11;}vector<vector<int>> dp(2, vector<int>(11, 0));LL ans = 0;for (int i = 0; i < n; i ++){ans += dp[1][a[i]] + dp[0][(11 - a[i]) % 11];if (b[i]) ans += dp[1][a[i]] + dp[0][a[i]];else ans += dp[0][(11 - a[i]) % 11] + dp[1][(11 - a[i]) % 11];dp[b[i]][a[i]] ++;}	cout << ans;
}

根据题意,定义 \(c = a\times 10^{\lvert b\rvert} + b\) ,(\({\lvert b\rvert}\) 表示 \(b\) 的位数)判断 \(c\) 是否为 \(11\) 的倍数

又因为在模 $11 $ 的意义下 \(10 \equiv -1\) ,所以 \(c = (-1)^{\lvert b\ \rvert} a+ b\)

定义 \(dp_{i,j}\) 表示在当前枚举的数之前有多少个数位奇偶性为 \(i\) 且 余数为 \(j\) 的数,枚举每一个数,分类讨论它作为 \(a,b\) 的情况

如果这个数是 \(a\) ,那么答案累加上它之前 奇偶性为 \(1\) 且 余数为 \(a\%11\) 的数 和 奇偶性为 \(0\) 且 余数为 \((11- a)\%11\) 的数

\[(-1)^1a+b \equiv 0(\mathrm{mod}\ 11) \to b\equiv a(\mathrm{mod}\ 11)\\ (-1)^0a+b \equiv 0(\mathrm{mod}\ 11) \to b \equiv 11 - a (\mathrm{mod}\ 11)\\ \]

如果这个数作为 \(b\) 位数为奇数时,答案累加上它之前所有余数为 \(a\%11\) 的数

\[(-1)^1a + b\equiv 0(\mathrm{mod}\ 11) \to a \equiv b(\mathrm{mod}\ 11) \]

如果这个数作为 \(b\) 位数为偶数时,答案累加上它之前所有余数为 \((11- a)\%11\) 的数

\[(-1)^0a + b\equiv 0(\mathrm{mod}\ 11) \to a \equiv 11-b(\mathrm{mod}\ 11) \]

E:
题目大意:

image-20251008205617030

void solve(){LL n, k;cin >> n >> k;LL sum = 0;for (int i = 1; i <= n; i ++) sum += i;sum += n;vector<int> a(n + 1);for (int i = 1; i <= n; i ++) a[i] = i;for (int i = n - 2; i >= 1; i --){if (sum - k >= i){swap(a[i], a[i + 1]);sum -= i;} }if (sum != k){cout << -1;return;}for (int i = 1; i <= n; i ++) cout << a[i] << ' ';
}

考虑先构造出一个 \(L(a) +R(a)\) 最大的排列,显然有一种方式是直接按照顺序排列,这样的 \(L(a) + R(a) = \sum\limits_{i = 1}^ni + n\)

可以发现,从后往前如果交换任意两个相邻的数 \(a_i,a_{i + 1}(i + 1 < n)\) 那么 \(L(a)+R(a)\) 就会减少 \(a_i\) 的贡献

例如 \(1,2,3,4,5\) ,从后往前交换 \(3,4\) 会变成 \(1,2,4,3,5\)\(L(a) = 1+2+4+5,R(a)=5\)

像这样的构造,下标可以从 \(n-1\) 枚举到 \(1\) ,记最大的 \(L(a)+R(a) = sum\) ,当 \(sum-k\ge a_i\) 时,就令 $a_{i} $ 和 \(a_{i + 1}\) 交换

直到最后,如果 \(sum\) 还是不等于 \(k\) 说明这样的构造方式不存在,因为最小的 \(sum\) 的情况就是令两个极大的数在排列左右两端

F:
题目大意:

image-20251008211124427

void solve(){int n, k;cin >> n >> k;if (k >= n ||  k < (n + 1) / 2){cout << -1;return;}int m = n - k;int st = 1;for (int i = 1; i < m; i ++){cout << st + 1 << ' ' << st << ' ';st += 2;} int ed = st;st ++;while (st <= n){cout << st << ' ';st ++;}cout << ed;
}

依然是一个经典的结论构造,对于一个序列 \(1,2,3,4,5\) 它的环指的是把这些数依次向左或向右循环移动,例如 \(2,3,4,5,1\)\(4,5,1,2,3\) 对于这样的形成的任意两个序列 \(a,b\) 通过交换任意两个元素的操作使得 \(a\) 变为 \(b\) 的操作次数为 \(n-1\) ,即环元素个数减去 \(1\)

题意需要构造一个排列,使得数组变为升序的最小操作次数为 \(k\)

可以将排列分割为 \(m\) 个独立的环 \(cir\),那么总操作次数就是 \(\sum\limits_{i=1}^m\lvert cir_i \rvert-m = n-m=k\) ,求出 \(m = n -k\)

又因为要求每个 \(a_i\ne i\) ,所以每个划分的环的大小至少为 \(1\)

一种构造方式是前 \(k-1\) 个环都是形如 \(\{i + 1,i\}\) ,最后一个环的大小为 \(n-2\times(k - 1)\)

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

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

相关文章

防抖 解释

防抖: 核心就是当一个现象停止一段时间后, 才执行动作. 而不是每次都执行.主意timer的配置

从零到一搭建:vue3+vite7+antfu+stylelint+githooks,全流程配置,附带源码,集成css变量使用,下载即用

@目录0 基础环境0.1 node版本0.2 包管理器0.3 vscode插件1 创建项目——vue官网方式1.1 创建命令1.2 初始化git2 语法检查:antfu组合eslint和prettier2.1 安装命令2.2 安装依赖2.3 在package.json中添加脚本2.4 修改e…

晶台光耦在手机PD快充上的应用 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

bat批处理脚本文件-获取当前时间的几种方法

前言全局说明获取当前时间的几种方法一、说明 1.1 环境: Windows 7 旗舰版二、方法一 2.1 源码 @echo off@REM 获取当前时间 https://www.cnblogs.com/wutou/p/19130116 SET year=%date:~0,4% SET month=%date:~5,2% S…

二分图最大权完美匹配 KM算法

#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; #define LL long long #define N 510 #define INF 1e12 int n,m; int match[N];//右点匹配了…

IDM弹窗解决 - -一叶知秋

IDM弹窗解决1、打开任务管理器,结束IDM任务(一定要结束全部的IDM任务)2、在控制面板中,打开 管理工具(有搜索)3、然后打开 本地安全策略4、找到 软件限制策略->其它规则,如果 软件限制策略 下面没有选项,就…

PHP+MySQL开发语言 在线下单订水送水小脚本源码及搭建指南

PHP+MySQL开发语言 在线下单订水送水小脚本源码及搭建指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

深入解析:video-audio-extractor:视频转换为音频

深入解析:video-audio-extractor:视频转换为音频pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

详细介绍:运行shell脚本时报错/bin/bash^M: 解释器错误: 没有那个文件或目录

详细介绍:运行shell脚本时报错/bin/bash^M: 解释器错误: 没有那个文件或目录pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

ubuntu20.04服务器版安装中文输入法分享

1/菜鸟,学生党,旧机,安装好ubuntu20.04服务器版(主要为旧卡GTX660和CUDA11.4考虑)后,发现旧机焕发了新春,挺好用的,哈哈; 2/为了能方便使用微信,就追加了xubuntu图形界面 & wechat,看微信消息是非常的方便了,可是…

DeCLIP

1、第一页 密集视觉预测任务受到对预定义类别的依赖的限制,限制了它们在真实世界场景中的实用性。 视觉语言模型在开放词汇任务中显示出良好前景,但它们直接应用于密集预测任务往往性能不佳。 CLIP的图像token难以有…

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名CTF资源库需求洞察

该项目是一个精心整理的CTF资源集合,涵盖创建和解题所需的各类工具框架,包括取证分析、密码学、逆向工程、网络攻防等多个安全领域,为安全研究人员和CTF爱好者提供一站式资源导航。a.内容描述核心功能定位:该项目是…

如何测试台式机电源

如何测试台式机电源如何测试台式机电源https://mbd.baidu.com/newspage/data/videolanding?nid=sv_5217672129161259963&sourceFrom=qmj网站:http://shibowl.topgithub:https://github.com/hanbinjxnc博客园:h…

折腾笔记[31]-在线转换吉卜力风格图片

在线转换吉卜力风格图片.主要是利用浏览器的隐私浏览(无痕)模式获取免费的试用额度(credits).摘要 在线转换吉卜力风格图片.主要是利用浏览器的隐私浏览(无痕)模式获取免费的试用额度(credits). 使用方式 [https://ghi…

完整教程:【网络安全 | 信息收集】灯塔(资产收集工具)安装教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

计算机视觉的现状与未来挑战

本文探讨计算机视觉技术的发展历程与当前面临的挑战,包括情感识别系统的局限性、上下文理解的重要性,以及生成对抗网络在虚拟场景构建中的应用前景。文章还介绍了视觉购物等实际应用场景。CVPR:理解图像意味着理解世…

#20232408 2025-2026-1《网络与系统攻防技术》实验一实验报告

北京电子科技学院(BESTI) 实 验 报 告课程名称: 网络与系统攻防技术实验序号: 实验一实验名称: 缓冲区溢出攻击学 号: 20232408姓 名: 李易骋指导老师: 王志强必修/选修: 选修实验日期:一、…

reLeetCode 热题 100- 239. 滑动窗口最大值 队列 - MKT

reLeetCode 热题 100- 239. 滑动窗口最大值 队列 队列记录最大值集合 方法一1 枚举 速度嘛 n*k方法2 map 记录频次 通过速度慢方法3 队列记录当前最大值 最快class Solution { public:vector<int> maxSlidingWin…

ToDo-List EveryDay

健康任务待办事项.health-todo-container * { box-sizing:border-box; margin:0; padding:0; } .health-todo-header { text-align:center; margin:1rem 0; } .health-todo-title { font-size:2.5rem; font-weight:bol…