Codeforces round 883 div3

news2024/11/29 10:49:14

A. Rudolph and Cut the RopeA. Rudolph and Cut the Rope

题目大意

有 n 个钉子钉在墙上,第 i 个钉子被钉在离地面 ai 米高的位置,一根长度为 bi 米的绳子的一端被绑在它上面。所有钉子都悬挂在不同的高度上。糖果同时被绑在所有绳子的末端,而这些绳子又没有被绑在任何一个钉子上。
为了拿到糖果,你需要将它放到地面上。为了做到这一点,Rudolph 可以一次剪断一根绳子。帮助 Rudolph 找出至少需要剪断多少根绳子才能获得糖果。
在这里插入图片描述

思路分析

为了使糖果能够落到地上,需要所有的绳子都触及地面。这意味着所有绳子的长度必须大于或等于它们所连接的钉子的高度。也就是说,需要剪断那些长度小于其所连接钉子高度的绳子。然后答案就等于满足ai>bi的元素数量。

时间复杂度

O(n)

题解代码

#include <iostream>

using namespace std;


int main() {
	int test_cases;
	cin >> test_cases;

	for (int test_case = 0; test_case < test_cases; test_case++) {
		int n;
		cin >> n;
		int ans = 0;
		for (int i = 0; i < n; i++) {
			int a, b;
			cin >> a >> b;
			if (a > b)
				ans++;
		}
		cout << ans << endl;
	}

	return 0;
}

B. Rudolph and Tic-Tac-Toe

题目大意
Rudolph 发明了一个三人玩的井字游戏。它具有经典规则,但第三个玩家使用加号。Rudolph 有一个 3×3 的场地,代表已完成的游戏结果。每个方格中可能包含叉、圈、加号、或者为空。游戏的目标是使任意一名玩家以其符号在水平、垂直或对角线方向上连成三个。
Rudolph 想要找出游戏的结果。结果可能是仅有一名玩家赢得了比赛,或者是平局。确保不会有多名玩家同时获胜。
输入
第一行包含一个整数 t(t≥1,t≤104) - 测试案例的数量。
每个测试案例由三行组成,每行包含三个字符。符号可以是四种之一:“X” 表示叉,“O” 表示圈,“+” 表示加号,“.” 表示空白格子。
输出
对于每个测试案例,打印字符串 “X” 如果叉获胜,“O” 如果圈获胜,“+” 如果加号获胜,“DRAW” 如果平局。

思路分析

只需要检查每行、每列和每条对角线的三个元素是否相等。如果所有三个元素都相等且不为".“,则这些元素的值就是答案。需要注意的是,连续三个为空白格子(”.“)并不会给出答案”."。题目没有规定玩家走棋的次数相同,这意味着一个玩家可能会有多个获胜的行

时间复杂度

O(1)

题解代码

#include <iostream>
#include <vector>
#include <string>


using namespace std;

int main() {
	int test_cases;
	cin >> test_cases;
	for (int test_case = 0; test_case < test_cases; test_case++) {
		vector<string> v(3);
		for (int i = 0; i < 3; i++)
			cin >> v[i];
		string ans = "DRAW";
		for(int i = 0; i < 3; i++) {
			if (v[i][0] == v[i][1] && v[i][1] == v[i][2] && v[i][0] != '.')
				ans=v[i][0];
		}
		for (int i = 0; i < 3; i++) {
			if (v[0][i] == v[1][i] && v[1][i] == v[2][i] && v[0][i] != '.')
				ans=v[0][i];
		}
		if (v[0][0] == v[1][1] && v[1][1] == v[2][2] && v[0][0] != '.')
			ans=v[0][0];
		if (v[0][2] == v[1][1] && v[1][1] == v[2][0] && v[0][2] != '.')
			ans=v[0][2];
		cout << ans << endl;
	}
	return 0;
}

C. Rudolf and the Another Competition

题目
Rudolf报名参加了一场遵循ICPC规则的编程竞赛。根据规则,每解决一个问题,参赛者将获得11分,并且会承担从比赛开始到解决问题的时间所对应的罚时。在最终的排行榜中,分数最高的参赛者排名靠前,如果分数相同,则罚时较低的参赛者排名靠前。
总共有n个参赛者报名参加比赛。Rudolf的索引为1。已知将提出m个问题。比赛将持续h分钟。
一款强大的人工智能预测了ti,j的值,表示第i个参赛者解决第j个问题需要的时间。Rudolf意识到解决问题的顺序会影响最终的结果。例如,如果h=120,并且解决问题的时间是[20,15,110],那么如果Rudolf按照以下顺序解决问题:
3,1,2,那么他只能解决第三个问题,获得11分和110的罚时。
1,2,3,那么他将在比赛开始后20分钟解决第一个问题,在20+15=35分钟后解决第二个问题,而没有时间解决第三个问题。因此,他将获得22分和55的罚时。
2,1,3,那么他将在比赛开始后15分钟解决第二个问题,在15+20=35分钟后解决第一个问题,而没有时间解决第三个问题。因此,他将获得22分和50的罚时。
Rudolf想知道如果每个参赛者按照人工智能的预测以最优顺序解决问题,他将在比赛中获得的名次。假设如果分数和罚时相同,Rudolf将获得最好的名次。

思路分析

时间复杂度

O(t * m * (m + log m))。

代码

#include <bits/stdc++.h> 
#define int long long 

using namespace std;

signed main() {  
    ios::sync_with_stdio(false);  // 关闭输入输出流同步,提高输入输出效率
    cin.tie(nullptr);  // 解除 cin 与 cout 的绑定
    cout.tie(nullptr);
    int t; 
    cin >> t;  
    while(t--){ 
        int n, m, h;  
        cin >> n >> m >> h; 
        pair<int, long long> rud;  // 创建一个 pair 对象 rud,存储问题数量和罚时
        int ans = 1;  // 初始化答案 ans 为 1
        for(int i = 0; i < n; i++){  
            vector<int> cur(m);  
            for(int j = 0; j < m; j++){  
                cin >> cur[j];  
            }
            std::sort(cur.begin(), cur.end());  // 对 cur 进行升序排序
            int task_cnt = 0;  task_cnt 为 0
            long long penalty = 0, sum = 0;
            for(int j = 0; j < m; j++){ 
                if (sum + cur[j] > h) break; 
                sum += cur[j]; 
                penalty += sum; 
                task_cnt++; 
            }
            if (i)
            { 
                if (make_pair(-task_cnt, penalty) < rud) ans++;  
            } else rud = {-task_cnt, penalty};  // 更新 rud 的值为当前问题数量和罚时的负数
        }
        cout << ans << '\n'; 
    }
    return 0;  
}

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

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

相关文章

浅谈关于智慧校园安全用电监测系统的设计

0引言 人生人身安全是大家关注的话题&#xff0c;2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起&#xff08;中国消防2019.12.应急管理部消防救援局官方微博&#xff09;&#xff0c;违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数…

【力扣算法05】之 _1911_ 最大子序列交替和- python

文章目录 问题描述示例 1示例2示例3提示 思路分析代码分析完整代码运行示例代码示例1示例2示例3 完结 问题描述 一个下标从 0 开始的数组的 交替和 定义为 偶数 下标处元素之 和 减去 奇数 下标处元素之 和 。 比方说&#xff0c;数组 [4,2,5,3] 的交替和为 (4 5) - (2 3) 4…

804. n的阶乘

链接&#xff1a; https://www.acwing.com/problem/content/806/ 题目&#xff1a; 输入一个整数 nn&#xff0c;请你编写一个函数&#xff0c;int fact(int n)&#xff0c;计算并输出 nn 的阶乘。 输入格式 共一行&#xff0c;包含一个整数 nn。 输出格式 共一行&#xff0c;包…

OpenCV(图像处理)-图片搜索

图片搜索 1.知识介绍2.实现流程2.1 计算特征点与描述子2.2 描述子的匹配2.3 求出单应性矩阵并画出轮廓2.4 将特征点标出 此篇博客作者仍在探索阶段&#xff0c;还有一些模糊的概念没有弄懂&#xff0c;请读者自行分辨。 1.知识介绍 Opencv进行图片搜索需要的知识有&#xff1…

多个input框或其他框的值相加之和并且处理精度问题

需求&#xff1a;实付金额不能手动输入&#xff0c;并且等于购买数量✖优惠价➖平台补贴➖店铺补贴 把需要处理的这几个框绑上change事件等于同一个方法名 change"handleChange" handleChange(value){let _this this;let isNull validatenull;_this.ruleForm.pre…

【JavaEE】项目的部署-让网络上的人都能访问你的网站

项目的部署-让网络上的人都能访问你的网站 文章目录 【JavaEE】项目的部署-让网络上的人都能访问你的网站1. 搭建环境1.1 jdk1.2 Tomcat1.2.1 上传tomcat程序1.2.2 给启动脚本加上可执行权限1.2.3 启动Tomcat1.2.4 让服务器运行8080端口的流量通过 1.3 MySQL 2. 代码修改2.1 修…

协议逆向工程(图

协议逆向工程流程图 协议状态机推断的一般示例 状态机方法时间轴

MySQL的存储引擎、建库、权限管理

目录 一、前言 1.MySQL的介绍 二、存储引擎 1.什么是存储引擎 2.常见存储引擎 2.1.InnoDB(MySQL默认引擎) 2.1.1.四种隔离级别 2.2.MyISAM存储引擎 2.3.Memory存储引擎 3.ACID事务 三、CRUD操作 1.插入数据 2.查询数据 3.修改数据 4.删除数据 四、数据库 1.默认…

自动化测试实践经验和教训

目录 前言&#xff1a; 一、所谓自动化是为了软件发布服务的&#xff0c;并不只是为了测试服务 二、不要事后去计算人工替代率&#xff0c;而是要参考自动化测试有效性 三、度量一个自动化测试的可实施性可以从其可控制性或者可测试性上来考虑 四、试点推进自动化测试 五…

WebDAV之π-Disk派盘 + Koder

Koder 支持WebDAV方式连接π-Disk派盘。 一款可以让你在iPhone、iPad上写各种编程语言代码的app,码农不要错过。 Koder是iPad和iPhone的代码编辑器。它确实具有许多功能,包括语法突出显示,代码段管理器,选项卡式编辑,查找和替换代码,编辑器主题,远程和本地文件连接等…

Java基础---枚举

枚举类型是指由一组固定的常量组成合法的类型Java中由关键字enum来定义一个枚举类型 Java中枚举的好处如下&#xff1a; 1-枚举可以的 valueOf 可以自动对入参进行非法参数的校验 2-可以调用枚举中的方法&#xff0c;相对于普通的常量来说操作性更强 3-枚举实现接口的话&#…

Day_63-65 集成学习之 AdaBoosting

目录 Day_63-65 一. 基本概念介绍 1. 集成学习 2. 弱分类器与强分类器 二. AdaBoosting算法 1. AdaBoosting算法框架介绍 2. AdaBoosting算法过程 三. 代码的实现过程 1. WeightedInstances类 2. 构造弱分类器的StumpClassifier类和抽象类SimpleClassifier 3. 主类Booster的…

Elastic 连续第三年被评为 2023 年 Gartner® Magic Quadrant™ 的 APM 和可观察性远见者

作者&#xff1a;Gagan Singh 我们很高兴地宣布&#xff0c;Elastic 连续第三年被评为 2023 年 Gartner 应用程序性能监控 (APM) 和可观测性魔力象限中的远见者。 Elastic 因其愿景的完整性和执行能力而受到认可 我们相信&#xff0c;Elastic 被认可为远见者&#xff0c;验证了…

自动化测试平台策略之:自动化测试与项目的结合之路

目录 前言&#xff1a; 一、自动化测试开展在整个项目中存在的一些问题 二、自动化测试与项目结合之路 三、自动化测试平台之项目系统建设 前言&#xff1a; 自动化测试平台是实施自动化测试的关键组成部分&#xff0c;它可以帮助测试团队提高测试效率、加速反馈周期&#xff0…

vue 后台返回列表H5点击按钮加载更多分页数据与van-tab记住选中状态

效果图&#xff08;点击更多订单加载&#xff0c;一次加载10条&#xff09;&#xff1a; <template><div id"order" class"wap-el page-container wap-com-page"><section><com-header></com-header></section><di…

6.1Java EE——Spring介绍

一、Spring概述 String框架的核心技术 Spring是由Rod Johnson组织和开发的一个分层的Java SE/EE一站式&#xff08;full-stack&#xff09;轻量级开源框架。它最为核心的理念是IoC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面编程&#xff09;&#xff0c;其中&…

声音合成与克隆——制作用于训练的声音数据集

前言 1.PaddleSpeech 是一个简单易用的all-in-one 的语音工具箱&#xff0c;支持语音处理的相关操作&#xff0c;如语音知别&#xff0c;语音合成&#xff0c;声纹识别&#xff0c;声音分类&#xff0c;语音翻译&#xff0c;语音唤醒等多个方向的应用开发。 这里只使用到语音…

C++之模板类重写基类构造函数(一百五十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

matlab[1,1]生成100个随机点

close all; clc; x linspace(0,1,200); y 0 rand(1,200); sz 25; c linspace(1,10,length(x)); scatter(x,y,sz,c,filled)