加加又赛赛

相信大家都听说过 5k 保龄了,那么 5k 保龄了是怎么回事呢?其实 5k 保龄了是因为他是唐氏儿,对拍之后把 freopen 删掉了,小编也很惊讶,但事实就是这样。大家对 5k 保龄了还有什么看法,欢迎在评论区与小编讨论哦~

A

考虑贪心,每个月把能买的钻石全买下来,最后把多余的“退掉”(视为当时没买)。

维护 pi 表示当前手上有几个通过第 i 种购买方案买到的钻石,则每过一个月 pipi+bi

考虑第 i 个月花费手上的哪 ci 个钻石。最后退掉的钻石价值和越大越好,所以这里花费的 ci 个钻石要取价值最小的前 ci 个。

线段树维护 p 即可。

B

把所有字符串排序,a 排在 b 前面当且仅当 a+b<b+a

用分讨或者别的什么方法容易证明这是偏序。

C

Nim-K 博弈:有 n 堆石子,两人轮流从 1k 堆石子中拿走若干个,无法操作者输。

结论:把每堆石子的数量的二进制表示 (a1a2am)2k+1 进制下做不进位加法(下文称“异或”),结果非 0 则先手必胜。

证明参考原版 Nim 游戏,还是比较简单的。

不能让绿龙选出一个“异或”和为 0 的子集,也就是说选出的人的 x 值需要线性无关。

则问题转化为选出一个子集使得 x 值线性无关且 y 值之和最大,线性基维护即可。

朴素实现难以通过,维护三进制向量时可以维护 0、1、2 的位置集合的状压值,少一个 log

顶针要代码,那就放一下代码:

#include <cstdio>
#include <algorithm>
#define int long long
using namespace std;
int n, q;
struct S
{
    int p0, p1, p2, v;
    int operator[](int x) { return p0 >> x & 1 ? 0 : p1 >> x & 1 ? 1 : 2; }
    S operator*(int k) { return k == 1 ? S{p0, p1, p2, v} : S{p0, p2, p1, v}; }
    S operator-(S b) { return S{p0 & b.p0 | p1 & b.p1 | p2 & b.p2, p1 & b.p0 | p2 & b.p1 | p0 & b.p2, p2 & b.p0 | p0 & b.p1 | p1 & b.p2, v}; }
} p[150];
void I(S u)
{
    for (int i = 60; i >= 0; --i)
        if (u[i])
        {
            if (!p[i][i])
            {
                p[i] = u, q += u.v;
                return;
            }
            if (u.v > p[i].v)
                q += u.v - p[i].v, swap(p[i], u);
            u = u - p[i] * (u[i] * p[i][i] % 3);
        }
}
signed main()
{
    freopen("a.in", "r", stdin);
    freopen("a.out", "w", stdout);
    scanf("%lld", &n);
    for (int i = 1, x, y, _ = 0; i <= n; ++i)
    {
        scanf("%lld%lld", &x, &y), x ^= _;
        S u = {0, 0, 0};
        for (int i = 0; i <= 60; ++i)
            if (x >> i & 1)
                u.p1 |= 1ll << i;
            else
                u.p0 |= 1ll << i;
        u.v = y, I(u);
        printf("%lld\n", _ = q);
    }
    return 0;
}

“异或”的引号的作用是什么?

posted @   Jijidawang  阅读(166)  评论(9编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示