后台布局之反例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .pg-header{
            height: 48px;
            background-color: #1d9ad6;
            color: white;
        }
        .pg-content{}
        .pg-footer{}
        .pg-content .menu{
            width:20%;
            background-color: red;
            min-width: 200px;
            height: 700px;
        }
        .pg-content .content{
            width:80%;
            background-color: green;
            min-width: 200px;

        }
        .left{
            float:left;
        }
        .right{
            float: right;
        }
    </style>
</head>
<body style="margin: 0">
        <div class="pg-header"></div>
        <div class="pg-content">
            <div class="menu left">asd</div>
            <div class="content left">
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
                <p>asdasd</p><p>asdasd</p><p>asdasd</p><p>asdasd</p>
            </div>
        </div>
        <div class="pg-footer"></div>
</body>
</html>

  

转载于:https://www.cnblogs.com/qiangayz/p/8725778.html

非常好的问题!我们来分析你提供的这个反例: --- ### ✅ 输入: ``` 0 0 0 0 0 0 0 0 1 2 3 ``` 数组长度为 11,其中: - `cnt_0 = 8`(有 8 个 `0`) - `cnt_1 = 1`(有 1 个 `1`) - `cnt_rest = 2`(有 2 个 `≥ 2` 的数:2 和 3) --- ## ✅ 我们的目标: 构造一个排列,使得相邻和的 mex 最小。 --- ## ✅ 分析逻辑 我们回顾最终判断逻辑: ```c if (cnt_0 == 0) { printf("0\n"); } else if (cnt_0 - 1 <= cnt_1 + cnt_rest) { printf("0\n"); } else if (cnt_1 == 0) { printf("1\n"); } else { printf("2\n"); } ``` 代入当前值: - `cnt_0 - 1 = 7` - `cnt_1 + cnt_rest = 1 + 2 = 3` - `7 > 3` ⇒ 不满足第一个条件 - `cnt_1 != 0` ⇒ 不满足第二个条件 - 所以输出:`2` --- ## ✅ 实际构造验证 我们尝试构造一个排列,使得 `mex = 0`: 目标是:**不让 `0` 出现在任何相邻和中** 即:**所有 `0` 都不能与任何 `0`、`1`、`2`、`3` 相邻** 这要求: - 所有 `0` 都必须被 `≥ 2` 的数隔开 但是: - `cnt_0 = 8` - 可用的“隔板”是 `1`、`2`、`3`,共 `1 + 1 + 1 = 3` 个(注意 `cnt_1 + cnt_rest = 3`) 所以最多只能插入 `3 + 1 = 4` 个 `0`,即: ``` 0 a 0 b 0 c 0 d ``` 最多放 4 个 `0`,而我们有 8 个 `0` ⇒ **无法避免 `0` 和 `0` 相邻** 所以 `0` 必然出现在相邻和中 ⇒ mex ≥ 1 --- ### 再尝试避免 `1` 出现: - 即避免 `0 + 1` 或 `1 + 0` 出现 但因为 `cnt_1 = 1`,且 `0` 太多 ⇒ 无法避免 `0 + 1` ⇒ `1` 也会出现 --- ### 所以 mex ≥ 2 构造一个排列: ``` 0 0 0 0 0 0 0 0 1 2 3 ``` 相邻和为: ``` 0+0=0 0+0=0 0+0=0 0+0=0 0+0=0 0+0=0 0+0=0 0+1=1 1+2=3 2+3=5 ``` 出现的和为:`{0, 1, 3, 5}` ⇒ mex = 2 ✅ 输出正确! --- ## ✅ 结论 对于输入: ``` 0 0 0 0 0 0 0 0 1 2 3 ``` - `cnt_0 = 8` - `cnt_1 = 1` - `cnt_rest = 2` - 无法避免 `0` 出现在相邻和中 - 无法避免 `1` 出现在相邻和中 - 所以 mex = 2 --- ## ✅ 最终代码验证 ```c #include <stdio.h> int main() { int n; scanf("%d", &n); int cnt_0 = 0, cnt_1 = 0, cnt_rest = 0; for (int i = 0; i < n; ++i) { int x; scanf("%d", &x); if (x == 0) cnt_0++; else if (x == 1) cnt_1++; else cnt_rest++; } if (cnt_0 == 0 || cnt_0 - 1 <= cnt_1 + cnt_rest) { printf("0\n"); } else if (cnt_1 == 0) { printf("1\n"); } else { printf("2\n"); } return 0; } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值