牛客小白月赛117

前言:solveABCF相对简单,D题思路简单但是实现麻烦,F题郭老师神力b( ̄▽ ̄)。

A. 好字符串

题目大意:给定字符串s,里面的字母必须大小写同时出现。

【解题】:没什么好说的,直接模拟就行。

code:

#include <iostream>
#include <unordered_map>using namespace std;
int n; string s; 
unordered_map<char, int> mp;bool check()
{for(int i = 0; i < n; i++){char ch1 = s[i];char ch2;if(isupper(ch1))  ch2 = tolower(ch1);else ch2 = toupper(ch1);if(!mp.count(ch2)) return 0;}return 1;
}int main()
{cin >> n >> s;for(int i = 0; i < n; i++) mp[s[i]]++;if(check()) cout << "YES" << endl;else cout << "NO" << endl;return 0;
}

B. 平均数

题目大意:给定一个由0 1 -1 组成的数组,0代表该元素等于平均数,1代表大于,-1代表小于。

问给出的数组是否合法。

【解题】:合法的情况:

  • 全是0
  • 1 -1 同时出现(不用管次数)

code:

#include <iostream>
#include <unordered_map>using namespace std;
unordered_map<int, int> mp;
int n;
int main()
{cin >> n;for(int i = 1; i <= n; i++) {int x; cin >> x;mp[x]++;}if((mp.count(-1) && mp.count(1)) || (!mp.count(-1) && !mp.count(1))) cout << "YES" << endl;else cout << "NO" << endl;return 0;
}

C. 质数

题目大意:对于l到r的数,可以分配到s1,s2两个集合内,集合至少一个元素,且gcd(s1) = 1,gcd(s2) != 1,问|len1 - len2|的最小值。

【解题】:不难发现:如果把连续的偶数给s2可以保证gcd(s2)至少是2,把奇数给s1又保证了gcd(s1) = 1,这样又均分了l,r之间的元素,可以使得|len1 - len2|最小。

code:

#include <iostream>using namespace std;typedef long long LL;int main()
{int q; cin >> q;while(q--){LL l, r; cin >> l >> r;LL n = r - l + 1;if(n <= 1) cout << -1 << endl;else if(n == 2){if(l == 1) cout << 0 << endl;else cout << -1 << endl;}else {cout << n % 2 << endl;}}return 0;
}

F. 种类数

题目大意:长度为n的数组a,每次操作将所有的ai <-max(0, ai - cnt)其中cnt是a的种类数。问经过多少次操作可以使数组种类数变为1。

【解题】:对于开始种类数是一的情况直接输出0就行,对于开始不是1的情况,由于他们的差值只有再ai变为0的情况下才会改变,所有最终结果是全变为零的操作次数,为此我们不妨每个数只存一遍,我们需要知道第k次操作的种类数,减的总数以及当前数组的最小值。

#include <iostream>
#include <unordered_map>
#include <queue>
#include <vector>
using namespace std;
typedef long long LL;
priority_queue<LL, vector<LL>, greater<LL>> heap;
unordered_map<LL, LL> mp;int main()
{int n; cin >> n;for (int i = 1; i <= n; i++){LL x; cin >> x;mp[x]++;}if (mp.size() == 1){cout << 0 << endl;return 0;}LL k = mp.size();LL ans = 0, now = 0;for (auto t : mp){heap.push(t.first);}bool flag = false;  // 用于处理0的特殊情况while (heap.top() == 0){heap.pop();flag = true;}while (heap.size()){while (heap.size() && now >= heap.top()){heap.pop();if (!flag){// 这里0是第一次出现,所以k不能--flag = true;continue;}k--;}if (heap.size()){LL x = heap.top();LL t = (x - now) / k;if(t == 0) t++;now += t * k;ans += t;}}cout << ans << endl;return 0;
}

D. 众数

题目大意:给定长度为n的数组a,必须执行下面操作一次:

选择两个不同位置i,j使得ai=ai + 1, aj=aj - 1,问众数出现的所有可能。

【解题】:本题的题眼其实是数据范围,它只有1e3所有我们是可以设计一个n^2或者n^2logn的算法的,n^2其实停留在枚举所有的ij上,所有我们只能用O(1) or O(logn)的时间找出每次ij的众数,这样就需要维护一个内部有序的数据结构,我们借助set维护。

code:

#include <iostream>
#include <set>
#include <map>
#include <algorithm>
using namespace std;const int M = 1e6 + 1, N = 2e3 + 10;int a[N];
struct node
{int num, cnt;bool operator< (const node& b) const{if (cnt != b.cnt) return cnt < b.cnt;return num < b.num;}
};
map<int, int> mp;
set<node> tmp;
set<int> ans;
int cnt[M];void add(int val)
{auto it = tmp.lower_bound({ val, cnt[val] });cnt[val]++;if (it->num == val){tmp.erase(it); // 需要重新插入,不能直接--tmp.insert({ val, cnt[val] });}else // 第一次出现{tmp.insert({ val, 1 });}
}void del(int val)
{auto it = tmp.lower_bound({ val, cnt[val] });cnt[val]--;tmp.erase(it);if (cnt[val] >= 1) // 还存在{tmp.insert({ val, cnt[val] });}
}int main()
{int n; cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];add(a[i]);}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){if (i == j) continue;del(a[i]);add(a[i] + 1);del(a[j]);add(a[j] - 1);ans.insert(tmp.rbegin()->num);add(a[i]);del(a[i] + 1);add(a[j]);del(a[j] - 1);}}for (auto it = ans.begin(); it != ans.end(); it++) cout << *it << " ";return 0;
}

G. 中位数

题目大意:对于长度为n的排列,求下面式子对于所有n的排列的累乘对1610612741取模后的结果。

【解题】:组合数学 + 贡献法转化枚举对象

code:

#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
#define endl '\n'
const int N = 6e3 + 10;
const int MOD = 1610612741;
const int PM = MOD - 1;
typedef pair<LL, LL> PII;
LL fac_len[N];
LL gac_glen[N];
LL f[N];
int n; 
LL C[N][N];LL qpow(LL a, LL b, LL MOD)
{LL ret = 1;while(b){if(b & 1) ret = ret * a % MOD;b >>= 1;a = a * a % MOD;}return ret;
}void init()
{fac_len[0] = 1;for(int i = 1; i <= n; i++) fac_len[i] = fac_len[i - 1] * i % PM;// vector<LL, vector<LL>> C(n + 1, vector<LL>(n + 1));for(int i = 0; i <= n; i++){C[i][0] = 1;for(int j = 1; j <= i; j++){C[i][j] =(C[i - 1][j] + C[i - 1][j - 1]) % PM;}}for(int mid = 1; mid <= n; mid++){for(int len = 1; len <= n; len++){// if(len % 2 == 1) f[mid] = (f[mid] + (C[mid - 1][len / 2] * C[n - mid][len / 2] % PM * fac_len[len] % PM * fac_len[n - len] % PM * (n - len + 1) % PM)) % PM;f[mid] = (f[mid] + (C[mid - 1][len / 2] * C[n - mid][len - (len / 2) - 1] % PM * fac_len[len] % PM * fac_len[n - len] % PM * (n - len + 1) % PM)) % PM;}}	
}void solve() 
{cin >> n;init();LL ans = 1;// for(int i = 0;i <= n; i++) cout << gac_glen[i] << " ";for(int mid = 1; mid <= n; mid++){ans = (ans * qpow(mid, f[mid], MOD)) % MOD;}cout << ans << endl;
}int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T = 1;// cin >> T;while(T--){solve();}return 0;
}

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

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

相关文章

特伦斯 S75 电钢琴:重构演奏美学的极致表达

在数字音乐时代&#xff0c;电钢琴正从功能性乐器升级为融合艺术、科技与生活的美学载体。特伦斯 S75 电钢琴以极简主义哲学重构产品设计&#xff0c;将专业级演奏体验与现代家居美学深度融合&#xff0c;为音乐爱好者打造跨越技术边界的沉浸式艺术空间。 一、极简主义的视觉叙…

GpuGeek 618大促引爆AI开发新体验

随着生成式AI技术迅猛发展&#xff0c;高效可靠的算力资源已成为企业和开发者突破创新瓶颈的战略支点。根据赛迪顾问最新发布的《2025中国AI Infra平台市场发展研究报告》显示&#xff0c;2025年中国生成式人工智能企业应用市场规模将达到629.0亿元&#xff0c;作为AI企业级应用…

第二十章 文本处理

第二十章 文本处理 所有类UNIX系统都严重依赖于文本文件来存储数据&#xff0c;所以存在大量文本操作工具也在情理之中。 相关命令: cat&#xff1a;拼接文件。sort&#xff1a;排序文本行。uniq&#xff1a;报告或忽略重复的行。cut&#xff1a;从每行中删除部分内容。past…

Reactor 和 Preactor

Reactor 和 Preactor 是两个在工业控制、生产调度和事件驱动系统中非常重要的设计模式或框架&#xff0c;不少人会用这两个名词来描述不同的编程思想或技术架构。 一、Reactor 模式&#xff08;反应器模式&#xff09; 1. 概述 Reactor 模式其实是一种I/O事件通知的设计思想…

siglip2(2) Naflex模型的动态分辨率原理

动态分辨率的图片缩放行为 操作办法: 操作1。修改preprocessor_config.json,设置"max_num_patches": 256,可从256(1616)改为196(1414)。 操作2。在预处理图片时,可按照如下方式传入参数max_num_patches。 inputs = self.processor(images=videos, **{"ima…

​​技术深度解析:《鸿蒙5.0+:无感续航的智能魔法》​

​​引言&#xff1a;从“充电焦虑”到“无感续航”​​ ​​用户痛点​​&#xff1a; 刷短视频时电量暴跌、夜间待机掉电快、多设备切换耗电失控——传统系统无法平衡性能与功耗。​​鸿蒙5.0突破​​&#xff1a; 通过​​方舟引擎3.0​​&#xff08;编译级能效优化&#…

振动力学的三类基本问题

振动问题的分类依赖于分类的出发点&#xff0c;本文从系统论的角度来分析振动问题的分类。如图1&#xff0c;一个振动系统&#xff0c;包括三个方面&#xff1a;输入、系统特性&#xff08;或称为系统模型&#xff09;、输出。其中&#xff0c;输入指外界载荷&#xff0c;包括力…

过滤攻击-聚合数据

公开的聚合数据是通过对原始细粒度数据进行汇总、统计或转换后发布的&#xff0c;旨在提供群体层面的洞察而非个体信息。它们具有以下关键特征&#xff1a; 1. 去标识性&#xff08;De-identification&#xff09; 表现&#xff1a; 直接标识符&#xff08;姓名、身份证号、手机…

小红书 发评论 分析 x-s x-t

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向过程 部分Python代码 ck jso…

pycharm找不到高版本conda问题

pycharm找不到高版本conda问题 高版本的condaPycharm不能自动识别&#xff0c;需要手动添加。 首先打开你要添加的conda环境win的话在conda终端输入 where conda查找conda的可执行文件位置 进入Pycharm设置&#xff0c;点击添加解释器&#xff0c;点击加载环境&#xff0c;…

C56-亲自实现字符串拷贝函数

一 strcpy简介 功能&#xff1a;将源字符串&#xff08;包括 \0&#xff09;复制到目标地址。 原型&#xff1a; char *strcpy(char *dest, const char *src);参数&#xff1a; dest&#xff1a;目标地址&#xff08;需足够大&#xff09;。src&#xff1a;源字符串&#xf…

设计模式——适配器设计模式(结构型)

摘要 本文详细介绍了适配器设计模式&#xff0c;包括其定义、核心思想、角色、结构、实现方式、适用场景及实战示例。适配器模式是一种结构型设计模式&#xff0c;通过将一个类的接口转换成客户端期望的另一个接口&#xff0c;解决接口不兼容问题&#xff0c;提高系统灵活性和…

java 开发中 nps的内网穿透 再git 远程访问 以及第三放支付接口本地调试中的作用

在Java开发中&#xff0c;NPS内网穿透、Git远程访问和第三方支付接口的本地调试结合使用&#xff0c;可以有效提升开发效率和调试能力。以下是它们的具体作用及协作场景&#xff1a; 第一&#xff1a;为什么需要nps内网穿透 1. NPS内网穿透的作用 NPS&#xff08;内网穿透工具…

换ip是换网络的意思吗?怎么换ip地址

在数字化时代&#xff0c;IP地址作为我们在网络世界的"身份证"&#xff0c;其重要性不言而喻。许多人常将"换IP"与"换网络"混为一谈&#xff0c;实际上两者虽有联系却存在本质区别。本文将澄清这一概念误区&#xff0c;并详细介绍多种更换IP地址…

云游戏混合架构

云游戏混合架构通过整合本地计算资源与云端能力&#xff0c;形成了灵活且高性能的技术体系&#xff0c;其核心架构及技术特征可概括如下&#xff1a; 一、混合架构的典型模式 分层混合模式‌ 前端应用部署于公有云&#xff08;如渲染流化服务&#xff09;&#xff0c;后端逻辑…

Docker常用命令操作指南(一)

Docker常用命令操作指南-1 一、Docker镜像相关命令1.1 搜索镜像&#xff08;docker search&#xff09;1.2 拉取镜像&#xff08;docker pull&#xff09;1.3 查看本地镜像&#xff08;docker images&#xff09;1.4 删除镜像&#xff08;docker rmi&#xff09; 二、Docker容器…

软件性能之CPU

性能是个宏大而驳杂话题&#xff0c;从代码&#xff0c;到网络&#xff0c;到实施&#xff0c;方方面面都会涉及到性能问题&#xff0c;网上对性能讲解的文章多如牛毛&#xff0c;从原理到方法再到工具都有详细的介绍&#xff0c;本文虽不能免俗&#xff0c;但期望能从另外一个…

[SC]SystemC在CPU/GPU验证中的应用(三)

SystemC在CPU/GPU验证中的应用(三) 摘要:下面分享50个逐步升级SystemC编程能力的示例及建议的学习路线图。您可以一次一批地完成它们——从前五个基础的例子开始,然后转向channels, TLM, bus models, simple CPU/GPU kernels等等。在每个阶段掌握之后,再进行下一组…

如何设计高效的数据湖架构:存储策略、Schema 演进与数据生命周期管理

本文围绕现代数据湖架构的核心设计理念与实践展开,重点讨论如何高效组织数据存储、支持 Schema 演进与版本管理、实现冷热数据分层存储和生命周期治理,确保数据湖在性能、成本、演进和治理能力上的全面可控。 🧭 一、数据湖架构演进概览 传统数据仓库面对高频更新、Schema…

建筑兔零基础人工智能自学记录101|Transformer(1)-14

Transformer 谷歌提出&#xff0c;一组编码-解码器 可以同时处理&#xff0c;通过位置编码来处理单词 实质是token词语接龙&#xff08;只是有不同的概率&#xff09; token对应向量 Transformer简述 文生图就需要用到transformer黑箱 token 内部层次 中间主要是embedding…