[口胡尚未写] [构造] [造计算机题] AT_agc047_e [AGC047E] Product Simulation

posted on 2025-02-24 12:29:32 | under | source

题意:有一个数组 \(a_1\dots a_n\),除 \(a_1,a_2\) 外都是 \(0\),需要令 \(a_3=a_1\times a_2\)。两种操作 \(a_k\gets a_i+a_j\)\(a_k\gets [a_i<a_j]\)。输出方案,要求次数 \(\le m\)\(n,m\le 2\times 10^5\)\(0\le a_1,a_2\le 10^9\)

简单的造计算机题。

容易想到二进制分解 \(y\)。先预处理 \(2^i x\)\(2^i\)。怎么得到 \(1\) 呢?只需用操作二比较一下 \(x\)\(0\) 即可,假如 \(x,y=0\) 无所谓反正答案是 \(0\)

从高位枚举,维护 \(s\) 表示凑出的 \(y\)。对于 \(i\),令 \(s_2=s+2^i\),那么再让 \(ans\gets ans+[s_2\le y]\times 2^ix\)\(s\gets s+[s_2\le y]\times 2^i\) 即可。

转化为处理 \(a\in [0,1]\)\(a\times b\),类似的方式,问题变为处理 \(a\in [0,1],b=2^k\)\(a\times b\),这个是好处理的,只需以 \(a\) 为起始元素倍增出答案即可。

次数 \(O(\log^2 V)\)

posted @ 2026-01-12 20:16  Zwi  阅读(2)  评论(0)    收藏  举报