0%

传送门

Solution

对于 1ai1061\le a_i \le 10^6,不超过 6 次操作可将一个 aia_i 变为 1122。有 O(nlogn)O(n\log n) 的方法预处理出 11061\sim 10^6 的正约数个数。

阅读全文 »

传送门

Solution

倒序染色使得每个点被染色后,可从序列中删去。使用单向链表,设 nxtinxt_i 为点 ii 在链表中指向的下一个点。设当前染色区间为 [L,R][L,R],点 ii 染色结束后,令 nxti=nxtRnxt_i=nxt_R

阅读全文 »

传送门

Solution

对物品以过期时间(从小到大)为第一关键字,价格(从大到小)为第二关键字进行排序,然后开一个按照物品价值排序的小根堆。

阅读全文 »

传送门

Solution

每个 1010 都是由一对 2255 相乘而得。设 Fi,j,0F_{i,j,0} 为点 (1,1)(1,1)(i,j)(i,j) 路上最少 22 的数量,Fi,j,1F_{i,j,1} 为最少 55 的数量。答案即为 ans=min{Fn,n,0,Fn,n,1}ans=\min\{F_{n,n,0},F_{n,n,1}\}

阅读全文 »

传送门

Solution

观察到 ai106<220a_i\le 10^6 <2^{20},拆位后数组变成 20 条长度为 nn01 串。开二十棵线段树分别维护这些串的区间和。

阅读全文 »

传送门

Solution

设当前待合并的串为 AA,已合并的串为 BB。若 AB|A|\ge |B|,则 C=A+BC=A+B。否则 CC 等于 AABB 长度为 A|A| 的后缀拼接而成的字符串。对 CC 进行 KMP,求出最大相同前后缀长度 nxtCnxt_{|C|}。把 AA 的相应长度后缀并入 BB 后面即可。

阅读全文 »

传送门

Solution

设第 ii 个序列最小没出现的非负整数为 viv_i,次小没出现的非负整数为 uiu_i。从 uiu_iviv_i 连有向边。由于 ui>viu_i>v_i,最后得到的是一张有向无环图,且每个点之间不一定连通。

阅读全文 »

传送门

Solution

注意数据范围。用桶记录某数是否在数组内出现。从 10610^6 枚举 xx11,检查是否能生成 xx。若所有在数组内的 xx 的倍数的最大公约数等于 xx,则可生成 xx

设数组内最大的数为 NN,时间复杂度 O(NlogN)O(N\log N)

阅读全文 »

传送门

Solution

若设 FaF_a 为选择付款的商品的 tit_i 之和为 aa 时,支付的最小金额,kk 为这些商品的数量。那么只有 anka\ge n-k 时,FaF_a 才为一种合法的答案。

阅读全文 »