2024 山东省ccpc省赛

目录

I(签到)

题目简述:

思路:

代码:

A(二分答案)

题目简述:

思路:

代码:

K(构造)

题目:

思路:

代码:

 F(后缀和+排序)

题目:

思路:

代码:



https://codeforces.com/gym/105385

I(签到)

题目简述:

判断一个字符串首位字符是否相同,如果初试状态不相同,是否可以经过整体左移后使其相同,如果相同输出左移次数,否则输出-1;

思路:

整体左移的操作是牵一发而动全身的,所以只有有俩相同且相邻字符时才可以通过左移操作使其符合条件

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
//typedef long long ll;
#define endl "\n"
#define PII pair<int,int>
//#define x first
//#define y second
//priority_queue<int, vector<int>, greater<int>> pq;//小根堆
//{并查集
//int fa[N];
//int n;
//void init(){
//	for(int i=0;i<=n;i++)fa[i]=i;
//}初始化
//int get(int x){
//	return fa[x]=(fa[x]==x?x:get(fa[x]));
//}查找
//void merge(int a,int b){
//	fa[get(a)]=get(b);
//}合并
//}
const int N=2e5+10;
void solve(){string s;cin >> s;if(s[0]==s[s.size()-1]){cout << 0 << endl;return ;}
特判一开始就符合条件的情况for(int i=0;i<s.size()-1;i++){if(s[i]==s[i+1]){cout << i+1 << endl;return ;}}cout <<-1 << endl;	
}	 
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int q;cin >> q;while(q--)solve();
}

A(二分答案)

题目简述:

使用n台打印机同时打印k份试题,每台打印机都是周期性工作,第i台打印机,每ti秒打印一份,每打印li份就要休息wi秒,问打印完所需要的最短时间;

思路:

很明显是一个二分答案,且是最大值最小类型(时间越多越能完成打印任务,xxx√√√,找第一个对号,最大值当中符合条件的最小值)

确定完二分后就要写check函数,我们二分时间,然后找当前时间内所有打印机能打印的最大份数,如果份数>k返回1,否则返回0

那么如何确定最大份数呢?我们可以把每一周期看做每一段,根据时间可以算得有多少段,有多少段就有多少个li

因为不一定是完整周期,所以我们还要考虑,最后一段不完整的区间,用剩下的时间除以ti,但是需要注意这个结果可能会越界到wi时间里,也就是说剩下的时间除以ti的值最大只能是li

这个二分还要注意一下边界,右边界需要设置大一点;

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
//typedef long long ll;
#define endl "\n"
#define PII pair<int,int>
//#define x first
//#define y second
//priority_queue<int, vector<int>, greater<int>> pq;//小根堆
//{并查集
//int fa[N];
//int n;
//void init(){
//	for(int i=0;i<=n;i++)fa[i]=i;
//}初始化
//int get(int x){
//	return fa[x]=(fa[x]==x?x:get(fa[x]));
//}查找
//void merge(int a,int b){
//	fa[get(a)]=get(b);
//}合并
//}
const int N=2e5+10;
int t[N],l[N],w[N];int n,k;
bool check(int x)
{int num=0;int p=x;for(int i=1;i<=n;i++){p=x;
//		if(p/t[i]<=l[i]){
//			num+=p/t[i];
//			continue;
//		}int q=t[i]*l[i]+w[i];num+=p/q*l[i];p-=p/q*q;if(p/t[i]<=l[i])num+=p/t[i];else num+=l[i];if(num>=k)return 1;}return 0;
}
void solve(){cin>> n >>k;for(int i=1;i<=n;i++){cin >> t[i] >> l[i] >> w[i] ;}	int l=1,r=2e18;while(l+1!=r){int mid=l+r>>1;if(check(mid))r=mid;else l=mid;}cout << r << endl;
}	 
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int q;cin >> q;while(q--)solve();
}

K(构造)

题目:

注意是不同行相同列

思路:

上面n-2行设置成i,然后最后两行前面n-2个数是从n-1—2*n-4

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
//typedef long long ll;
#define endl "\n"
#define PII pair<int,int>
//#define x first
//#define y second
//priority_queue<int, vector<int>, greater<int>> pq;//小根堆
//{并查集
//int fa[N];
//int n;
//void init(){
//	for(int i=0;i<=n;i++)fa[i]=i;
//}初始化
//int get(int x){
//	return fa[x]=(fa[x]==x?x:get(fa[x]));
//}查找
//void merge(int a,int b){
//	fa[get(a)]=get(b);
//}合并
//}
const int N=2e5+10;
void solve(){int n;cin >>n;cout << "Yes" <<endl;if(n>3){int a=2*n-3,b=2*n-2,c=2*n-1,d=2*n;
最后四个数单独揪出来for(int i=1;i<=n-2;i++){for(int j=1;j<=n;j++){cout << i << ' ' ;}cout << endl;;}
前n-2行都为iint js=0;for(int i=1;i<=2;i++){for(int j=n-1;j<n-1+n;j++){js++;if(js==n-1)cout << a << ' ';else if(js==n)cout << b << ' ';else if(js==2*n-1)cout << c << ' ';else if(js==2*n)cout << d << ' ';else cout << j <<' ';}cout << endl;}}if(n==2){cout << 1 << ' ' <<2 << endl;cout << 3 << ' ' << 4 << endl;}if(n==3){cout << 3 << ' ' << 2 << ' ' << 6 << endl;cout << 4 << ' ' << 3 << ' ' << 3 << endl;cout << 3 << ' ' << 1 << ' ' << 5 << endl;}
}	 
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int q=1;
//	cin >> q;while(q--)solve();
}

 F(后缀和+排序)

题目:

思路:

  1. 前缀和逆序处理:从后往前计算数组 a 的前缀和,将原数组转化为后缀和数组形式,a[i] 变为从 i 到 n 的元素和 。
  2. 排序:对 a[2] 到 a[n] 排序,此时数组从大到小排列(a[1] 是原数组所有元素和,单独处理 )。
  3. 输出结果
    • 先输出 a[1],这是 k = 1 时的结果 。
    • 然后依次累加并输出后续元素,每次累加对应增加一段,实现对不同 k 值结果的计算与输出 

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
//typedef long long ll;
#define endl "\n"
#define PII pair<int,int>
//#define x first
//#define y second
//priority_queue<int, vector<int>, greater<int>> pq;//小根堆
//{并查集
//int fa[N];
//int n;
//void init(){
//	for(int i=0;i<=n;i++)fa[i]=i;
//}初始化
//int get(int x){
//	return fa[x]=(fa[x]==x?x:get(fa[x]));
//}查找
//void merge(int a,int b){
//	fa[get(a)]=get(b);
//}合并
//}
const int N=5e5+10;
int a[N];
void solve(){int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=n-1;i>=1;i--)a[i]+=a[i+1];sort(a+2,a+n+1);int sum=a[1];cout<<sum<<" ";for(int i=n;i>=2;i--) {sum+=a[i];cout<<sum<<" ";}cout<<endl;
}	 
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int q=1;cin >> q;while(q--)solve();
}

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

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

相关文章

turn.js与 PHP 结合使用来实现 PDF 文件的页面切换效果

将 Turn.js 与 PHP 结合使用来实现 PDF 文件的页面切换效果&#xff0c;你需要一个中间步骤将 PDF 转换为 Turn.js 可以处理的格式&#xff08;如 HTML 页面或图片&#xff09;。以下是实现这一功能的步骤和示例代码&#xff1a; 步骤 1: 安装必要的库 首先&#xff0c;你需要…

Python实现NOA星雀优化算法优化卷积神经网络CNN回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 在当今数据驱动的时代&#xff0c;卷积神经网络&#xff08;CNN&#xff09;不仅在图像分类任务中…

(面试)View相关知识

1、View绘制流程 onMeasure() 确定View的测量宽高。onLayout() 确定View的最终宽高和四个顶点的位置。onDraw() 将View 绘制到屏幕上。 2、MeasureSpec有三种测量模式&#xff1a; 2.1. EXACTLY&#xff08;精确模式&#xff09; 含义&#xff1a;父容器明确指定了子View的精…

数组名既可作为指针也可作为变量名

在C语言中&#xff0c;数组名在不同的上下文中既可以作为指向数组首个元素的指针&#xff0c;也可以代表整个数组&#xff0c;这是由C语言的设计和语法规则决定的&#xff0c;下面我来详细解释一下。 1. 数组名作为指向首元素的指针 在大多数情况下&#xff0c;当数组名出现在…

Java异常、泛型与集合框架实战:从基础到应用

在Java编程的世界里&#xff0c;异常处理、泛型和集合框架是构建高效、健壮应用的关键技术。通过掌握这些技术&#xff0c;我们可以更好地管理程序运行时的错误&#xff0c;提高代码的复用性和类型安全性。今天&#xff0c;我将通过一系列实验&#xff0c;分享如何在Java中使用…

Spring源码之解决循环依赖 三级缓存

目录 三级缓存核心原理 循环依赖的解决过程 1. Bean A创建过程中提前曝光工厂 2. Bean B创建时发现依赖A&#xff0c;从缓存获取 3. Bean A继续完成初始化 三级缓存的作用总结 二级缓存为何不够解决缓存依赖&#xff1f; 三级缓存如何解决&#xff1f; 为什么不直接在…

K8S Ingress 实现AB测试、蓝绿发布、金丝雀(灰度)发布

假设有如下三个节点的 K8S 集群&#xff1a; ​ k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、场景分析 阅读本文&#xff0c;默认您已经安装了 Ingress Nginx。 1&#xff09;A/B 测试 A/B 测试基于用户请求的元信息将流量路由…

深入理解构造函数,析构函数

目录 1.引言 2.构造函数 1.概念 2.特性 3.析构函数 1.概念 2.特性 1.引言 如果一个类中什么都没有&#xff0c;叫作空类. class A {}; 那么我们这个类中真的是什么都没有吗?其实不是,如果我们类当中上面都不写.编译器会生成6个默认的成员函数。 默认成员函数:用户没有显…

Oracle 11.2.0.4 pre PSU Oct18 设置SSL连接

Oracle 11.2.0.4 pre PSU Oct18 设置SSL连接 1 说明2 客户端配置jdk环境3服务器检查oracle数据库补丁4设置ssla 服务器配置walletb 上传测试脚本和配置文件到客户端c 服务器修改数据库侦听和sqlnet.orad 修改客户端的sqlnet.ora和tnsnames.ora的连接符e 修改java代码的数据连接…

BrepGen中的几何特征组装与文件保存详解 deepwiki occwl OCC包装库

有这种好东西我怎么不知道 AutodeskAILab/occwl: Lightweight Pythonic wrapper around pythonocc 组装几何特征以创建B-rep模型 保存为STEP和STL文件细说 Fast 快速 Searched across samxuxiang/BrepGen Ill explain how BrepGen assembles geometric features to create B-r…

重庆 ICPC 比赛游记

2025.5.9 比赛前一天晚上&#xff0c;激动地睡不着觉&#xff0c;起来收拾了好多东西。&#xff08;其实就四本书&#xff0c;剩下的全是零食……关键在于这四本书基本没用。&#xff09; 2025.5.10 学校丧心病狂的让我们 6:20 到校门口集合坐车&#xff08;据说是怕赶不上比…

0x08.Redis 支持事务吗?如何实现?

回答重点 Redis 支持事务,但它的事务与 MySQL 等关系型数据库的事务有着本质区别。MySQL 中的事务严格遵循 ACID 特性,而 Redis 中的事务主要保证的是命令执行的原子性和隔离性,即所有命令在一个不可分割的操作中顺序执行,不会被其他客户端的命令请求所打断。 最关键的区…

佰力博科技与您探讨表面电阻的测试方法及应用领域

表面电阻测试是一种用于测量材料表面电阻值的技术&#xff0c;广泛应用于评估材料的导电性能、静电防护性能以及绝缘性能。 1、表面电阻的测试测试方法&#xff1a; 表面电阻测试通常采用平行电极法、同心圆电极法和四探针法等方法进行。其中&#xff0c;平行电极法通过在试样…

数据库的规范化设计方法---3种范式

第一范式&#xff08;1NF&#xff09;&#xff1a;确保表中的每个字段都是不可分割的基本数据项。 第二范式&#xff08;2NF&#xff09;&#xff1a;在满足1NF的基础上&#xff0c;确保非主属性完全依赖于主键。 第三范式&#xff08;3NF&#xff09;&#xff1a;在满足2NF的基…

产品经理入门(2)产品体验报告

产品体验报告大纲&#xff1a;重点在产品体验——优点。 1.产品概括 可以从各大平台搜产品介绍。 2.市场分析 按照产品方向分析各个指标——包括有效使用时间,市场规模等。 3. 用户分析——对用户通过各项指标画像。 4.产品体验——对各项功能与设计的体验。 5.报告总结

[Java][Leetcode simple] 13. 罗马数字转整数

一、自己想的 只有提到的六种情况是-&#xff0c;其他都是 public int romanToInt1(String s) {int res 0;int n s.length();Map<Character, Integer> map new HashMap<>();map.put(I, 1);map.put(V, 5);map.put(X, 10);map.put(L, 50);map.put(C, 100);map.pu…

如何在 CentOS 7 虚拟机上配置静态 IP 地址并保持重启后 SSH 连接

在使用 CentOS 7 的虚拟机时&#xff0c;我们通常需要配置静态 IP 地址&#xff0c;以确保在每次虚拟机重启后能够通过 SSH 连接。本文将介绍如何在 CentOS 7 系统中配置静态 IP 地址&#xff0c;并确保配置在系统重启后依然生效。 步骤 1&#xff1a;检查虚拟机网络接口 首先…

matlab求解问题

一、目的 掌握Matlab中函数求导、函数极值和极限问题的求解,能够借助Matlab工具对简单优化模型进行求解。 二、内容与设计思想 1、函数求导 1.1求解给定函数的一阶导数&#xff1a;diff(y, x)用于对变量x求y的导数。 1.2求解给定函数的二阶导数&#xff1a;在求出一阶导数的…

C语言斐波那契数列

斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列 、兔子数列。由意大利数学家莱昂纳多・斐波那契在 1202 年提出&#xff0c;源于其《算盘书》中一道兔子繁殖问题。定义&#xff1a;在数学上&#xff0c;该数列以递归形式定义。最常见的是…

AI浪潮:开启科技新纪元

AI 的多面应用​ AI 的影响力早已突破实验室的围墙&#xff0c;在众多领域落地生根&#xff0c;成为推动行业变革的重要力量。 在医疗领域&#xff0c;AI 宛如一位不知疲倦的助手&#xff0c;助力医生提升诊疗效率与准确性。通过对海量医学影像的深度学习&#xff0c;AI 能够快…