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

Codeforces Round 1003 (Div. 4)(A~G题题解)

A. Skibidus and Amog'u

思路:把字符串最后的us变成i就可以了,水题一个

#include <iostream>  
#include <string>  int main() {  int t;  std::cin >> t;  std::cin.ignore();  while (t--) {  std::string W;  std::getline(std::cin, W); if (W.length() >= 2 && W.substr(W.length() - 2) == "us") {  std::string root = W.substr(0, W.length() - 2);  std::string plural = root + "i";  std::cout << plural << std::endl;  }  }  return 0;  
}

B. Skibidus and Ohio

 思路,有一对相邻的相同就可以把整个序列的长度变成1,否则就是原长度

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,k;
int a[200005];
string s;
void solve()
{cin>>s;for(int i=0;i<s.size()-1;i++){if(s[i]==s[i+1]){cout<<1<<"\n";return ;}}cout<<s.size()<<"\n";
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--)solve();return 0;
}

C1. Skibidus and Fanum Tax (easy version)

思路:本题b数组只有一个数,那么我们将a数组所有数都与b数组进行计算,

我们设x=a[i],y=b[i]-a[i],

1.假设x和y都大于等于前面一个,我们就选择min(x,y)作为a[i]

2.如果只有x大于等于前面一个,就选择x作为a[i]

3.如果只有y大于等于前面一个,就选择y作为a[i]

4.如果都不大于,就输出NO结束这次测试数据

如果运行到最后就是输出YES

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m;
int a[200005];
int b[200005];
string s;
void solve()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=m;i++){cin>>b[i];}a[0]=-0x3f3f3f3f;int flag=1;for(int i=1;i<=n;i++){if(b[1]-a[i]<=a[i]&&b[1]-a[i]>=a[i-1]){a[i]=b[1]-a[i];}else if(b[1]-a[i]>=a[i-1]&&a[i]<a[i-1]){a[i]=b[1]-a[i];}if(a[i]<a[i-1]){flag=0;break;}}if(flag==0){cout<<"NO\n";}else{cout<<"YES\n";}
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--)solve();return 0;
}

C2. Skibidus and Fanum Tax (hard version)

思路:一眼二分,我们还是上面的处理思路,但是我们该如何选取b[j]-a[i]呢?

我们可以用lower_bound去寻找第一个大于a[i]+a[i-1]的b[i]的位置,找到之后,就是c1的处理方式,直接去操作就可以了

分四步走战略

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m;
int a[200005];
int b[200005];
string s;
void solve()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=m;i++){cin>>b[i];}b[m+1]=1e12;sort(b+1,b+1+m);a[0]=-1e12;a[1]=min(a[1],b[1]-a[1]);for(int i=2;i<=n;i++){int flag=a[i-1]+a[i];int pos=lower_bound(b+1,b+2+m,flag)-b;if(pos==m+1&&a[i]<a[i-1]){cout<<"NO\n";return ;}else if(pos>=1&&pos<=m&&a[i]<a[i-1]&&b[pos]-a[i]>=a[i-1]){a[i]=b[pos]-a[i];}else if((pos>=1&&pos<=m&&a[i]>=b[pos]-a[i]&&b[pos]-a[i]>=a[i-1])){a[i]=b[pos]-a[i];}}cout<<"YES\n";
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--)solve();return 0;
}

D. Skibidus and Sigma

思路:其实就是按照顺序单行数组的累加和大小排序就行,然后计算一遍累加和就过了

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m;
int x;
int sum;
string s;
pair<int,int> p[200005];
void solve()
{cin>>n>>m;int a[n+1][m+1];for(int i=1;i<=n;i++){sum=0;for(int j=1;j<=m;j++){cin>>a[i][j];sum+=a[i][j];}p[i].first=sum;p[i].second=i;}sort(p+1,p+1+n);sum=0;int ans=0;for(int i=n;i>=1;i--){for(int j=1;j<=m;j++){sum+=a[p[i].second][j];ans+=sum;}}cout<<ans<<"\n";
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--)solve();return 0;
}

 E. Skibidus and Rizz

思路:我们首先要排除两种可能得情况

1,n<k,m<k,如果都小于k,就算单纯连起来也不可能达到要求,直接输出NO

2,abs(n-m)>k,整体都大于k了,呢么已经超过了最大平衡值k,所以不满足直接输出NO

3.否则,我们就先用最多的数构建一个长度为k的序列,如果是0,那么后续就跟10,直到其中一个没有了,如果剩下的是0,就补到最后面,如果剩下的是1,就补到前面,反之依然,就可以解决了

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m,k;
int a[200005];
void solve()
{cin>>n>>m>>k;if(abs(n-m)>k){cout<<-1<<"\n";}else if(k>n&&k>m){cout<<-1<<"\n";}else{string s="";if(n>=m){n-=k;for(int i=1;i<=k;i++){s+="0";}for(int i=1;i<=min(n,m);i++){s+="10";}if(n>=m){for(int i=1;i<=n-m;i++){s+="0";}}else{for(int i=1;i<=m-n;i++){s+="1";}}}else{m-=k;for(int i=1;i<=k;i++){s+="1";}for(int i=1;i<=min(n,m);i++){s+="01";}if(n>=m){for(int i=1;i<=n-m;i++){s+="0";}}else{for(int i=1;i<=m-n;i++){s+="1";}}}cout<<s<<"\n";}}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--)solve();return 0;
}

F. Skibidus and Slay

思路:直接去寻找每一个点链接的子节点,只要出现的次数大于等于2,就可以将其标注为1

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,k;
int a[500005];
int u,v;
vector<int> e[500005];
string s;
void dfs(int v,int fa,vector<int> &vis)
{map<int,int> mp;mp.clear();mp[a[v]]++;for(int u:e[v]){mp[a[u]]++;if(mp[a[u]]==2){vis[a[u]]=1;}}for(int u:e[v]){if(u!=fa){dfs(u,v,vis);}}
}
void solve()
{cin>>n;vector<int> vis(n+1,0);for(int i=1;i<=n;i++) {  e[i].clear();  }  for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n-1;i++){cin>>u>>v;e[u].push_back(v);e[v].push_back(u);}dfs(1,-1,vis);for(int i=1;i<=n;i++)cout<<vis[i]; cout<<"\n";
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--)solve();return 0;
}

 G. Skibidus and Capping

思路:直接找到1~200000,里面的所有的素数,我们只需要统计三种情况的结果即可,

1,如果是素数的话,要找到所有和他能匹配的素数

2.如果是pq和pq的话,我们直接计算即可 

3.如果是pq的话,我们要找到所有的p和q的数量

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,k;
int a[200005];
int pri[200005];//素数集合 
int vis[200005];//判断是否是素数
int cnt=0;//统计素数数量 
int p[200005];//每个数的最小质数 
int shu[200005];
void ini()
{vis[1]=1;for(int i=2;i<=200000;i++){if(vis[i]==0){cnt++;pri[cnt]=i;}for(int j=1;j<=cnt&&i*pri[j]<=200000;j++){vis[i*pri[j]]=1;p[i*pri[j]]=pri[j];if(i%pri[j]==0)break;}} 
}
//三种情况
//1.两个都是素数
//2.pq和pq这种
//3.p和pq这种 
void solve()
{cin>>n;int num=0;//用于统计素数个数 for(int i=1;i<=n;i++){cin>>a[i];if(vis[a[i]]==0){num++; }shu[a[i]]++;}int ans=(num+1)*num/2;for(int i=2;i<=n;i++){//第一种 if(vis[i]==0){ans-=shu[i]*(shu[i]+1)/2;continue;}int q=i/p[i];if(vis[q]==1){continue;}//第二种 ans+=shu[i]*(shu[i]+1)/2;//第三种ans+=shu[i]*shu[p[i]];if(q!=p[i]){ans+=shu[i]*shu[q]; }}cout<<ans<<"\n";for(int i=1;i<=200000;i++){shu[i]=0;}
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ini();cin>>t;while(t--)solve();return 0;
}

 

相关文章:

Codeforces Round 1003 (Div. 4)(A~G题题解)

A. Skibidus and Amogu 思路&#xff1a;把字符串最后的us变成i就可以了&#xff0c;水题一个 #include <iostream> #include <string> int main() { int t; std::cin >> t; std::cin.ignore(); while (t--) { std::string W; std::getline(std::c…...

ubuntu使用防火墙开放和关闭指定端口

防火墙可以阻止或允许外部对特定端口的访问&#xff0c;Ubuntu 常用的防火墙管理工具是 ufw&#xff08;Uncomplicated Firewall&#xff09; &#xff0c;如果在开发网络通信相关的内容时&#xff0c;要确保所需的端口是打开的&#xff0c;这样可以排除出题出现时的一个问题—…...

CP AUTOSAR标准之GPTDriver(AUTOSAR_SWS_GPTDriver)(更新中……)

1 简介和功能概述 该规范指定了AUTOSAR基础软件模块GPT驱动程序的功能、API和配置。   GPT驱动程序是微控制器抽象层(MCAL)的一部分。它初始化并控制微控制器的内部通用定时器(GPT)。   GPT驱动程序提供服务和配置参数 启动和停止硬件计时器获取计时器值控制时间触发的中断…...

mysql8.0使用PXC实现高可用

1.什么是 PXC PXC 是一套 MySQL 高可用集群解决方案&#xff0c;与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题&#xff0c;基本上可以达到实时同步。而且节点与节点之间&#xff0c;他们相互的关系是对等的。PXC 最关注的是数据…...

大数据学习之SparkStreaming、PB级百战出行网约车项目一

一.SparkStreaming 163.SparkStreaming概述 Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams. Spark Streaming 是核心 Spark API 的扩展&#xff0c;支持实时数据…...

Ollama部署DeepSeek(windows or ubuntu)

Ollama(官网是https://ollama.com/)是一个专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计的开源框架。它简化了大型语言模型的部署过程&#xff0c;提供了轻量级与可扩展的架构&#xff0c;使得研究人员、开发人员和爱好者能够更加方便地在本地…...

10.代码生成器-树表

1.导入部门表 2.配置生成信息页面 生成代码即可使用。...

2050年10月26日,星期四,芜湖

2050年10月26日&#xff0c;星期四&#xff0c;芜湖 清晨6:30&#xff0c;阳光透过智能调光窗帘缓缓洒进卧室&#xff0c;没有刺耳的闹钟&#xff0c;取而代之的是模拟自然光线和舒缓的江水声&#xff0c;这是林薇一天美好的开始。她的智能手环早已监测到她已进入浅睡眠状态&a…...

Python的那些事第十六篇:Python的网络爬虫技术

基于Python的网络爬虫技术研究与应用 摘要 随着互联网的飞速发展&#xff0c;网络爬虫技术在数据采集、信息挖掘等领域发挥着重要作用。本文详细介绍了Python环境下常用的网络爬虫技术&#xff0c;包括Requests库、BeautifulSoup库以及Scrapy框架。通过对这些工具的使用方法、…...

【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)

在 Visual Studio Code (VSCode) 中集成 AI 编程能力&#xff0c;可以通过安装和配置特定插件来实现。以下是如何通过 Continue 和 Cline 插件集成 DeepSeek&#xff1a; 一、集成 DeepSeek 获取 DeepSeek API 密钥&#xff1a;访问 DeepSeek 官方网站&#xff0c;注册并获取 …...

如何下载CentOS镜像文件

文章目录 如何下载CentOS镜像文件 如何下载CentOS镜像文件 直接前往阿里云官网下载即可。 阿里云官网地址&#xff1a;https://www.aliyun.com 进入官网后&#xff0c;鼠标停留在文档与社区位置&#xff0c;找到镜像站&#xff0c;点击进入即可。进入后&#xff0c;我们可以…...

大模型chagpt原理(持续更新)

20250210更新&#xff1a; 根据李宏毅课程可知&#xff0c;大模型chatgpt基本原理分为三步&#xff08;每一步都是在做文字接龙&#xff0c;但训练资料不同&#xff09; 一、依赖大量网上文章、维基百科等资料训练 对资料进行去重&#xff0c;劣质优质划分&#xff0c;过滤等…...

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号&#xff0c;Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析&#xff0c;集成Deepseek R1大模型&#xff0c;通过AI技术的深度融合&#xff0c;致力于打造"会思考的BI系统"&#xff0c;让数据价值触手可及&#xff0c;助力企业实现从数据洞察到决策执…...

嵌入式C语言:大小端详解

目录 一、大小端的概念 1.1. 大端序&#xff08;Big-endian&#xff09; 1.2. 小端序&#xff08;Little-endian&#xff09; 二、大小端与硬件体系的关系 2.1. 大小端与处理器架构 2.2. 大小端与网络协议 2.3. 大小端对硬件设计的影响 三、判断系统的大小端方式 3.1.…...

Vue事件处理 - 按键修饰符

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 按键修饰符 目录 按键修饰符 常见修饰符 绑定按键事件 绑定事件 优化回车修饰符 多个按键 直接绑定数字 总结 按键修饰符 常见修饰符 .esc .up .down .left .right . space .ctrl .shift .delete 绑定…...

数据中心网络监控

数据中心是全球协作的特定设备网络&#xff0c;用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。 对于任何利用IT基础设施的企业来说&#xff0c;数据中心都是运营的核心&#xff0c;它本质上为整个业务网络托管业务应用程序和存储空间。数据中心可以是任…...

基于Kotlin中Flow扩展重试方法

最近项目中统一采用Kotlin的Flow来重构了网络请求相关代码。 目前的场景是&#xff0c;接口在请求的时候需要一个accessToken值&#xff0c;因为此值会过期或者不存在&#xff0c;需要刷新&#xff0c;因此最终方案是在使用Flow请求的时候先获取accessToken值然后再进行接口请求…...

oracle如何查询历史最大进程数?

oracle如何查询历史最大进程数&#xff1f; SQL> desc dba_hist_resource_limitName Null? Type---------------------------------------------------- -------- ------------------------------------SNAP_ID …...

利用HTML和css技术编写学校官网页面

目录 一&#xff0c;图例展示 二&#xff0c;代码说明 1&#xff0c;html部分&#xff1a; 【第一张图片】 【第二张图片】 【第三张图片】 2&#xff0c;css部分&#xff1a; 【第一张图片】 【第二张图片】 【第三张图片】 三&#xff0c;程序代码 一&#xff0c;…...

PostgreSQL错误: 编码“UTF8“的字符0x0xe9 0x94 0x99在编码“WIN1252“没有相对应值

错误介绍 今天遇到一个错误&#xff0c;记录一下 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"WIN1252"的字符0x0x81在编码"UTF8"没有相对应值 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"UTF8"的字符0x0xe9 0x94 0x99在编码&quo…...

Flink KafkaConsumer offset是如何提交的

一、fllink 内部配置 client.id.prefix&#xff0c;指定用于 Kafka Consumer 的客户端 ID 前缀partition.discovery.interval.ms&#xff0c;定义 Kafka Source 检查新分区的时间间隔。 请参阅下面的动态分区检查一节register.consumer.metrics 指定是否在 Flink 中注册 Kafka…...

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动 1. 前情&#xff1a; 1TB的硬盘&#xff0c;分了120G作ubuntu22.04。/boot: 300MB, / : 40GB, /home: 75G, 其余作swap area。 2. 一开始按这个教程&#xff1a;对我无效 https://blog.csdn.net/Eric_xkk/article/details/1…...

Web3 的虚实融合之路:从虚拟交互到元宇宙构建

在这个数字技术日新月异的时代&#xff0c;我们正站在 Web3 的门槛上&#xff0c;见证着互联网的又一次革命。Web3 不仅仅是技术的迭代&#xff0c;它代表了一种全新的交互方式和价值创造模式。本文将探讨 Web3 如何推动虚拟交互的发展&#xff0c;并最终实现元宇宙的构建&…...

QT修仙笔记 事件大圆满 闹钟大成

学习笔记 牛客刷题 闹钟 时钟显示 通过 QTimer 每秒更新一次 QLCDNumber 显示的当前时间&#xff0c;格式为 hh:mm:ss&#xff0c;实现实时时钟显示。 闹钟设置 使用 QDateTimeEdit 让用户设置闹钟时间&#xff0c;可通过日历选择日期&#xff0c;设置范围为当前时间到未来 …...

变相提高大模型上下文长度-RAG文档压缩-1.常识

前言 之前遇到一个问题&#xff0c;公司大模型的长度不长&#xff0c;而且业务需要RAG返回不少的相关内容。通常RAG都是取top-10/15&#xff0c;文档由于长度限制不能太多&#xff0c;加上embedding效果不佳&#xff0c;返回的文档不多也不能保证都相关。 我们考虑到返回的文…...

人工智能浪潮下脑力劳动的变革与重塑:挑战、机遇与应对策略

一、引言 1.1 研究背景与意义 近年来&#xff0c;人工智能技术发展迅猛&#xff0c;已成为全球科技领域的焦点。从图像识别、语音识别到自然语言处理&#xff0c;从智能家居、智能交通到智能医疗&#xff0c;人工智能技术的应用几乎涵盖了我们生活的方方面面&#xff0c;给人…...

2025 年 2 月 TIOBE 指数

2025 年 2 月 TIOBE 指数 二月头条:快,更快,最快! 现在,世界需要每秒处理越来越多的数字,而硬件的发展速度却不够快,程序的速度变得越来越重要。话虽如此,快速编程语言在 TIOBE 指数中取得进展也就不足为奇了。编程语言 C++ 最近攀升至第 2 位,Go 已稳居前 10 名,Ru…...

防火墙是什么?详解网络安全的关键守护者

当今信息化时代&#xff0c;企业和个人在享受数字生活带来的便利时&#xff0c;也不可避免地面对各种潜在的风险。防火墙作为网络安全体系中的核心组件&#xff0c;就像一道牢不可破的防线&#xff0c;保护着我们的数据和隐私不受外界威胁的侵害。那么防火墙是什么&#xff1f;…...

【Elasticsearch】cumulative_cardinality

1.定义与用途 cumulative_cardinality是一种父级管道聚合&#xff08;Parent Pipeline Aggregation&#xff09;&#xff0c;用于在父级直方图&#xff08;histogram&#xff09;或日期直方图&#xff08;date_histogram&#xff09;聚合中计算累计基数。它主要用于统计在某个…...

【LeetCode 刷题】贪心算法(2)-进阶

此博客为《代码随想录》贪心算法章节的学习笔记&#xff0c;主要内容为贪心算法进阶的相关题目解析。 文章目录 135. 分发糖果406. 根据身高重建队列134. 加油站968. 监控二叉树 135. 分发糖果 题目链接 class Solution:def candy(self, ratings: List[int]) -> int:n l…...