zoukankan      html  css  js  c++  java
  • ARC128 比赛记录(题解速览

    总之就是非常拉

    A

    发现有 \(\frac{a}{b}\times\frac{b}{c}=\frac{a}{c}\),所以贡献可以拆开,拆成两两相邻的乘积。
    然后直接贪心如果 \(\ge 1\) 就乘上即可。

    B

    设三种颜色分别为 \(0,1,2\),则每次变化总和 \(\bmod 3\) 是不变的。
    所以如果要把所有球变成 \(k\),剩下两种球颜色和必须 \(\bmod 3\) 相同。
    然后直接枚举两两就行了。

    C

    赛时思路:差分,然后变成以下两个限制

    • \(\sum_{i=1}^nc_i\le M\)
    • \(\sum_{i=1}^nc_i(n-i+1)=S\)

    要求最大化 \(\sum_{i=1}^nc_i(\sum_{j=i}^na_j)=\sum_{i=1}^nc_ihz_i\) 其中 \(hz_i\) 表示后缀和。
    按照 \(\frac{hz_i}{n-i+1}\) 排序,显然越大越优。
    首先贪心地填最大的,然后考虑这样可能会不满足 \(\sum_{i=1}^nc_i\le M\)
    首先,我们考虑如果我们选了前面的两个,发现如果调成一个肯定比原来优。
    所以最多只会选两个位置有数。
    直接 \(O(n^2)\) 枚举就做完了。
    但是上面的贪心正确性还没证明,如果是错的勿喷。

    D

    考虑怎样会不合法。
    首先如果两个相同元素相邻,那肯定删不掉,可以凭这个把序列划分成若干段。
    发现合法性仅和所有删除元素左右第一个未被删除元素决定。
    所以每段之间有“高墙”,段和段之间贡献肯定独立。
    经过假了无数次后的猜结论,发现删掉的序列只有形如 a(bab...ba)ba(bab...bab)a 才会不合法。
    感性证明就考虑如果存在第三个元素,那至少有一个元素不等于左右第一个元素,可以先按它左右一个一个删掉。
    严格证明可以考虑归纳法。
    然后就做完了, 考虑 dp 表示当前这个元素作为最后一个被保留的元素的方案数(不考虑它右边
    然后随便 \(O(n)\) 转移一下就做完了。

    E F 咕咕咕

  • 相关阅读:
    IoC和AoP
    学习树
    Avalon Framework概念
    java利用WatchService实时监控某个目录下的文件变化并按行解析
    [DBT-08001] 无法检查可用内存。
    C#之http协议与soap协议之间的区别
    C#之ActionResult 详解
    C#实现连接池
    C#MVC之传入字典的模型项为 null,但此字典需要类型“System.Decimal”的非 null 模型项。
    Func的介绍
  • 原文地址:https://www.cnblogs.com/pealfrog/p/15415722.html
Copyright © 2011-2022 走看看