当前位置: 首页 > news >正文

Two Knights (数学)

题目:

思路:

前置知识:国际象棋中骑士的走法类比象棋的马,但是不会被棋子所阻挡

首先我们不考虑限制安排两个骑士,那么一共有 k^{2} 个格子,所以根据组合数学,那么就有 \binom{k^{2}}{2} 种选择方式,这是显然的

那么现在加上限制,现在两个骑士不能在二者的攻击范围内,由于二者是相对的,因此我们考虑其中一种情况即可,所以考虑分析其特点

我们发现只有在 2*3 或 3*2 的范围中二者才有可能在攻击范围内,即以下情况

那么针对 2*3 的情况分析,我们有两种可能的攻击放法,那么在棋盘中有多少个 2*3 小块(假设为cnt)我们就有 2*cnt 种攻击方法

所以现在问题转变为求有多少个 2*3 的小方块,这也很简单,我们分开轴考虑,对于 2,我们一共有 (k-1) 种方法,同理对于 3,我们有 (k-2) 种放法

综上,根据乘法原理,我们方法数就有 2*(k-1)*(k*2) 种

同时还有 3*2 的情况,所以其实是 4*(k-1)*(k*2)

最后模拟即可,不过也能预处理答案,本题没有多测,其实也没必要

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define yes cout << "YES\n"
#define no cout << "NO\n"int getans(int k)
{int kk = k*k;int res = kk * (kk - 1) / 2;res -= 4 * (k-1)*(k-2);return res;
}void solve()
{int n;cin >> n;for (int i = 1; i <= n; i++){cout << getans(i) << endl;}
}signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;while (t--){solve();}return 0;
}

http://www.xdnf.cn/news/1378837.html

相关文章:

  • 大模型微调示例三之Llama-Factory_Lora
  • 【C++详解】用哈希表封装实现myunordered_map和 myunordered_set
  • Kubernetes一Prometheus概述
  • [linux仓库]透视文件IO:从C库函数的‘表象’到系统调用的‘本质’
  • [调试][实现][原理]用Golang实现建议断点调试器
  • 获取小红书某个用户列表
  • 【LeetCode 热题 100】32. 最长有效括号——(解法二)动态规划
  • 集成电路学习:什么是TensorFlow
  • AI实时故障诊断系统(实时采集信号)
  • Python 正则表达式完全指南:从基础语法到实战案例
  • 【从0带做】基于Springboot3+Vue3的呱呱同城(微服务项目)
  • 实现微信小程序的UniApp相机组件:拍照、录像与双指缩放
  • ARM相关的基础概念和寄存器
  • PCIe 5.0 SSD连续读写缓存用完速度会骤降吗?
  • 2024年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 帕累托优化:多目标决策的智慧与艺术
  • 【重学 MySQL】九十二、 MySQL8 密码强度评估与配置指南
  • 关于virtual camera
  • 【C++游记】模板升级
  • 【半导体制造流程概述】
  • windows 子系统 wsl 命令的用法
  • vue3 字符 居中显示
  • SpringBoot整合Redis:从入门到实战的完整指南
  • 关于DTO、DO、BO、VO
  • 工业 DCS 全面科普:从入门到 AI 赋能的未来
  • mybatis-plus实现苍穹外卖项目-分类操作,不定期更新-day2
  • 【和春笋一起学C++】(三十七)类的析构函数
  • 死锁产生的条件是什么? 如何进行死锁诊断?
  • leetcode 974 和可被K整除的子数组
  • 集成电路学习:什么是YOLO一次性检测器