2024CCPC辽宁省赛 个人补题 ABCEGJL

news2025/5/25 0:51:28

Dashboard - 2024 CCPC Liaoning Provincial Contest - Codeforces

过题难度

B A J C L E G

铜奖  4 953

银奖  6 991

金奖  8 1664

B:

模拟题

// Code Start Here	
	string s;
	cin >> s;
	reverse(all(s));
	cout << s << endl;
	

A:很明显的哈希一下,然后去重即可,这里set和map都可以

// Code Start Here	
	string s;
	getline(cin , s);
	for(int i = 0;i<sz(s);i++){
		if((s[i] >= 'A' && s[i] <= 'Z')){
			s[i] += 32;
		}
	}
	set<string> st;
	for(int i = 0;i<sz(s);i++){
		if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')){
			int j = i;
			string t = "";
			while((s[j] >= 'a' && s[j] <= 'z') || (s[j] >= 'A' && s[j] <= 'Z')) t += s[j++];
			i = j;
			st.insert(t);
		}
	}
	int q;
	cin >> q;
	while(q--){
		string t;
		cin >> t;
		if(st.find(t) != st.end())st.erase(t);
	}
//	for(auto i : st)cout << i <<" ";
	cout << sz(st) << endl;
	

J

模拟前后两次的人数

// Code Start Here	
	int n;
	cin >> n;
	int a , b , c;
	cin >> a >> b >> c;
	vector<int> x(n + 1) , y (n + 1);
	for(int i = 1;i<=n;i++)cin >> x[i] >> y[i];
	int d;
	cin >> d;
	
	int before = 0 , after = 0;
	for(int i = 1;i<=n;i++){
		if(x[i] + y[i] >= c){
			before++;
		}
	}
	for(int i = 1;i<=n;i++) x[i] = min(a , x[i] + d);
	for(int i = 1;i<=n;i++){
		if(x[i] + y[i] >= c){
			after++;
		}
	}
	cout <<after - before << endl;

C

DFS跑一遍每个插座和插排的功率,然后贪心跑一遍判断即可

// Code Start Here	
	
	int n;
	cin >> n;
	vector<int> w(n + 1);
	vector<vector<int>> g(n + 1);
	vector<int> f(n + 1);
	for(int i = 1;i<=n;i++){
		int u;
		cin >> u >> w[i];
		g[u].push_back(i);
	}
	w[0] = 2200;
	auto dfs = [&](auto &&self , int u)->void{
		if(g[u].empty())f[u] += w[u];
		for(auto v : g[u]){
			self(self,v);
			f[u] += f[v];
		}
	};
	dfs(dfs , 0);
	vector<int> e , ee;
	for(int i = 0;i<=n;i++){
		if(!g[i].empty()){
			e.push_back(f[i]);
			ee.push_back(w[i]);
		}
	}
	sort(all(e)) , sort(all(ee));
	bool flag = true;
	for(int i = 0;i<sz(e);i++){
		if(e[i] > ee[i] || e[i] > w[0])flag = false;
	}
	cout << ( flag ? "YES" : "NO") <<endl;

L

题意:

2024年起,每平年 +1 层数。但有特殊规则,年份必须是 4 的倍数,且不能是 100 的倍数但不是 10000 的倍数,否则是平年。到第 k 层的时候,是哪一年

思路:

可以不断贪心,更简单的方法是二分年份,然后找第k个合法年份。

计算到年份 x 之间,有多少个平年。遍历 i = 4, 400, 40000, ... 逐个计算:x / i 表示小于等于 x 有多少个 i 的倍数(4, 400, 40000, ...)x / (25 * i) 表示去掉那些是100倍数但不是10000倍数的年数。x - sum 表示有效的龙之研习年份数量,看看是不是到达了第 n + 1533 个。这里的 1533 是因为:2024是第0层,到2024年底总共经历了 2024 - 1533 = 491 个有效年份(实际上这1533是题目设定的初始偏移值,具体是为了校正年份起点和层数的关系)

// Code Start Here	
	int t;
	cin >> t;
	while(t--){
		int n;
		cin >> n;
		int l = 2025 , r = 2e18;
		auto check = [&](int x)->bool{
			int sum = 0;
			for(int i = 4;i<=x;i*= 100){
				sum += x / i - x / (25 * i);
			}
			return (x - sum) >= (n + 1533);
		};
		while(l <= r){
			int mid = l + r >> 1;
			if(check(mid)) r = mid - 1;
			else l = mid + 1;
		}
		cout << l << endl;
	}

E

一道大模拟

// Code Start Here	
	int t;
	cin >> t;
	auto solve = [&]()->void{
		int x, y; 
		cin >> x >> y;
		if(x*y %4 !=0){
			cout << "NO\n";
			return ;
		}
		vector a(x+1, vector<int>(y+1, 0));
		auto yes = [&](){
			cout << "YES\n";
			for(int i=1; i<=x; ++i){
				for(int j=1; j<=y; ++j) cout << a[i][j] << " ";
				cout << endl;
			}
		};
		if(x % 4 == 0){
			int cnt = 1;
			for(int j=1; j<=y; j++){
				for(int i=1; i<=x; i+=4){
					a[i][j] = a[i+1][j] = a[i+2][j] = a[i+3][j] = cnt++;
				}
			}
			yes();
			return;
		}
		if(y % 4 ==0){
			int cnt=1;
			for(int i=1; i<=x; i++){
				for(int j=1; j<=y; j+=4){
					a[i][j] = a[i][j+1] = a[i][j+2] = a[i][j+3] = cnt++;
				}
			}
			yes();
			return;
		}
		if(x%2 ==0 && y%2 ==0){
			if(y >=6 && (y-6)%4 ==0){
				for(int i=1; i<=x; i+=2){
					int temp = (i/2)*((y-6)/4*2 +3) +1;
					a[i][1] = a[i][2] = a[i][3] = a[i+1][1] = temp;
					a[i][4] = a[i][5] = a[i][6] = a[i+1][6] = temp+1;
					a[i+1][2] = a[i+1][3] = a[i+1][4] = a[i+1][5] = temp+2;
					int cnt = temp+3;
					for(int j=7; j<=y; j+=4){
						a[i][j] = a[i][j+1] = a[i][j+2] = a[i][j+3] = cnt++;
						a[i+1][j] = a[i+1][j+1] = a[i+1][j+2] = a[i+1][j+3] = cnt++;
					}
				}
				yes();
				return;
			}
			else if(x >=6 && (x-6)%4 ==0){
				for(int j=1; j<=y; j+=2){
					int temp = (j/2)*((x-6)/4*2 +3) +1;
					a[1][j] = a[2][j] = a[3][j] = a[1][j+1] = temp;
					a[4][j] = a[5][j] = a[6][j] = a[6][j+1] = temp+1;
					a[2][j+1] = a[3][j+1] = a[4][j+1] = a[5][j+1] = temp+2;
					int cnt = temp+3;
					for(int i=7; i<=x; i+=4){
						a[i][j] = a[i+1][j] = a[i+2][j] = a[i+3][j] = cnt++;
						a[i][j+1] = a[i+1][j+1] = a[i+2][j+1] = a[i+3][j+1] = cnt++;
					}
				}
				yes();
				return;
			}
		}
		cout << "NO\n";
	};
	while(t--){
		solve();
	}

G

题意:给定一个长度为n的数组,求存在多少个子数组满足最大 值出现至少k 次。

思路:对于每一个位置i,我们可以考虑其作为第一个最大值时对答案的贡献,即能保证不重不漏的计数。不妨设:Li 为以 i 为起点,从右往左第一个比ai 大的元素的位置;Ri 为以 i 为起点,从左往右第一个比ai 大的元素的位置;lsti 为相对于当前位置 i,ai 上一次出现的位置;nxti 为相对于当前位置 i,ai 第 k 次出现的位置。

其中,Li 和Ri 可以通过单调栈计算,lsti 和nxti 则可以通过对值域开桶,根据每个位置在对应的桶中的相对位置进行计算。对于当前位置i 作为第一个最大值的数组:其左端点的合法范围是(max(lsti,Li),i],其右端点的合法范围是[i,min(nxti,Ri))。最后,统计每个位置作为第一个最大值时的贡献,即能求出结果

// Code Start Here	
	int t;
	cin >> t;
	while(t--){
		int n , k;
		cin >> n >> k;
		vector<int> a(n + 1) , l (n + 1) , r(n + 1);
		vector<vector<int>> num(n + 1);
		for(int i = 1;i<=n;i++){
			cin >> a[i];
			num[a[i]].push_back(i);
		}
		int ans = 0;
		vector<int> left , right;
		for(int i = 1;i<=n;i++){
			while(!left.empty() && a[left.back()] <=a[i])left.pop_back();
			if(left.empty())l[i] = 1;
			else l[i] = left.back() + 1;
			left.push_back(i);
		}
		for(int i = n;i>=1;i--){
			while(!right.empty() && a[right.back()] <= a[i])right.pop_back();
			if(right.empty())r[i] = n;
			else r[i] = right.back() - 1;
			right.push_back(i);
		}
		for(int i = n;i>=1;i--){
			if(sz(num[i]) >= k){
				for(int j = 0;j + k - 1 < sz(num[i]);j++){
					int p = num[i][j] , q = num[i][j + k - 1];
					int l_ = l[p] , r_ = r[p];
					if(j >= 1) l_ = max(l_ , num[i][j - 1] + 1);
					if(r_ >= q)ans += (p - l_ + 1) *(r_ - q + 1);
				}
			}	
		}
		cout << ans << endl;
	}

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

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

相关文章

canal实现mysql数据同步

目录 1、canal下载 2、mysql同步用户创建和授权 3、canal admin安装和启动 4、canal server安装和启动 5、java 端集成监听canal 同步的mysql数据 6、java tcp同步只是其中一种方式&#xff0c;还可以通过kafka、rabbitmq等方式进行数据同步 1、canal下载 canal实现mysq…

易境通专线散拼系统:全方位支持多种专线物流业务!

在全球化电商快速发展的今天&#xff0c;跨境电商物流已成为电商运营中极为重要的环节。为了确保物流效率、降低运输成本&#xff0c;越来越多的电商卖家选择专线物流服务。专线物流作为五大主要跨境电商物流模式之一&#xff0c;通过固定的运输路线和流程&#xff0c;极大提高…

06 如何定义方法,掌握有参无参,有无返回值,调用数组作为参数的方法,方法的重载

1.调用方法 2.掌握有参函数 3.调用数组作为参数 一个例题&#xff1a;数组参数&#xff0c;返回值 方法的重载 两个例题&#xff1a;冒泡排序和九九乘法表的格式学习

使用vscode MSVC CMake进行C++开发和Debug

使用vscode MSVC CMake进行C开发和Debug 前言软件安装安装插件构建debuug方案一debug方案二其他 前言 一般情况下我都是使用visual studio来进行c开发的&#xff0c;但是由于python用的是vscode&#xff0c;所以二者如果统一的话能稍微提高一点效率。 软件安装 需要安装的软…

提升开发运维效率:原力棱镜游戏公司的 Amazon Q Developer CLI 实践

引言 在当今快速发展的云计算环境中&#xff0c;游戏开发者面临着新的挑战和机遇。为了提升开发效率&#xff0c;需要更智能的工具来辅助工作流程。Amazon Q Developer CLI 作为亚马逊云科技推出的生成式 AI 助手&#xff0c;为开发者提供了一种新的方式来与云服务交互。 Ama…

@Column 注解属性详解

提示&#xff1a;文章旨在说明 Column 注解属性如何在日常开发中使用&#xff0c;数据库类型为 MySql&#xff0c;其他类型数据库可能存在偏差&#xff0c;需要注意。 文章目录 一、name 方法二、unique 方法三、nullable 方法四、insertable 方法五、updatable 方法六、column…

基于 ESP32 与 AWS 全托管服务的 IoT 架构:MQTT + WebSocket 实现设备-云-APP 高效互联

目录 一、总体架构图 二、设备端(ESP32)低功耗设计(适配 AWS IoT) 1.MQTT 设置(ESP32 连接 AWS IoT Core) 2.低功耗策略总结(ESP32) 三、云端架构(基于 AWS Serverless + IoT Core) 1.AWS IoT Core 接入 2.云端 → APP:WebSocket 推送方案 流程: 3.数据存…

unity在urp管线中插入事件

由于在urp下&#xff0c;打包后传统的相机事件有些无法正确执行&#xff0c;这时候我们需要在urp管线中的特定时机进行处理一些事件&#xff0c;需要创建继承ScriptableRenderPass和ScriptableRendererFeature的脚本&#xff0c;示例如下&#xff1a; PluginEventPass&#xf…

docker安装es连接kibana并安装分词器

使用Docker部署Elasticsearch、Kibana并安装分词器有以下主要优点&#xff1a; 1. 快速部署与一致性 一键式部署&#xff1a;通过Docker Compose可以快速搭建完整的ELK栈环境 环境一致性&#xff1a;确保开发、测试和生产环境完全一致&#xff0c;避免"在我机器上能运行…

线性回归中涉及的数学基础

线性回归中涉及的数学基础 本文详细地说明了线性回归中涉及到的主要的数学基础。 如果数学基础很扎实可以直接空降博文: 线性回归&#xff08;一&#xff09;-CSDN博客 一、概率、似然与概率密度函数 1. 概率&#xff08;Probability&#xff09; 定义&#xff1a;概率是描述…

如何计算VLLM本地部署Qwen3-4B的GPU最小配置应该是多少?多人并发访问本地大模型的GPU配置应该怎么分配?

本文一定要阅读我上篇文章&#xff01;&#xff01;&#xff01; 超详细VLLM框架部署qwen3-4B加混合推理探索&#xff01;&#xff01;&#xff01;-CSDN博客 本文是基于上篇文章遗留下的问题进行说明的。 一、本文解决的问题 问题1&#xff1a;我明明只部署了qwen3-4B的模型…

Attu下载 Mac版与Win版

通过Git地址下载 Mac 版选择对于的架构进行安装 其中遇到了安装不成功&#xff0c;文件损坏等问题 一般是两种情况导致 1.安装版本不对 2.系统权限限制 https://www.cnblogs.com/similar/p/11280162.html打开terminal执行以下命令 sudo spctl --master-disable安装包Git下载地…

V2X协议|如何做到“车联万物”?【无线通信小百科】

1、什么是V2X V2X&#xff08;Vehicle-to-Everything&#xff09;即“车联万物”&#xff0c;是一项使车辆能够与周围环境实现实时通信的前沿技术。它允许车辆与其他交通参与者和基础设施进行信息交互。通过V2X&#xff0c;车辆不仅具备“远程感知”能力&#xff0c;还能在更大…

[测试_3] 生命周期 | Bug级别 | 测试流程 | 思考

目录 一、软件测试的生命周期&#xff08;重点&#xff09; 1、软件测试 & 软件开发生命周期 &#xff08;1&#xff09;需求分析 &#xff08;2&#xff09;测试计划 &#xff08;3&#xff09;测试设计与开发 &#xff08;4&#xff09;测试执行 &#xff08;5&am…

RabbitMQ ⑤-顺序性保障 || 消息积压 || 幂等性

幂等性保障 幂等性&#xff08;Idempotency&#xff09; 是计算机科学和网络通信中的一个重要概念&#xff0c;指的是某个操作无论被执行多少次&#xff0c;所产生的效果与执行一次的效果相同。 应用程序的幂等性&#xff1a; 在应用程序中&#xff0c;幂等性就是指对一个系统…

java基础知识回顾1(可用于Java基础速通)考前,面试前均可用!

目录 一、初识java 二、基础语法 1.字面量 2.变量 3.关键字 4.标识符 声明&#xff1a;本文章根据黑马程序员b站教学视频做的笔记&#xff0c;可对应课程听&#xff0c;课程链接如下: 02、Java入门&#xff1a;初识Java_哔哩哔哩_bilibili 一、初识java Java是美国 sun 公…

云原生CICD-Tekton入门到精通

文章目录 一、Tekton介绍二、Tekton组件介绍三、执行流程四、安装Tekton管道五、安装Tekton Dashboard六、安装Tekton Cli七、运行单Task八、运行流水线九、在流水线中使用secret十、taskSpec、taskRef、pipelineRef、pipelineSpec使用pipelineRef与taskRef结合使用(推荐)pipel…

opencv 图像的平移和旋转

warpAffine函数讲解,图片可自行下载&#xff0c;也可用自己的图片 原图im 平移im_shifted 旋转im_rotated # 图像仿射变换 # 步骤&#xff1a; 读取图像 -> 创建仿射变换矩阵 -> 仿射变换计算 # 平移变换矩阵&#xff1a;一种写法&#xff0c;直接写死 # 旋转变…

IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS

目录 Windows的准备 1. 将与Linux上版本相同的hadoop压缩包解压到本地 ​编辑2.设置$HADOOP HOME环境变量指向:E:\hadoop-3.3.4 3.下载hadoop.dll和winutils.exe文件 4.将hadoop.dll和winutils.exe放入$HADOOP HOME/bin中 IDEA中操作 1.下载Big Data Tools插件 2.添加并连…

hysAnalyser特色的TS流编辑、剪辑和转存MP4功能说明

摘要 hysAnalyser 是一款特色的 MPEG-TS 数据分析工具&#xff0c;融合了常规TS文件的剪辑&#xff0c;转存功能&#xff0c;可用于平常的视频开发和测试。 本文详细阐述了对MPEG-TS 流的节目ID&#xff0c;名称&#xff0c;PID&#xff0c;时间戳&#xff0c;流类型&#xff…