Codeforces Round 809 (Div. 2) D1. Chopping Carrots (Easy Version) 题解
题意
Codeforces Round 809 (Div. 2) D1. Chopping Carrots (Easy Version)
给两个整数, 一个数组 , 要求构造一个同样长度的数组 , 使得 最小,其中 。输出最小值。
思路
我们可以设定变化后的数组最小值为 ,这里 表示数组 最小值。接着依次求解在当前情况下 最小为多少(的情况下),记录 的最大值和最小值,枚举完后用最大值减最小值更新答案。
代码
#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
#define fi first
#define se second
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const double eps = 1e-4;
const int N = 3010;
int n, k;
int a[N];
void solve() {
scanf("%d%d", &n, &k);
for (int i=1; i<=n; i++) {
scanf("%d", &a[i]);
}
sort(a + 1, a + 1 + n);
int res = 1e9;
for (int v = 0; v <= a[1]; v++) {
int maxv = 0, minv = 1e9;
for (int i = 1; i<=n; i++) {
int p = k;
if (v) p = min(k, a[i] / v);
maxv = max(maxv, a[i] / p);
minv = min(minv, a[i] / p);
}
res = min(res, maxv - minv);
}
printf("%d\n", res);
}
int main() {
// multiple case
int t; scanf("%d", &t);
while(t--) {
solve();
}
// single case
// solve();
return 0;
}
不忘初心方得始终
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2020-11-14 UVa213 - Message Decoding 题解
2020-11-14 UVa133 - The Dole Queue 题解
2020-11-14 UVa512 - Spreadsheet Tracking 题解(两种解法)