zoukankan      html  css  js  c++  java
  • [做题记录乱做] 20211215 ~ 20211219 HN

    CF914F Substrings in a String

    操作分块以后块内做AC机, 块间kmp即可。

    CF1404D Game of Pairs

    偶数的时候选A, 奇数的时候选\(B\)

    大体就是分 \(i, i + n\) 的归属讨论即可。

    CF549F Yura and Developers

    单调栈处理某个数作为最值的区间。

    每次枚举区间中短的那一边, 另一边用个vector之类的东西处理。

    每次枚举短的一边的话, 从枚举量大概是一个 \(\log\) 的。

    CF1404E Bricks

    把长方形的延伸看成是跨越边, 根据边能不能选可以搞出二分图, 直接网络流即可。

    CF1365G Secure Password

    \(\binom{13}{6} > 1000\)

    可以拿出所有\(13\)位的有\(6\)\(1\)的二进制数作为标号,然后每次询问的时候拿出标号这位上是一的询问, 求答案的时候就是求除了这个数以外的所有数的按位或。

    CF1285F Classical?

    长得很经典。

    \(lcm(a, b) = \frac{ab}{gcd(a, b)}\)

    可以想到, 如果把\(a_i\)的所有约数全部拿出来, 那么应该会存在两个互质的数\(c, d\), 使得\(lcm(c, d) = ans\)

    考虑从大往小扫描, 用一个栈存值。具体来说, 从大往小做, 每次加入一个数就判断栈中是否存在一个数和当前数互质, 如果存在, 那么一直弹栈直到把互质的数弹出去, 并且用那个互质的数更新答案, 因为被弹出去的数一定没用。最后把当前数加进来继续扫描。

    最后即可得到答案。判断是否存在数互质的办法是这样的。

    \(f(n)\)表示\(gcd(n, x) = 1\)\(x\)的个数, \(cnt(n)\)表示 \(n\) 的倍数的个数。

    \[\sum [gcd(a, x) == 1] = \sum _a\sum_{p | gcd(a, x)}\mu(p) = \sum_{p|x}p\times cnt(p) \]

    然后可以直接维护了。

    CF464E The Classic Problem

    主席树与封装练习题。

    CF176E Archaeology

    直接\(set\)维护即可。

    CF1557E Assiut Chess

    下棋题。

    考虑把王逼下去就好了。

    CF794F Leha and security system

    搞个神秘线段树就好了。

    CF325E The Red Button

    \(n\) 为奇数无解, \(n\) 为偶数考虑讨论\(i, i + n (i < \frac{n}{2})\)的连边, 合并环即可。

    CF671C Ultimate Weirdness of an Array

    这也能差分就 \(nm\) 离谱。

    值域很小, 考虑从大到小枚举一个值 \(i\), 然后维护一个数组 \(nxt_l\) 表示从 \(l\) 开始, 最远延伸到哪里使得 \(f(l, nxt_l) < i\) , 考虑 \(i\) 变化的时候, \(nxt\) 的变化只和整除 \(i\) 的值所在的位置相关。

    考虑把这些位置拿出来作为 \(x_1, x_2, \cdots, x_m\), 讨论一下值的变化情况, 大力线段树维护即可。

    CF1479D Odd Mineral Resource

    显然和异或有关。

    那就是主席树+二分解决了。

    CF633G Yash And Trees

    直接线段树套bitset。

    CF1279F New Year and Handle Change

    显然有\(n^2\)的dp。

    带权二分即可。

    CF455E Function

    看起来就是直线+折线, 直接斜率优化即可。

    CF986E Prince's Problem

    憨憨题。这不直接分解+dfs完事。

    CF1083C Max Mex

    值做下标建线段树, 发现就是判断一个前缀区间里面所有点是不是在一条链上, 显然可以直接二分。

    CF587E Duff as a Queen

    异或差分以后直接线段树维护线性基即可。

    [AGC010B] Boxes

    差分以后考虑和和差分数组的变化判断。

    [ICPC2019 WF]Azulejos

    直接贪心。

    [ICPC2019 WF]Beautiful Bridges

    注意圆的凸性判断。

    「JOISC 2017 Day 3」自然公园

    给你一张大小为 \(n\) 的图, 每个点的度数不超过 \(7\), 每次可以指定 \(A\)\(B\) 和若干个点, 判断是否可以只经过这些点从 \(A\)\(B\) , 猜出这张图。

    \(n \leq 1400, m \leq 1500\)

    询问次数不超过 \(45000\)

    这个问题上来就猜图, 看起来很强。

    这种猜图题常见的想法是从猜链做起, 不妨先考虑链的情况, 也就是如果知道链的两个端点怎么做。

    不妨假设链的端点是 \(x, y\) ,考虑怎么求出这条链。考虑把所有点拿出来变成一个序列, 然后在这个序列上二分, 二分到 \(mid\) 的时候把 \(x, y, a_l\cdots a_{mid}\) 的点加入询问集合, 看\(x, y\)是否联通, 如果不联通了增大, 反之减小, 取出恰好不连通的那个位置就应该在链上, 这样 \(\log\) 次询问可以确定一个点。

    然后仿照WC2018即时战略那个题, 维护一个 \(1\) 所在的联通块, 然后不断扩大这个连通块。

    考虑如果找到了一个和当前联通块直接相连的点, 怎么找联通块里面的点到这个点的连边。可以把当前联通块的所有点指定一个根随便跑一个 \(dfs\) 序, 然后在这个上面二分判断根到这个点 \(z\) 是否联通, 可以找到一个刚好有边的点, 删去这个点, 递归剩下的联通块即可找到所有边。那么这样一次二分最多多 \(7\) 个联通块, 每次有 \(\log\) 的代价, 那一条边的代价是 $7 \times \log n $ 。

    然后再考虑怎么找一个直接连接的点。 随机一个不在联通块里面的点, 然后用链的那个二分找到一个不在连通块里面, 但是在路径上的点, 这样可以 \(\log\) 代价找点。

    看起来跑不满那自然就可以过

    过不去, 没事了

    CF573D Bear and Cavalry

    考虑排序不等式, 可以得到匹配的是相邻三个数, 设\(f_i\)表示前 \(i\) 大的人和马配对的答案, \(ddp\)转移即可。

  • 相关阅读:
    cpu gpu数据同步
    metal &object c
    unity macro 分平台处理
    unity reflection probe --- forward deferred transparent opaque
    unity pbr
    unity 实时间接光照 解决方案
    Gpu driven rendering pipelines & bindless texture
    在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
    转自大楚网:微软SAPI:让你的软件能说会道
    (转) 使用Speech SDK 5.1文字转音频
  • 原文地址:https://www.cnblogs.com/clover4/p/15695426.html
Copyright © 2011-2022 走看看