CTSC2010】的更多相关文章

[CTSC2010]珠宝商 不错的题目 看似无法做,n<=5e4,8s,根号算法? 暴力一: n^2,+SAM上找匹配点的right集合sz,失配了直接退出 暴力二: O(m) 统计过lca=x的路径, 没法直接合并,就间接合并! 把所有形如(z,x)(x,y)的路径在原串所有出现位置打上标记 原串每个点维护结束路径(zi,x)和开始路径(x,yi)个数(实际上只有char=a[x]的位置才有值),然后乘起来就是贡献 打标记: SAM匹配 麻烦事是:这个是往某个字符串前面加字符,但是要在字符串末…
[CTSC2010]性能优化 循环卷积快速幂 两个注意点:n+1不是2^k*P+1形式,任意模数又太慢?n=2^k1*3^k2*5^k3*7^k4 多路分治!深刻理解FFT运算本质:分治,推式子得到从下往上的迭代公式 最后求的是w_n^i的点值 快速幂: 循环卷积快速幂比较特殊,就是G*F,>=n的项的系数加到-n位置上 所以,由于w(n,p+n)=w(n,p),点值相乘直接得到G*F的点值表达 F,B点值,快速幂相乘即可 不用把n扩充系数等. // luogu-judger-enable-o2…
[BZOJ1921][CTSC2010]珠宝商(点分治,后缀自动机) 题面 洛谷 BZOJ权限题 题解 如果要我们做暴力,显然可以以某个点为根节点,然后把子树\(dfs\)一遍,建出特征串的\(SAM\),就可以直接计算出现次数了.复杂度是\(O(size^2)\) 另外一种暴力是我们枚举以某个点为中心,考虑在其两棵不同子树内各选择一条链,然后拼接在一起计算答案.我们假设选择了\(R\)为中心,然后有一条\((u\rightarrow R)\)的链,有一条\((R\rightarrow v)\)…
P4218 [CTSC2010]珠宝商 神题... 可以想到点分治,细节不写了... (学了个新姿势,sam可以在前面加字符 但是一次点分治只能做到\(O(m)\),考虑\(\sqrt n\)点分治,如果子树大小\(>\sqrt n\)就用\(O(m)\)的点分治做法,否则用蛤希暴力. 然而块大小设为\(20,30\)比\(\sqrt n\)快多了... #include<bits/stdc++.h> #define il inline #define vd void #define f…
「CTSC2010」产品销售 30pts的费用流都会吧... 100pts只要模拟费用流就行了,是不是很简单呀( 咕咕咕 令\(M_i\)表示\(i-1\to i\)的正向边,\(M_i^{'}\)表示反向边 \(C_i\)表示\(i \to i-1\)的正向边,\(C_i^{'}\)表示反向边 依次枚举\(1,\cdots,n\) 当前枚举到\(i\),要使\(i\rightarrow t\)满流 两种决策:\(s \rightarrow j \to j+1 \to \cdots \to i\…
传送门 题目翻译:给定两个 \(n\) 次多项式 \(A,B\) 和一个整数 \(C\),求 \(A\times B^C\) 在模 \(x^n\) 意义下的卷积 显然就是个循环卷积,所以只要代入 \(\omega_n^{k}\) 进去求出点值,然后插值就好了 ???\(n\) 不是 \(2^k\) 的形式,不能直接 \(NTT\) 怎么办呢? 根据题目性质,可以把 \(n\) 拆成 \(2^{a_1}3^{a_2}5^{a_3}7^{a_4}\) 的形式 这启示我们每次不是每次分成两半而是拆分成…
https://www.luogu.org/problemnew/show/P4189 题解 模拟费用流. 首先有一个非常好的条件,每个点的限制次数都大于等于这个点的度数. 然后我们可以从\(0\)开始\(dfs\)一遍这棵树. 然后如果一条边连接的两个点的\(h\)同时\(>0\),那么就来回走. 然后我们考虑再去从\(0\)号节点往每个节点走. 如果此时\(u\)的\(h>0\),那么直接走就可以了. 如果不是这样,那么我们为了从\(u\)走到\(v\),必须将上一次\(uv\)折返的路程…
Description Input 第一行包含两个整数 N,M,表示城市个数及特征项链的长度. 接下来的N-1 行, 每行两个整数 x,y, 表示城市 x 与城市 y 有直接道路相连.城市由1~N进行编号.接下来的一行,包含一个长度为 N,仅包含小写字母的字符串,第 i 位的字符表示在城市 i 流行的原料类型. 最后一行, 包含一个长度为 M, 仅包含小写字母的字符串, 表示特征字符串. Output 仅包含一个整数,为 N2 * Expectation Sample Input 3 5 1 2…
Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 185  Solved: 118 Description 公元3000年,地球联盟已经攻占了银河系内的N个星球,出于资金的考虑,政府仅仅在星球间建立了N-1条双向时空隧道保证任意两个星球之间互相可达.出于管理上的考虑,第i个星球的行政长官要求每个公民在一年内不得从该星球利用时空隧道次数超过Hi次(这一统计是基于离开次数统计的,如果你已经使用从该星球离开过Hi次,那么这一年内你就不能再使用时空隧道离开这…
传送门 这题思路太清奇了……->题解 //minamoto #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define ll long long using namespace std; inline int read(){ #define num ch-'0' ;int res; while(!isdig…
数据结构优化网络流…… 重新定义一下题目的各种条件: 第 $i$ 天能生产 $a_i$ 个物品: 第 $i$ 天有 $b_i$ 个物品的需求: 每存储一天物品(把订单提前一天)需要 $c_i$ 的花费: 每拖延一天订单需要 $d_i$ 的花费: 第 $i$ 天每生产一个物品需要 $e_i$ 的花费. 这种题一般都是建出来图后,发现有特殊性质,然后我们就就可以用一些奇怪的贪心做法来增广流量,而不用写正常的网络流算法了. 而且这道题建图非常有趣,如果合理区分物品量和花费,把物品量当成网络流的流量,花…
珠宝商 题目描述 Louis.PS 是一名精明的珠宝商,他出售的项链构造独特,很大程度上是因为他的制作方法与众不同.每次 Louis.PS 到达某个国家后,他会选择一条路径去遍历该国的城市.在到达一个城市后,他会使用在这个城市流行的材料制作一颗珠子,并按照城市被访问的顺序将珠子串联做成项链,为了使制作出来的项链不会因为城市之间的竞争而影响销量,路径中同一个城市不会重复出现(因为如果项链中 $A$ 城市的材料比 $B$ 城市的材料使用的多,则项链在 $B$ 城市的宣传可能会受到影响).经过多年对消…
题目描述:设$A,B$为$n-1$次多项式,求$A*B^C$在系数模$n+1$,长度为$n$的循环卷积. 数据范围:$n\leq 5*10^5,C\leq 10^9$,且$n$的质因子不超过7,$n+1$为质数. 这就是一个循环卷积,在$n=2^k$的情况下可以直接使用FFT/NTT,但是这里不行. 由于$n$的质因子很小,设$n=2^{k_1}*3^{k_2}*5^{k_3}*7^{k_4}$,我们考虑将$n$分治为$p$份(NTT就是$p=2$的情况,这里$p=2,3,5,7$) $$F(\…
题目链接 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1920 (luogu) https://www.luogu.org/problem/P4217 题解 模拟费用流. 首先可以建出下面这样的图: 对于每一天\(i\)建一个点,另新建源汇\(S,T\). (1) \(S\)向\(i\)连\((D_i,0)\) (表示订单) (2) \(i\)向\(i+1\)连\((+\inf,C_i)\) (拖延订单) (3) \(i+1\)…
题目链接 题意简述 求循环卷积意义下的 \(A(x)*B(x)^C\). 模数为 n+1 ,长度为 n. Sol 板子题. 循环卷积可直接把点值快速幂来解决. 所以问题就是要快速 \(DFT\),由于长度是 n 不一定是NTT模数,我们要解决任意长度的 \(DFT\) 这道题保证了 \(n\) 质因数分解之后的质因子最大不超过 10 . 我们可以模仿朴素 \(FFT\) 对点值分组分别计算然后合并的方法. 每次分成 \(p\) 组然后合并点值即可.根据如下式子: \(F(x)=\sum a_ix…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 简述版题意:给定字符串 S 与一棵树 T,树上每个点有一个字符.求树上所有简单路径对应的字符串在 S 中的出现次数之和. 原题链接. @solution@ 一个显然的暴力:O(N^2) 枚举所有点对的字符串,建后缀自动机跑算出现次数之和. 另一个看起来比较好的算法:点分治. 每次计算经过重心的字符串,可以拆成两部分:某个点到重心的字符串 + 重心到某个点的字符串…
一个比较直接的想法就是对每个点进行拆点,拆成入点和出点,限制放在入点和出点相连的边上,然后跑最大费用最大流即可. 但是这样复杂度无法接受,所以考虑模拟费用流来解决本题. 发现 \(H\) 都大于等于该节点的度数,所以从根节点出发,一定可以到达所有节点. 先考虑以根节点为起点和终点的答案,首先可以遍历整棵树后回到根节点,每条边的两个端点的 \(H\) 都减一,答案加二.然后继续考虑每条边的贡献,若其两个端点在遍历后 \(H\) 不为 \(0\),则可以反复走这条边,直到其中一个端点的 \(H\)…
星际旅行 https://www.luogu.com.cn/problem/P4189 题目:且每个星球的\(H_i\)大于等于与该星球直接相连的星球数(即度数). 想到先从根到所有点都走一遍,然后贪心地考虑u到v的转移. #include <bits/stdc++.h> using namespace std; namespace MAIN { int n, h[50005], ans, ret[50005], son[50005]; vector<int> G[50005];…
网上很少有人提到,写的也很简单,事实上就是很简单... \(Bluestein's\ Algorithm\),用以解决任意长度\(DFT\). 考虑\(DFT\)的形式:\[\begin{aligned}y_k&=\sum_{i=0}^{n-1}a_i\omega_n^{ki}\\&=\sum_{i=0}^{n-1}a_i\omega_{2n}^{k^2+i^2-(k-i)^2}\\&=\omega_{2n}^{k^2}\sum_{i=0}^{n-1}a_i\omega_{2n}^…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
Sam做题记录 Hihocoder 后缀自动机二·重复旋律5 求一个串中本质不同的子串数 显然,答案是 \(\sum len[i]-len[fa[i]]\) Hihocoder 后缀自动机三·重复旋律6 求一个串每个长度出现次数的最大值 求出fail树每个点的size就是该点的出现次数,由于答案是(非严格)单调减的,每个点更新一下 \(ans[len[i]]\) Hihocoder 后缀自动机四·重复旋律7 求几个数字串本质不同的子串所代表的数的和, \(mod\ 10^9+7\) 先建一下广义…
一般生成函数 很普及组,不讲了 生成函数是一种形式幂级数,也就是我们只关心系数,不关心未知数具体的值. 比如 \(\sum\limits_{i\ge 0}x^i=\frac{1}{1-x}\).虽然只有 \(0<x<1\) 时才是成立的,但是我们不管. ??? 4 种东西,红黄蓝绿,都有无限个.现要求选出 \(n\) 个,要求红的偶数个,黄的 \(5\) 的倍数个,蓝的最多四个,绿的最多一个.问方案数. 生成函数瞎推一下,答案的生成函数 \(\frac{1}{(1-x)^2}\). 组合意义理…