可持久化并查集 显然是可持久化并查集裸题吧... 就是题面长得有点恶心,被闪指导狂喷. 对于\(K\)操作,直接\(O(1)\)赋值修改. 对于\(R\)操作,并查集上直接连边. 对于\(T\)操作,先询问当前是否连通,若联通再询问\(t\)次操作前是否连通. 代码 #include<bits/stdc++.h> #define Tp template<typename Ty> #define Ts template<typename Ty,typename... Ar>…
树形\(DP\) 考虑设\(f_{i,j,k}\)表示在\(i\)的子树内,从\(i\)向下的最长链长度为\(j\),\(i\)子树内直径长度为\(k\)的概率. 然后我们就能发现这个东西直接转移是几乎不可能的. 所以我们在转移时要开个辅助数组\(s_{op,x,y,k}\),其中\(op\)用于滚存,表示最长链为\(x\),次长链为\(y\),子节点子树内直径长度小于等于\(k\)的概率. 然后我们只要枚举子节点,再枚举子节点子树内的链长,就可以采用刷表法简便地\(DP\)转移了. 这样看似\…
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后我们就可以暴搜了,大体就是枚举等式左边两个数每一位的值,并枚举中间的运算符是\(+\)还是\(-\),然后计算出等式右边的值,判断是否合法. 中间过程可以加上一些剪枝. 注意当火柴棒从某一位移到另一位时,我们可以规定,去除火柴棒需要算步数,加入火柴棒则无需算步数,这样就可以避免重复了. 具体实现有一…
没有换根操作 考虑如果没有换根操作,我们该怎么做. 我们可以求出原树的\(dfs\)序列,然后开线段树维护. 对于修改操作,我们可以倍增求\(LCA\),然后在线段树上修改子树内的值. 对于询问操作,我们直接查询子树内的值. 但有了换根操作,\(LCA\)就可能不再是原来的\(LCA\),子树也就可能不再是原来的子树了. 换根操作后的\(LCA\) 通过一波画图+找规律,我们可以发现,在根为\(rt\)时,换根操作后的\(LCA(x,y)\)大致有如下几种情况:(以下讨论中\(x,y\)互换同理…
题意转化 考虑我们对于每一对激活关系建一条有向边,则对于每一个点,其答案就是其所能到达的点数. 于是,这个问题就被我们搬到了图上,成了一个图论题. 优化建图 考虑我们每次需要将一个区间向一个区间连边. 则我们可以用线段树优化建图. 具体步骤就是,建两棵线段树,每次新建一个虚节点,然后把需要向外连边的区间在一棵线段树上向这个节点连边,并从这个节点在另一棵线段树上向应被连边的区间连边. 求解答案 建完图之后,考虑如何求答案. 首先,我们\(Tarjan\)缩点,显然一个强连通分量内的所有节点可以相互…
数位\(DP\) 首先考虑二进制数\(G(i)\)的一些性质: \(G(i)\)不可能有连续两位第\(x\)位和第\(x+1\)位都是\(1\).因为这样就可以进位到第\(x+2\)位.其余情况下,这个\(G(i)\)必然合法. 对于一对\(x,y\)满足\(x<y\),则\(G(x)<G(y)\). 则根据这些性质,我们就可以考虑数位\(DP\). 按照一般数位\(DP\)的套路,我们把对\(a\sim b\)的\(DP\)转化为对\(1\sim a-1\)和\(1\sim b\)的两个\(…
这次模拟赛真的,,卡常赛. The solution of T1: std是打表,,考场上sb想自己改进匈牙利然后wei了(好像匈牙利是错的. 大力剪枝搜索.代码不放了. 这是什么神仙D1T1,爆蛋T1,好像A了它或拿分的就几个人,, The solution of T2: 题解是这么写的:和八皇后很像,八皇后是x+y和x-y来判重,这里就k1x+k2y来判重. 从各个点引出直线,带入原点检验方程即可. 注: x/y = Δx/Δy x*Δy = Δx*y 下面代码用了这个原理,省去了gcd(或…
[题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. [问题描述] 现在有m+1个星球,从左到右标号为0到m,小奇最初在0号星球. 有n处矿体,第i处矿体有ai单位原矿,在第bi个星球上. 由于飞船使用的是老式的跳跃引擎,每次它只能从第x号星球移动到第x+4号星球或x+7号星球.每到一个星球,小奇会采走该星球上所有的原矿,求小奇能采到的最大原矿数量. 注意,小奇不必最终到达m号星球. [输入格式] 第一行2个整数n,m…
subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. cnt s 查询满足 a&s = a 条件的 a 的个数3.2 输入 第一行一个整数 Q 接下来 Q 行,每一行都是 3 个操作中的一个 3.3 输出 对于每个 cnt 操作输出答案3.4 Sample Input 7 add 11 cnt 15 add 4 add 0 cnt 6 del 4 cnt…
LGTB 玩THD LGTB 最近在玩一个类似DOTA 的游戏名叫THD有一天他在守一座塔,对面的N 个小兵排成一列从近到远站在塔前面每个小兵有一定的血量hi,杀死后有一定的金钱gi每一秒,他都可以攻击任意一个活着的小兵,对其造成P 点伤害,如果小兵的血量低于1 点,小兵死亡,他得到金钱.他也可以不攻击任何小兵.每一秒LGTB 攻击完毕之后,塔会攻击距离塔最近的一个活着的小兵,对其造成Q 点伤害,如果小兵的血量低于1 点,小兵死亡,LGTB 不会得到金钱现在LGTB 想知道,在他选择最优策略时,…