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

枚举+数学,CF 449A - Jzzhu and Chocolate

目录

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

A - Jzzhu and Chocolate


二、解题报告

1、思路分析

我们考虑横着切 x 次,那么得到的巧克力块中最小宽应该是 n / (x + 1)

而 x 最大是n - 1,n / (x + 1) 的取值是 sqrt(n) 级别的

那么我们可以枚举最小宽,由宽推出横切的次数,剩下的次数全给竖切

维护答案即可

2、复杂度

时间复杂度: O(sqrt(n))空间复杂度:O(n)

3、代码详解

 ​
#include <bits/stdc++.h>

// #define DEBUG

using i64 = long long;
using u32 = unsigned int;
using u64 = unsigned long long;

constexpr int inf32 = 1E9 + 7;
constexpr i64 inf64 = 1E18 + 7;

void solve(){
	int n, m, k;
	std::cin >> n >> m >> k;

	i64 res = 0;

	auto f = [&](int x) -> int {
		return m / std::max(1, (x + 1));
	};

	for (int i = 1; i <= n && i <= 40000; ++ i) {
		res = std::max(res, 1LL * i * f(k - n / i + 1));
		res = std::max(res, 1LL * n / i * f(k - n / (n / i) + 1));
	}

	std::cout << (res ? res : -1);
}

auto FIO = []{
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
	std::cout.tie(nullptr);
	return 0;
}();

int main() {
	#ifdef DEBUG
		freopen("in.txt", 'r', stdin);
		freopen("out.txt", 'w', stdout);
	#endif
	int t = 1;
	// std::cin >> t;
	while(t --)
		solve();
	return 0;
}


http://www.kler.cn/a/290618.html

相关文章:

  • redis实现消息队列的几种方式
  • 新的恶意软件活动通过游戏应用程序瞄准 Windows 用户
  • 数据分析那些事儿——时间片轮转实验
  • Android S长按文件或视频或编辑中文字或输入框中文字不会弹出分享菜单
  • 图书管理系统(Java实现)
  • Docker使用docker-compose一键部署nacos、Mysql、redis
  • AI科学家:自动化科研的未来之路
  • Java JAR命令打包详解与坑点
  • 【适配器】设计模式:旧系统迁移与第三方库集成的解决方案
  • ElasticSearch-聚合操作
  • 【大数据】浅谈Pyecharts:数据可视化的强大工具
  • MySQL数据库安装(详细)—>Mariadb的安装(day21)
  • Linux教程8:文本编辑命令vi
  • css画个熊猫
  • 面试(九)
  • SAP HCM 如何追踪Z表的日志修改记录
  • Docker 入门指南:从安装到第一个容器
  • 安装vue-cli2.0并创建项目
  • 我该如何使用DevEco Studio进行开发呢
  • 09-02 周一 elasticsearch使用指南
  • Android U 多任务启动分屏——Launcher流程(更新中)
  • 自定义全局变量在uniapp的Vuex应用
  • 人工智能与机器学习原理精解【17】
  • 【JUnit单元测试框架】
  • vite 打包 学习
  • 能实现可算不可见的同态加密技术详解