福建省队集训 20180707
以下是流水账
collection
只有这个是题解
考虑最大流,物品作为流量在不同的人之间流动。那么一个物品一定是经过一系列时间递增的边到1号的手中。交换的建图很容易想到
统计答案:
- 先让1号留一个自己的(很显然),并且不考虑1给其他人自己的,其他的人只考虑第一个在什么时候流到1,初始流量为1。
- 要交换到1的边不直接连到1的下一层,因为再拿这个去交换其他的不如直接拿1自己的去换,直接连到T
- 注意1最多只有a1个,再由T向TT连流量为a1-1的边。
- 注意同一时间只能有ai个在i点。
- 交换不对称的情况当成是没统计的那些点在换。
“大”样例一遍过了 这大概就是学OI的快乐吧
count
不会...
根号分治可以迫真n根号k O(n+k),因为对于<根号k的本质不同的转移只有根号个,然后相同的归一下类
正解:
(f(i, j)) 表示之后选的乘积不超过 (i,) 只考虑小等于j的数的方案数 若j (leq sqrt{i},) 暴力转移到(fleft(left|frac{i}{j}
ight|, j-1
ight), quad fleft(left|frac{i}{j^{2}}
ight|, j-1
ight)) 等
若(j>sqrt{i}),由于$j>frac{i}{j}, fleft(leftlfloorfrac{i}{j}
ight
floor, j-1
ight) $ 相当于 $ fleft(leftlfloorfrac{i}{j}
ight
floor,leftlfloorfrac{i}{j}
ight
floor
ight)
$
分每种| $leftlfloorfrac{i}{j}
ight
floor $考虑(只有 (O(sqrt{i})) 种),每个这样的j会让方案数加上 $ fleft( leftlfloorfrac{i}{j}
ight
floor,leftlfloorfrac{i}{j}
ight
floor
ight)$ 用前缀和可以算出有多少个这样的j 暴力转移时可能要计算一个f(i,j)的值,动态算就可以了
(i) 只要考虑 (leftlfloorfrac{k}{x}
ight
floor) 的各种情况即可,类似洲阁师,这个做法的时间复杂度为(O(n+k^{frac 3 4}))
NPIO十合一
提答题,感觉很妙。
题解里有以下操作:
- char存1e9数组卡内存
- 分段桶排/快排
- 拆数字+拆数组NTT
- n个char+(n/256)个int存size
- 提答题の暴力+期望复杂度
- bitset随便A
- 暴力猜+simulator验证
玄学的东西