Codeforces Round 864 (Div. 2)(A~D)

news2024/10/5 19:11:19

A. Li Hua and Maze

 给出两个不相邻的点,最少需要堵上几个方格,才能使得两个方格之间不能互相到达。

思路:显然,对于不邻任何边界的方格来说,最少需要的是4,即上下左右都堵上;邻一个边界就-1,两个方格取一下最小值即可。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 2e5 + 5;
int t, n, m, x1, y1, x2, y2;

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
	std::cin >> t;
	while(t --) {
		std::cin >> n >> m;
		std::cin >> x1 >> y1 >> x2 >> y2;
		int ans1 = 4, ans2 = 4;
		if(x1 == 1 || x1 == n) ans1 --;
		if(y1 == 1 || y1 == m) ans1 --;
		if(x2 == 1 || x2 == n) ans2 --;
		if(y2 == 1 || y2 == m) ans2 --;
		std::cout << std::min(ans1, ans2) << '\n';
	}
	return 0;
}

B. Li Hua and Pattern

给出一个n*n的矩阵,操作k次,判断能否使得当前矩形和旋转180°后的图形完全相同。每次操作是将格子的颜色翻转。

思路:显然,将格子分为四部分,对角的两两都应该中心对称。对于两两方格的两个坐标有相加等于n+1的关系,判断一下即可。注意,对于奇数时的中心那一条,应该等于同一条线上的另一部分。对于操作次数k,如果小于不同的方格数,则一定不满足条件;若是大于k,n是偶数时,k-cnt必须是偶数。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 1e3 + 5;
int t, n, k;
int a[N][N];

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
	std::cin >> t;
	while(t --) {
		std::cin >> n >> k;
		for(int i = 1; i <= n; i ++) {
			for(int j = 1; j <= n; j ++) {
				std::cin >> a[i][j];
			}
		}
		int m = (n + 1) / 2;
		int cnt = 0;
		for(int i = 1; i <= m; i ++) {
			for(int j = 1; j <= m; j ++) {
				if(a[i][j] != a[1 + n - i][1 + n - j])
					cnt ++;
			}
		}
		for(int i = m + 1; i <= n; i ++) {
			for(int j = 1; j <= n / 2; j ++) {
				if(a[i][j] != a[1 + n - i][1 + n - j])
					cnt ++;
			}
		}
		if(k < cnt || (k - cnt) % 2 && n % 2 == 0)
			std::cout << "NO" << '\n';
		else
			std::cout << "YES" << '\n';
	}
	return 0;
}

C. Li Hua and Chess

 在n*m的方格中猜一个确定位置。每次可以询问目标位置和询问位置的距离,注意,距离是指经过八个方向移动的最小距离,在三次询问之内找到答案。

思路:观察移动方式,我们可以发现对于一个位置来说,向外扩展x圈上的点到中心点的距离都是x。那么我们可以先询问(1, 1)点,然后再问(1 + len, 1 + len)点,当然,注意和边界的判断。那么答案位置必然在第二次询问的点的正上方或者正左方。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 1e3 + 5;
int t, n, m;

int ask(int x, int y) {
	std::cout << "? " << x << ' ' << y << '\n';
	std::cout.flush();
	int dis;
	std::cin >> dis;
	return dis;
}

void work() {
	int a = 1, b = 1;
	int len = ask(a, b);
	if(!len) {
		std::cout << "! " << a << ' ' << b << '\n';
		return;
	}
	a = std::min(a + len, n), b = std::min(b + len, m);
	len = ask(a, b);
	if(!len) {
		std::cout << "! " << a << ' ' << b << '\n';
		return;
	}
	if(len >= a && len < b) {
		std::cout << "! " << a << ' ' << b - len << '\n';
		return;
	}
	else if(len >= b && len < a) {
		std::cout << "! " << a - len << ' ' << b << '\n';
		return;
	}
	int aa = a, bb = b, ll = len;
	a -= len;
	len = ask(a, b);
	if(!len) {
		std::cout << "! " << a << ' ' << b << '\n';
		return;
	}
	std::cout << "! " << aa << ' ' << bb - ll << '\n';
}

int main() {
	// std::ios::sync_with_stdio(false);
	// std::cin.tie(0);
	// std::cout.tie(0);
	std::cin >> t;
	while(t --) {
		std::cin >> n >> m;
		work();
		std::cout.flush();
	}
	return 0;
}

 D. Li Hua and Tree

给出一棵树,进行k次操作,操作1是计算x的子树权值的和,操作2是交换x和x的重子,即断开x和x的父节点之间的边,链接x的重子和x的父节点之间的边。定义重子是x中具有最大子树的子节点,若有多个点满足条件,则重子是索引最小的那个点。

思路:模拟整个过程即可,注意细节。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
#define int long long
const int N = 1e5 + 5;
int n, m;
std::vector<int> vec[N];
int a[N], w[N], fa[N], val[N];

struct node{
    int w, id;
    bool operator<(const node &a) const{
        if (w != a.w) return w > a.w;
        return id < a.id;
    }
};
std::set<node> s[N];

void DFS(int u, int f){
    val[u] = a[u];
    w[u] = 1;
    for(auto v : vec[u]){
        if (v == f) continue;
        fa[v] = u;
        DFS(v, u);
        val[u] += val[v];
        w[u] += w[v];
        s[u].insert({w[v], v});
    }
}

signed main(){
    std::cin.tie(0);
    std::cout.tie(0);
    std::ios::sync_with_stdio(0);
    std::cin >> n >> m;
    for(int i = 1; i <= n; i ++) {
    	std::cin >> a[i];
    }
    for(int i = 1; i < n; i ++) {
        int u, v;
        std::cin >> u >> v;
        vec[u].push_back(v);
        vec[v].push_back(u);
    }
    DFS(1, -1);
    while(m --){
        int op, x;
        std::cin >> op >> x;
        if(op == 1) 
        	std::cout << val[x] << '\n';
        else {
            if (s[x].empty()) continue;
            int son = s[x].begin() -> id;
            s[fa[x]].erase({w[x], x});
            s[x].erase(s[x].begin());
            int big = w[son];
            int value = val[son];
            w[son] = w[x];
            w[x] -= big;
            val[son] = val[x];
            val[x] -= value;
            s[fa[x]].insert({w[son], son});
            s[son].insert({w[x], x});
            fa[son] = fa[x];
            fa[x] = son;
        }
    }
    return 0;
}

 

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

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

相关文章

Python樱花树

文章目录 前言一、Turtle基础1.1 Turtle画板1.2 Turtle画笔1.3 Turtle画图1.4 Turtle填色1.5 Turtle写字 二、Python樱花树2.1 樱花类2.2 樱花树2.3 主函数2.4 程序分析2.5 樱花林 尾声 前言 粉色系最爱&#xff01;Python樱花树等你获取~ 哈喽小伙伴们好久不见啦&#xff0c;…

几何感知Transformer用于3D原子系统建模

基于机器学习的方法在预测分子能量和性质方面表现出很强的能力。分子能量至少与原子、键、键角、扭转角和非键原子对有关。以前的Transformer模型只使用原子作为输入&#xff0c;缺乏对上述因素的显式建模。为了减轻这种限制&#xff0c;作者提出了Moleformer&#xff0c;这是一…

ChatGPT课程送账号啦,让你成为新生代AI程序员

ChatGPT能帮助程序员 解决哪些具体问题&#xff1f; 程序员在日常工作中可能会遇到各种各样的问题&#xff0c;如语法错误、逻辑问题、性能问题等等。 不同业务场景的问题&#xff0c;都可以利用ChatGPT获取各自场景下的知识&#xff0c;并使用ChatGPT提供的代码示例和问题解…

S32K3系列单片学习LPSPI是什么

前言 通过前面的学习&#xff0c;已经可以实现最基础的引脚配置功能了&#xff0c;并实现了点亮LED的程序。下面将记录一下&#xff0c;S32K3的SPI模块的配置方法&#xff0c;以及注意事项。 一、LPSPI介绍 **LPSPI:LOW POWER Serial Peripheral Interface**1.概述 所有LPS…

Unity3d数字化看板-多关节机器人运动控制

特殊&#xff1a;机器人多关节跟随运动 机械手运动控制主要是关节的旋转&#xff0c;通过控制多个关节的角度&#xff0c;实现对机械手的同步控制 机械手运动控制&#xff0c;可以分解为多个关节的运动&#xff0c;下一关节是跟随在上一关节运动&#xff0c;在处理模型的时候…

小案例CSS

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name"viewport" content"widthde…

一个基于 go 实现的轻量级任务调度框架

github 地址&#xff1a;GitHub - memory-overflow/light-task-scheduler: 一个go语言的轻量级的快速实现任务调度的框架&#xff0c;并且支持有状态任务的持久化&#xff0c;并发控制和超时控制。 框架的设计思想和背景 业务后台开发&#xff0c;经常会遇到很多并发低&#…

QT笔记——属性栏之QtPropertyBrowser下载配置

我们常常看到Qt Designer如下图&#xff0c;属性栏 环境&#xff1a;vs2019 qt 5.12.2 QtPropertyBrowser 下面我将介绍如何去下载和安装配置 QtPropertyBrowser&#xff0c;使用的是.dll和.lib 第一种方式&#xff1a;编译qt4 源码的方式 然后修改为qt5 的形式 第一步&am…

Ext JS 4实现合并行单元格

目录 文件 最后由 oscar999 在 几秒前 编辑 有一位朋友咨询了一个问题: 在Ext JS 4中, 如何合并行的单元格, 已经选取的时候只能选择某一列, 期望的效果如下: 在Ext JS 中, 合并表头的列有现成方案, 但是合并行单元格不是extjs的现有功能,这个需要底层扩展, 也就是使…

云原生(docker+k8s+阿里云)-Docker

Gitee-Kubernetes学习 kubectl备忘清单 k8s官方文档-task [云原生-kubectl命令详解] ingress详解 ingress官方文档 云原生-语雀-架构师第一课 从Docker到Kubernetes进阶-社区 云计算学习路线-阿里云大学 如上图&#xff0c;服务器有公网ip和私网ip&#xff0c;公网ip是外部访问…

AWT-对话框——Dialog以及其子类FileDialog

Dialog: Dialog时Window类的子类&#xff0c;时一个容器类&#xff0c;属于特殊组件。对话框是可以独立存在的顶级窗口&#xff0c;因此用法与普通窗口的用法几乎完全一样&#xff0c;但是使用对话框需要注意以下几点&#xff1a; 对话框通常依赖于其它窗口&#xff0c;就是通…

分布式系统通信中使用安全套接字(SSL/TSL)

协商加密和认证算法 SSL的设计&#xff0c;可以在链接的两端初始化握手通信时&#xff0c;在进程间协商加密和认证的算法。 因此可能出现在通信双方没有足够的公共算法导致链接尝试失败的情况。 自举安全通信 通过混合协议建立安全通道。 使未加密的通信进行初始化交换&#xf…

【论文笔记】SwinIR: Image Restoration Using Swin Transformer

声明 不定期更新自己精度论文&#xff0c;通俗易懂&#xff0c;初级小白也可以理解 涉及范围&#xff1a;深度学习方向&#xff0c;包括 CV、NLP、Data Fusion、Digital Twin 论文标题&#xff1a;SwinIR: Image Restoration Using Swin Transformer 论文链接&#xff1a;http…

IDAPython入门基础语法

文章目录 参考文章IDAPython简介常用函数获取界面地址的函数数值获取函数数值判断函数patch操作函数去除花指令实例 参考文章 IDAPython入门教程 基于IDA7.5_Python3 第一讲 简介与地址获取 IDAPython简介 IDAPython拥有强大的功能,在使用IDA分析程序时非常有用,可以简化许多…

队列的实现

队列 简介 队列是一种线性表的特殊形式&#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作&#xff0c;和栈一样&#xff0c;队列是一种操作受限制的线性表。进行插入操…

信息安全复习五:数据加密标准(DES)

一、本章梗概 1.主要内容&#xff1a;分组密码、分组密码用到的关键技术和结构、对称密钥密码典型算法DES 2.思考问题&#xff1a; ①按照明文被处理的形式&#xff0c;DES属于标准的什么密码 ②根据密钥的使用数量&#xff0c;DES属于标准的什么密码 3.内容回顾&#xff1a; …

力扣sql中等篇练习(十二)

力扣sql中等篇练习(十二) 1 产品销售分析 ||| 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT s1.product_id,s1.first_year,s2.quantity,s2.price FROM (SELECT product_id,Min(year) first_yearF…

基于趋动云的chatGLM-6B模型的部署

首先根据官方示例教程&#xff0c;学会怎么创建项目&#xff0c;怎么使用数据&#xff0c;怎么进入开发环境&#xff0c;以及了解最重要的2个环境变量&#xff1a; 这个是进入开发环境以后的代码目录 $GEMINI_CODE 这个是引用数据集后&#xff0c;数据集存放的路径 $GEMINI_DA…

学生信息管理系统简易版(文件读写操作)

功能模块 具体功能如下&#xff1a; 添加学生信息修改学生信息&#xff08;按学号&#xff09;排序&#xff08;分别按总分升序、降序、以及按姓名升序&#xff09;查找学生&#xff08;按学号&#xff09;删除学生查看所有学生信息 数据结构体设计 本表设计一个学生信息的结…

computed和watch

computed: 写法&#xff1a; import {computed} from vue setup(){ --- //计算属性—简写 let fullName computed(()>{ return person.firstName - person. lastName}) //计算属性-完整 let fullName computed({ get(){ return person.firstName - person. lastName},…