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

P14041 [PAIO 2025] Towers

更好的阅读体验

题意

实现一个函数,求在一个 \(N \times M\) 的矩阵中放置最少炮塔数的方案,使得每个 \(K \times K\) 的正方形区域内至少有一个炮塔。

思路

观察样例可以发现,在最优情况下 每行每隔 \(K-1\) 格就有一个炮塔,再看列也是如此,所以 $ans = \left \lceil \frac{N-K+1}{K} \right \rceil \times \left \lceil \frac{M-K+1}{K} \right \rceil $

通过这个回答
可以知道 \(\left \lceil \frac{x}{n} \right \rceil = \left \lfloor\frac{x-n+1}{n} \right \rfloor\) 反之可以得到 \(\left \lfloor \frac{x}{n} \right \rfloor = \left \lceil \frac{x+n-1}{n} \right \rceil 即\left \lfloor \frac{N}{K} \right \rfloor = \left \lceil \frac{N+K-1}{K} \right \rceil\)

所以 \(ans = \left \lfloor \frac{N}{K} \right \rfloor \times \left \lfloor \frac{M}{K} \right \rfloor\)

代码

此题是交互题,只需要把所写函数交上去即可

//C++ "优化"前
#include<bits/stdc++.h>
using namespace std;
int solve(int N, int M, int K){return ceil(((N-K+1.0)/(K*1.0)))*ceil(((M-K+1.0)/(K*1.0)));
}  
//C++ "优化"后
int solve(int N, int M, int K){return (N/K) * (M/K);
}  

话说优化前比优化后运行还快?

http://www.hskmm.com/?act=detail&tid=24541

相关文章:

  • 根号分治简单解说
  • 哈希简单解说
  • Say 题选记(9.28 - 10.4)
  • Excel表设置为细框线
  • 前端学习教程-VIte整合ECharts
  • const不可改变解释
  • macOS Sequoia 15.7.1安全更新:修复字体解析器内存损坏漏洞
  • AtCoder Beginner Contest 426 ABCDEF 题目解析
  • 数学
  • 前端学习教程-ElementPlus 教程
  • AI训练的悖论:为什么越追求准确率越会产生幻觉?
  • 信奥大联赛周赛(提高组)#2516-S 赛后盘点
  • PSRAM 是什么
  • Debian 13 eza 安装与常用参数
  • Syncthing 2.0 版本开机自启
  • 鲜花 10.4:【半 whk 向】临项交换法贪心
  • 前端学习教程-Pinia 教程
  • 布谷娱乐直播架构源码开发实用功能:技术驱动更迭的创新体验
  • Bean生命周期
  • 回忆QQ空间有感
  • mtgsig
  • 前端学习教程-Vue Router 教程
  • 详细介绍:Java-Spring 入门指南(十七)SpringMVC--Apipostl与RestFul实战测试
  • 详细介绍:告别 403 Forbidden!详解爬虫如何模拟浏览器头部(User-Agent)
  • 通过学习分位数函数提升预测准确性
  • 高中数列梳理
  • AtCoder Beginner Contest 426 实况记录 + A-D 题解
  • 提示词攻击如何防范(2025):从 Indirect Prompt Injection 到 RAG 供应链的分层防御实战
  • 【STM32项目开源】基于STM32的智能养殖场环境监测系统 - 详解
  • 前端学习教程-Axios