[构造] aw3767. 最小的值(贪心+模拟)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[构造] aw3767. 最小的值(贪心+模拟)相关的知识,希望对你有一定的参考价值。
1. 题目来源
链接:3767. 最小的值
2. 题目解析
构造题,分类讨论即可,比较简单。
第 i
位有 4 种情况,p[i]>=1
的整数:
- 0 0,不影响结果,
p[i]=1
尽量小即可。 - 1 1,不影响结果,
p[i]=1
尽量小即可。 - 0 1,
b
数组在该位上有值,令其造成的影响尽量小,p[i]=1
即可。 - 1 0,
a
数组这些位评分 0 1 造成的负影响。注意要严格大于,上取整即可。
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int n;
int a[N], b[N];
int main() {
cin >> n;
for (int i = 0; i < n; i ++ ) cin >> a[i];
for (int i = 0; i < n; i ++ ) cin >> b[i];
int cnt = 0, ca = 0;
for (int i = 0; i < n; i ++ ) {
if (a[i] && !b[i]) ca ++ ; // 1 0 记录下来个数,ca
if (!a[i] && b[i]) cnt ++ ; // 0 1 代表 b 严格大于 a 的值,总和为 cnt
} // 0 0 、1 1 不用记录,p当前位置为 1 即可
int res = 0;
if (!ca) res = -1;
else res = (cnt + 1 + ca - 1) / ca; // cnt+1/ca 上取整即可
cout << res << endl;
return 0;
}
以上是关于[构造] aw3767. 最小的值(贪心+模拟)的主要内容,如果未能解决你的问题,请参考以下文章
[模拟] aw3664. 数组补全(模拟+贪心+中位数+思维)
2020牛客寒假算法基础集训营4.E——最小表达式贪心 & 构造