【算法】FWT
文章平均质量分 86
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ4589】Hard Nim
【题目链接】点击打开链接【思路要点】异或FWT模板题。时间复杂度\(O(TM(LogN+LogM))\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 70005;const int P = 1e9 + 7;const long long inv = (P + 1) / 2;template &...原创 2018-03-07 12:33:52 · 289 阅读 · 0 评论 -
【2019 江苏省队集训】Day1 解题报告
【T1】 光影交错【思路要点】NNN 轮后仪式仍然进行的概率为 (1−p)N(1-p)^N(1−p)N ,当 p=10−5p=10^{-5}p=10−5 时,取 N>107N>10^7N>107 可以保证该概率在 10−2010^{-20}10−20 以内,因此忽略这部分情况不会导致精度要求不能接受的误差产生。记 f(i)f(i)f(i) 表示出现 ii...原创 2019-07-02 14:13:33 · 1376 阅读 · 1 评论 -
【AtCoder】AtCoder Grand Contest 034 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Kenken Race【思路要点】首先, AAA 到 CCC 中与 BBB 到 DDD 中不能存在连续的两个障碍物。其次,若 D<CD<CD<C ,需要额外满足 BBB 到 DDD 中存在至少一个空位两侧均为空位。时间复杂度 O(N)O(N)O(N) 。【代码】#...原创 2019-06-03 09:43:54 · 754 阅读 · 0 评论 -
【LOJ3073】「2019 集训队互测 Day 2」序列
【题目链接】点击打开链接【思路要点】不妨令 MMM 为 222 的次幂。可以发现题目中的初始序列满足:序列的前一半或后一半完全相同,序列的另一半递归地满足该性质。并且,两个满足该性质的序列卷积后同样满足该性质。因此,可以用 O(LogM)O(LogM)O(LogM) 个数描述序列,并在 O(LogM)O(LogM)O(LogM) 的时间复杂度内完成卷积。时间复杂度 O(N...原创 2019-05-02 16:49:11 · 780 阅读 · 0 评论 -
【校内训练2019-01-18】子序列
【思路要点】考虑删去最少的数使得异或和为 000 ,显然,我们不会删去两个相同的数,可以用最短路求解,记 distidist_idisti 表示使删除的数异或和为 iii 的最少步数。注意到 disti=O(LogA)dist_i=O(LogA)disti=O(LogA) ,可以用 FWTFWTFWT 优化转移。时间复杂度 O(ALog2A)O(ALog^2A)O(ALog2A) 。...原创 2019-01-18 13:06:32 · 208 阅读 · 0 评论 -
【CodeForces】Mail.Ru Cup 2018 Round 1 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Elevator or Stairs?【思路要点】按照题意计算两种方式的用时,取较优的方案采纳。时间复杂度 O(1)O(1)O(1) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5...原创 2018-10-21 14:28:31 · 811 阅读 · 1 评论 -
【CodeChef】September Challenge 2018 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接**【ANDSQR】**AND Square Subsegments【思路要点】离线询问,按左端点排序。枚举区间的左端点 lll ,区间 [l,i][l,i][l,i] 的 andandand 和至多变化 O(LogV)O(LogV)O(LogV) 次,二分找到分界点,并找到其中是完全平方数的。每一段 andandand 和相同的区间 [l,i][l...原创 2018-10-06 16:04:18 · 318 阅读 · 0 评论 -
【CodeForces】CodeForces Round #511 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Enlarge GCD【思路要点】令所有数的 gcdgcdgcd 为 ggg ,将所有数除去 ggg ,问题变为了所有数的 gcdgcdgcd 为 111 的情况。我们要选出一个最大的数集,使得这个数集中的数存在不为 111 的公因数。显然我们只需要考虑所有质数即可,线性筛求出每个数的最小质因子,质因...原创 2018-09-25 11:22:38 · 374 阅读 · 0 评论 -
【CodeForces914G】Sum the Fibonacci
【题目链接】点击打开链接【思路要点】比较基本的子集卷积,子集异或卷积和子集与卷积。时间复杂度\(O(X^2*2^X)\),其中\(X=17\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 20;const int MAXS = 2 << 17;const int P = 1e9 + ...原创 2018-06-07 19:55:10 · 386 阅读 · 0 评论 -
【BZOJ5153】【UOJ348】【WC2018】州区划分
【题目链接】BZOJUOJ【思路要点】定义\(sum_S\)表示集合\(S\)包含的城市人口总数的\(p\)次方。定义\(g_S\),当\(S\)是一个合法的州区,\(g_S=sum_S\),否则\(g_S=0\)。定义\(f_S\)表示\(S\)所有可行的州区划分的方案的满意度之和。那么\(f_S=\sum_{T\subseteq S,T\ne\emptyset}\frac{g_T*f_{S-T...原创 2018-06-06 18:45:26 · 497 阅读 · 0 评论 -
【CodeForces662C】Binary Table
【题目链接】点击打开链接【思路要点】行的取反情况与每一列的初始元素可以看做若干个小于\(2^{N}\)的二进制数。注意到行很小,我们考虑先枚举每一行是否取反,令行的取反情况为\(Mask\)。那么,每列的二进制数\(x_i\)应当变成\(x_i\ xor\ Mask\)。令\(bits_i\)代表\(i\)的二进制表示1的个数,\(Mask\)的最小答案应当为\(\sum_{i=1}^{M}min...原创 2018-03-07 15:22:41 · 445 阅读 · 0 评论 -
【BZOJ5205】【LOJ6301】「CodePlus 2018 3 月赛」白金元首与莫斯科
【题目链接】点击打开链接【思路要点】考虑从前向后、从后向前各做一次状压DP,在询问时合并信息。注意到问题等价于用\(1*2\)和\(1*1\)的棋子填满棋盘,我们可以把\(1*1\)的棋子一并在状压DP时考虑进去。合并答案时只需要枚举\(2^N\)个状态,将满足条件的DP值相乘,累加入答案即可。举例来说,在下图中,合法的状态应当满足在标号为4处已经填上棋子,在标号和为3的绿色和蓝色方格,是否填上棋...原创 2018-03-07 12:36:22 · 738 阅读 · 0 评论 -
【省内训练2019-06-28】Swords
【思路要点】补集转化,对于每个询问 SSS ,考虑求不能满足条件的方案数 query(S)query(S)query(S) 。记 cntS=∑i=1N[ai∪S=∅]cnt_S=\sum_{i=1}^{N}[a_i\cup S=\empty]cntS=∑i=1N[ai∪S=∅] ,即不能满足 sss 中任何一个条件的 aia_iai 的个数。则由容斥原理,有 query(S)=∑...原创 2019-06-28 19:03:51 · 476 阅读 · 0 评论