Codeforces Round 920 (Div. 3)

news2024/11/16 19:33:43

在这里插入图片描述

Codeforces Round 920 (Div. 3)

Codeforces Round 920 (Div. 3)

A. Square

题意:随机给出正方形在平面坐标系上的四个顶点的坐标,求正方形的面积,正方形边与xy轴平行。

思路:因为正方形与坐标轴平行,所以找出相同的两x或y坐标即可找到一条边的长度,平方就是面积,注意结果返回整型。

AC code:

void solve() {
    PII q[100];
    for (int i = 1; i <= 4; i ++) {
        int x, y; cin >> x >> y;
        q[i] = {x, y};
    }
    sort(q + 1, q + 4 + 1);
 
    cout << (q[1].second - q[2].second) * (q[1].second - q[2].second) << endl;
 
}

B. Arranging Cats

题意:给出两个01字符串,可以对第一个字符串进行0变1,1变0,10交换这样的三种操作,最少多少次操作可以让两字符串相等。

思路:

  • 找到两字符串中字符‘1’的数量,以及两字符串中不同字符的数量;
  • 若1的数量相同,则只需要交换操作即可,最小操作数为不同字符的数量now/2;
  • 若1的数量不相同,则需要先将两字符串的字符差值进行操作,再用不同字符数减去该差值除2;

AC code:

void solve() {
    cin >> n;
    string s, f; cin >> s >> f;
    if (s == f) {
        cout << 0 << endl;
        return;
    }
    int cnts = 0, cntf = 0;
    for (int i = 0; i < n; i ++) {
        cnts += (s[i] == '1');
        cntf += (f[i] == '1');
    }
    int now = 0;
        for (int i = 0; i < n; i ++) {
            if(s[i] != f[i]) now ++;
        }
    if (cnts == cntf) {
        cout << now / 2 << endl;
        return;
    }
    cout << abs(cnts - cntf) + (now - abs(cnts - cntf)) / 2 << endl;
}

C. Sending Messages

题意:现在需要用一部剩余f单位电的时间发n条信息,每条信息需在 m i m_i mi时刻发送,开机一个单位损失a单位电量,关机稍后打开损失b单位电量,电量为0不能发信息,是否可以将所有信息发完。

思路:从前往后跑一遍,比较关机与待机的耗电量,最小化每次发信息间隔的耗电量。

AC code:

void solve() {
    cin >> n >> f >> a >> b;
    for (int i = 0; i < n; i ++)
        cin >> m[i];
    int now = 0;
    for (int i = 0; i < n; i ++) {
        int cnt = m[i] - now;
        if (cnt * a > b) f -= b;
        else f -= cnt * a;
        now = m[i];
    }
    if (f <= 0) {
        cout << "NO" << endl;
    } else {
        cout << "YES" << endl;
    }
}

D. Very Different Array

题意:给出长度为n的数组a,现在从长度为m的数组b中选择n个数字组成数组c,使得数组c与数组a对应位置的总差值最大。

思路:不是最大对最小就是最佳答案,差值取绝对值,正负均可,这里用的是对排序后的数组ab进行双指针判断。

AC code:

void solve() {
    cin >> n >> m;
    for (int i = 0; i < n; i ++) cin >> a[i];
    for (int i = 0; i < m; i ++) cin >> b[i];
 
    sort(a, a + n);
    sort(b, b + m, greater<int>());
    int ans = 0, pos = 0;
    int la = 0, ra = n - 1, lb = 0, rb = m - 1;
    while (pos < n) {
        int x = abs(a[la] - b[lb]), y = abs(a[ra] - b[rb]);
        if (x > y) {
            ans += x;
            la ++, lb ++;
        } else {
            ans += y;
            ra --, rb --;
        }
        pos ++;
    }
    cout << ans << endl;
}

E. Eat the Chip

题意:

A和B正在一个有h行w列的棋盘上下棋,保证两个棋子不会重合,现在双方轮流下棋,由A开始。

当轮到A下棋时,A,可以将棋子向下,向右或向左斜单元格移动一格。当轮到陛下期时必可以将其子向上向右或向左斜单元格移动一格,不允许移动超出棋盘边界。

当A将自己的棋子移动到B当前所占据的坐标上时,A获得胜利。当B将自己的妻子移动到a当前所占据的坐标时,B获得胜利。当轮到一方移动时,当前棋子无法移动游戏宣布平局游戏结束。 双方都以最佳状态进行下棋,请判断比赛结果。

思路:多情况讨论:

  • A的行数只能增加,B只能减小,当xa >= xb时一定平局;
  • AB每次移动一定会缩短相对行距,若列距大于行距,双方在相遇前就会错过,一定平局;
  • 然后根据双方行距的奇偶性判断,当行距为奇数时:
    • 若列距<=1,A胜,一步制胜;
    • 只有当A的列坐标与边界的距离<=行距的一半时,A胜,该情况下,在AB行距减小时,A可以将B逼至边界,然后制胜;
    • 若A不能将B绝杀,则一定平局;
  • 当行距为偶数时:
    • AB列距为0,无论A怎么移动,在第二步B均能制胜;
    • 只有当B的列坐标与边界的距离<=行距的一半时,B胜,该情况下,在AB行距减小时,B可以将A逼至边界,然后制胜;
    • 若B不能将A绝杀,则一定平局;

AC code:

void solve() {
    int h, w, xa, ya, xb, yb;
    cin >> h >> w >> xa >> ya >> xb >> yb;
    if (xa >= xb) {
        cout << "Draw" << endl;
        return;
    }
    int cnt = xb - xa;
    int now = abs(ya - yb);
    if (now > cnt) {
        cout << "Draw" << endl;
        return;
    }
    if(cnt % 2) {
        if (now <= 1) {
            cout << "Alice" << endl;
        } else if (ya > yb && ya - 1 <= cnt / 2 + 1) {
            cout << "Alice" << endl;
        } else if (ya < yb && w - ya <= cnt / 2 + 1) {
            cout << "Alice" << endl;
        } else {
            cout << "Draw" << endl;
        }
    } else {
        if (ya == yb) {
            cout << "Bob" << endl;
        } else if (ya < yb && yb - 1 <= cnt / 2) {
            cout << "Bob" << endl;
        } else if (ya > yb && w - yb <= cnt / 2) {
            cout << "Bob" << endl;
        } else {
            cout << "Draw" << endl;
        }
    }
}

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

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

相关文章

React Native 原生组件回调JS层方法和 JS 层调用原生组件的事件方法

一、原生组件回调 JS 层提供的事件方法 比如 TextInput 组件 onChangeText 属性&#xff0c;输入事件是发生在原生层的但是需要通知 JS 层发生了变化&#xff0c;并执行 JS 层的方法。 1、给原生组件添加一个按钮用于触发原生事件方法 在 XML 中添加一个按钮 为了方便让 Inf…

已解决:g++: error: unrecognized command line option ‘-Wnull-dereference‘

VS运行正常的c代码&#xff0c;出现错误&#xff1a; 正在执行任务: C:/Windows/System32/cmd.exe /d /c g -Wall -Wextra -Wpedantic -Wshadow -Wformat2 -Wcast-align -Wconversion -Wsign-conversion -Wnull-dereference -g3 -O0 -c e:\Desktop\C\hdu\1000.cpp -o .\build\…

保姆级ESP-IDF开发环境搭建

1. 手动安装工具链&#xff0c;命令行方式&#xff08;windows&#xff09; 1.1 下载离线安装器 进入乐鑫 ESP-IDF Windows Installer Download 下载页面&#xff0c;选择离线版本工具&#xff08;网络原因&#xff0c;安装过程中使用github下载会出问题&#xff09;。 1.2 使…

unity C#中使用ref、out区别和使用案例

文章目录 ref 关键字out 关键字 在Unity&#xff08;以及C#编程语言中&#xff09;&#xff0c; ref 和 out 都是用来传递参数的引用&#xff0c;这意味着它们允许函数修改实参变量&#xff0c;并且这些修改会反映到调用函数的地方。但它们之间确实存在一些关键区别和使用场景…

Flutter开发进阶之并发操作数据库

Flutter开发进阶之并发操作数据库 尽管 Flutter 本身不包含任何数据库功能&#xff0c;但可以使用各种第三方库和插件来在 Flutter 应用程序中实现数据库功能&#xff1b; 以下将使用sqflite作为例子&#xff0c;sqflite允许在 Flutter 应用程序中执行 SQL 查询&#xff0c;创…

【干货】深入剖析冒泡排序算法:原理、步骤与复杂度分析

导语&#xff1a; 排序算法是计算机科学中的重要基础知识&#xff0c;而冒泡排序是最简单、最基础的排序算法之一。虽然冒泡排序的效率相对较低&#xff0c;但它的实现简单易懂&#xff0c;是理解排序算法的入门之选。本文将深入剖析冒泡排序算法的原理、步骤以及时间复杂度分析…

vue 渲染数组,拖拽排序,渲染同一个数组拖拽排序不影响其他选中行状态

当我们能够设置单行状态改变的时候&#xff0c;那么肯定可以拿到选中的当前行的id或者下标index。 只要设定一个初始化值在拖拽开始的时候重新赋值&#xff0c;然后再处理选中状态的时候进行判断即可。 前期写的时候没有注意到这个问题&#xff0c;可以看这个文章。 在复测的时…

Keepalived 双机热备

本章主要内容&#xff1a; Keepalived 双机热备基础知识学会构建双机热备系统学会构建LVSHA 高可用群集 简介 在这个高度信息化的IT时代&#xff0c;企业的生产系统&#xff0c;业务运营&#xff0c;销售和支持&#xff0c;以及日常管理等环节越来越依赖于计算机和服务&#…

uboot工作原理介绍

uboot其实和电脑的BIOS是一个原理&#xff0c;它主要做两件事: &#xff08;1&#xff09;初始化硬件&#xff1b; &#xff08;2&#xff09;将系统文件&#xff08;或者说是内核&#xff09;从flash中读出来加载到DDR里面执行。 给大家解释下面几个问题&#xff1a; 为什么…

IDEA 中搭建 Spring Boot Maven 多模块项目 (父SpringBoot+子Maven)

第1步&#xff1a;新建一个SpringBoot 项目 作为 父工程 [Ref] 新建一个SpringBoot项目 删除无用的 .mvn 目录、 src 目录、 mvnw 及 mvnw.cmd 文件&#xff0c;最终只留 .gitignore 和 pom.xml 第2步&#xff1a;创建 子maven模块 第3步&#xff1a;整理 父 pom 文件 ① …

数据结构--排序

参考【算法】排序算法之希尔排序 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/122632213 1. 排序的定义 2. 插入排序 2.1 直接插入排序 在插入第i&#xff08;i>1)个记录时&#xff0c;前面的i-1个记录已经排好序 void insertSort(int r[],int n) {for(int i2;i<…

华为设备vlan下配置MSTP,STP选举

核心代码,不同实例&#xff0c;承载不同流量&#xff0c;为每个实例设置一个根网桥达到分流的效果 stp region-config //进入stp区域的设置 region-name R1 //区域命名为R1 instance 1 vlan 10 …

运维知识点-Sqlite

Sqlite 引入 依赖 引入 依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.36.0.3</version></dependency>import javafx.scene.control.Alert; import java.sql.*;public clas…

快乐学Python,数据分析之使用爬虫获取网页内容

在上一篇文章中&#xff0c;我们了解了爬虫的原理以及要实现爬虫的三个主要步骤&#xff1a;下载网页-分析网页-保存数据。 下面&#xff0c;我们就来看一下&#xff1a;如何使用Python下载网页。 1、网页是什么&#xff1f; 浏览器画网页的流程&#xff0c;是浏览器将用户输…

2023 安洵杯-PWN-【seccomp】

文章目录 检查设置注意事项 源码main函数sub_40143E(a1,a2,a3)sub_40119E()沙箱规则sub_40136E() 思路注意exp无chmod版本有chmod版本 检查 设置 在当前文件夹下或者其他地方建个flag文件&#xff0c;内容自己随意定&#x1f604; 注意事项 记得将动态链接器和动态库的文件…

MongoDB-数据库文档操作(2)

任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握&#xff1a; 查询文档命令&#xff1b;删除文档命令。 查询文档 我们先插入文档到集合 stu1 &#xff1a; document([{ name:张小华, sex:男, age:20, phone:12356986594, hobbies:[打篮球,踢足球…

2023国赛 陕西省省级二等奖得主 数学建模学习资源推荐

美国最为权威的数学建模参考书Mathematical Modeling 在前言部分对数学建模有一个比较通俗易懂的解释&#xff1a; Mathematical modeling is the link between mathematics and the rest of the world. You ask a question. You think a bit, and then you refine the questi…

W25Q64讲解及历程

W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器&#xff08;ROM&#xff09;&#xff0c; ROM的特点就是掉电不丢失也就是非易失性存储器&#xff0c;和RAM掉电丢失不同&#xff1b; 常应用于数据存储、字库存储、固件程序存储等场景&#xff1b; 存储介质&…

x-cmd pkg | mermaid - 流程图、时序图等图表绘制工具

简介 mermaid-cli 是由 Mermaid 官方提供的命令行工具&#xff0c;用于将 Mermaid 语法的文本转换为 SVG / PNG / PDF。 Mermaid 是一个基于 JavaScript 的图表绘制工具&#xff0c;它使用简单的文本描述语法&#xff0c;就可以绘制出流程图、时序图、甘特图等多种图表。 首次…

跟着cherno手搓游戏引擎【6】ImGui和ImGui事件

导入ImGui&#xff1a; 下载链接&#xff1a; GitHub - TheCherno/imgui: Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C with minimal dependencies 新建文件夹&#xff0c;把下载好的文件放入对应路径&#xff1a; SRC下的premake5.lua文件&#…