[构造] 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. 最小的值(贪心+模拟)的主要内容,如果未能解决你的问题,请参考以下文章

2021暑假每日一题 week2 完结

[模拟] aw3664. 数组补全(模拟+贪心+中位数+思维)

2020牛客寒假算法基础集训营4.E——最小表达式贪心 & 构造

[贪心] aw3686. 移动序列(贪心+模拟+思维)

[贪心] aw3705. 子集mex值(贪心+模拟+模板题)

[贪心] aw3769. 移动石子(模拟)