标签:future 灵活 水晶头 jpg 范围 变化 一个 协同 连接
AGC047A Integer Product
给定 \(n\) 个浮点数 \(a_i\) ,问有多少组数对 \((i,\ j)\) 满足 \(a_i\cdot a_j\) 是整数
- \(n\leq2\times10^5\)
- \(a_i\) 小数点后只有不超过 \(9\) 位数
\(a_i\) 的小数点前部分可以丢掉,将小数点后部分看成 \(\frac k{2^a\times5^b}\) 的形式,其中 \(k\) 是整数, \(a,\ b\) 要尽量小
然后即求满足 \(a_i+a_j\ge0,\ b_i+b_j\ge0\) 的数对个数,值域很小暴力即可
AGC047B First Second
给定 \(n\) 个串 \(S_i\) ,定义对串 \(T\) 的一次变换为删掉 \(T\) 的第一个或第二个字符,问有多少个二元组 \((i,\ j)\) 满足能够通过对 \(S_i\) 进行若干次变换使得其等于 \(S_j\)
- \(n\leq2\times10^5\)
- \(\displaystyle\sum|S_i|\leq10^6\)
\(S_i\) 能够进行若干次变换使得其等于 \(S_j\) ,当且仅当 \(S_j\) 是 \(S_i\) 的后缀,或 \(S_j\) 去掉第一个字符后是 \(S_i\) 的后缀、且 \(S_j\) 的第一个字符在 \(S_i\) 的前 \(|S_i|-|S_j|+1\) 个字符中出现过
把所有串倒着插入 trie 中搞一搞即可
AGC047C Product Modulo
我没有多项式基础
留坑待填
AGC047D Twin Binary Trees
有两棵点数同为 \(n\) 的满二叉树,第一棵树的第 \(i\) 个叶节点向第二棵树的第 \(A_i\) 个节点连了一条特殊边
在所有边构成的图上,一个环是合法的,当且仅当它是简单环,并且恰好经过两条特殊边
定义一个合法环的权值为它所经过的所有点的编号的乘积
求所有简单环的权值之和 \(\bmod10^9+7\)
\(n<2^{18}\)
做法一:
枚举特殊边 \((u,\ v)\) ,设环经过的另一个特殊边为 \((u_0,\ v_0)\) ,其中 \(u,\ u_0\) 在第一棵树上, \(v,\ v_0\) 在另一棵
接着枚举 \((u,\ u_0)\) 和 \((v,\ v_0)\)它们在各自树中的 lca
大概套个二维数点就得到了一个时间 \(O(n\log^3 n)\) 的优秀做法
大概搞一个线段树合并就可以优化到 \(O(n\log^2 n)\)
做法二:
枚举 \((u,\ u_0)\) 的 lca \(w\)
枚举 \(w\) 左子树中的所有叶子节点 \(i\) ,其中 \(i\) 在另一棵树上的对应点为 \(j\) ,将 \(j\) 的所有祖先 \(p\) 累加 \(i\) 到 \(p\) 的最短路径上的节点的乘积
枚举 \(w\) 右子树中的所有叶子节点 \(i\) ,其中 \(i\) 在另一棵树上的对应点为 \(j\) ,枚举 \(j\) 的所有祖先 \(p\) ,用 \(i\) 到 \(p\) 的最短路径与 \(p\) 的兄弟的信息统计对答案造成的贡献
大概就做到了时间 \(O(n\log^2n)\) ,空间线性
AGC047E Product Simulation
有一个序列 \(a_0,\ a_1,\ \cdots,\ a_n\) ,初始时 \(a_0=A,\ a_1=B;\ a_2=a_3=\cdots=a_n=0\)
你可以执行至多 \(q\) 次操作,每次操作有两种:
- \(+\ i\ j\ k\) :令 \(a_k=a_i+a_j\)
- \(<\ i\ j\ k\) :令 \(a_k=[a_i<a_j]\)
你需要构造一种操作序列使得,无论 \(A,\ B\) 是任何非负整数,执行完所有操作后 \(a_2=A\cdot B\)
- \(n,\ q=2\times10^5\)
- \(A,\ B\in[0,\ 10^9]\)
假设 \(A,\ B\) 中至少有一个非零
则通过 \(A<A+A+B+B\) 就能构造出元素 \(1\)
通过 \(1\) 自加就能得到所有 \(2\) 的幂次
考虑将 \(A,\ B\) 表示为二进制数
按 \(bit\) 降序考虑,考虑等式 \(f_{bit}=[cur+2^{bit}<A+1]\) ,若 \(f_i=1\) 就将 \(cur\) 加上 \(2^{bit}\) ,即可求出 \(A\) 的所有二进制位;同理可求得 \(B\) 二进制下每一位 \(g_{bit}\)
现在即求 \(\displaystyle\sum_{i,\ j}f_ig_j2^{i+j}\)
枚举 \(i,\ j\) , \(2^{i+j}\) 部分已经预处理了,现在只用处理两个 \(01\) 变量 \(x,\ y\) 的与操作,实际上就是 \(1<x+y\)
总操作数 \(O(\log^2A)\)
可以发现 \(A=B=0\) 时不用特判
AGC047F Rooks
留坑待填
标签:future 灵活 水晶头 jpg 范围 变化 一个 协同 连接
原文地址:https://www.cnblogs.com/fctel/p/13469505.html