
【算法】数学
文章平均质量分 83
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3027】【CEOI2004】Sweet
【题目链接】点击打开链接【思路要点】我们显然可以得到一个直接的DP做法,记\(F_{i,j}\)表示在前\(i\)个集合中取\(j\)个元素的方案数,则显然有$$ \left\{\begin{aligned}F_{0,0} = 1\\F_{i,j}=\sum_{k=max(0,j-M_{i})}^{j}F_{i-1,k}\end{aligned}\right.$$运用滚动数组,对转移稍加优化,可以原创 2018-01-17 20:15:36 · 497 阅读 · 0 评论 -
【BZOJ1211】【HNOI2004】树的计数
【题目链接】点击打开链接【思路要点】双倍经验题,本题是【BZOJ1005】【HNOI2008】明明的烦恼的简化版,笔者本题的代码由原题代码重构而得。题解见【BZOJ1005】【HNOI2008】明明的烦恼。【代码】#includeusing namespace std;#define MAXL 4005#define MAX原创 2018-02-05 13:08:41 · 359 阅读 · 0 评论 -
【BZOJ1005】【HNOI2008】明明的烦恼
【题目链接】点击打开链接【双倍经验链接】【BZOJ1211】【HNOI2004】树的计数【思路要点】考虑树的Prufer序列。树的Prufer是一个长度为\(N-2\)的序列,其中每一个元素为一个\(1\)到\(N\)的整数。每一个这样的序列对应了一棵确定的\(N\)个节点的树,并且每一棵\(N\)个节点的树对应了一个这样原创 2018-02-04 19:42:52 · 361 阅读 · 0 评论 -
【BZOJ1008】【HNOI2008】越狱
【题目链接】点击打开链接【思路要点】考虑计算总状态数和不越狱的状态数,相减得到答案。显然,总状态数为\(M^{N}\),不越狱的状态数为\(M*(M-1)^{N-1}\)。快速幂计算即可。【代码】#includeusing namespace std;#define MAXN 5005#define P 100003tem原创 2018-02-05 13:23:01 · 191 阅读 · 0 评论 -
【BZOJ1430】小猴打架
【题目链接】点击打开链接【思路要点】显然,问题是求不同的树的形态乘以\((N-1)!\)。由Prufer序列,显然不同的树的形态有\(N^{N-2}\)种,故答案为\((N-1)!*N^{N-2}\)。时间复杂度\(O(N)\)。【代码】#includeusing namespace std;#define MAXN 5005原创 2018-02-05 13:31:33 · 436 阅读 · 0 评论 -
【BZOJ4766】文艺计算姬
【题目链接】点击打开链接【思路要点】写一个运用Matrix-Tree定理在取模一个大质数下解决本题的程序,通过打表找到规律:$$Ans=N^{M-1}M^{N-1}$$由于模数可能很大,具体实现时需要将乘法替换为快速加。时间复杂度\(O(Log^{2}_{N})\)。可以用Matrix-Tree定理用\(N\)和\(M\)来表示拉普拉斯矩阵(除去一行原创 2018-02-06 10:28:38 · 367 阅读 · 0 评论 -
【BZOJ3811】【UOJ36】【清华集训2014】玛里苟斯
【题目链接】BZOJUOJ【思路要点】首先,数集\(\{A,B\}\)等价于数集\(\{A,A\ Xor\ B\}\),且数集\(\{A,0\}\)等价于\(\{A\}\)。因此,我们可以先构建原数集的线性基,并删去多余的0。令\(M\)为线性基的元素个数,则\(M\)是\(O(LogMax\{a_i\})\)级别的。注意到题目保证答案小于等于\(2^{63}\),那么\(Max\{a_i\}\)...原创 2018-02-26 16:17:04 · 488 阅读 · 0 评论 -
【CodeForces】CodeForces Round #461 (Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Cloning Toys【思路要点】对于\(y=0\)或\(y=1\)的情况特殊考虑。其余情况满足\(x+y\)为奇数,且\(x+1≥y\)时答案为Yes,否则答案为No。时间复杂度\(O(1)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5...原创 2018-02-12 10:33:21 · 412 阅读 · 0 评论 -
【CodeForces】CodeForces Round #462 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】A Compatible Pair【思路要点】模拟过程,枚举玩家一删除的元素,并计算玩家二的最优策略,取最小值。时间复杂度\(O(N^{2}M)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;template...原创 2018-02-16 20:43:07 · 433 阅读 · 0 评论 -
【CodeForces】CodeForces Round #463 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Palindromic Supersequence【思路要点】将字符串正反各打印一遍。时间复杂度\(O(|A|)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;template <typename T> void rea...原创 2018-02-22 10:46:55 · 617 阅读 · 0 评论 -
【CodeForces】Educational Codeforces Round 37 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Water The Garden【思路要点】按照题意模拟,或者简单计算一下均可。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;template <typename T> void read(T &...原创 2018-02-12 21:08:20 · 470 阅读 · 0 评论 -
【BZOJ3813】【UOJ38】【清华集训2014】奇数国
【题目链接】BZOJUOJ【思路要点】首先,有一个直观的做法是对每一个质因子维护一棵树状数组,记录区间中该质因子指数的和。询问时先将\(product\)质因数分解的结果求出来,再用快速幂计算欧拉函数。时间复杂度是\(O(60NLogN)\),可以在UOJ上通过,但在BZOJ上会超时。进一步考虑,由于19961993是质数,我们可以方便地计算各个质因数的乘法逆元。所以我们用一颗线段树维护区间取模乘...原创 2018-02-27 09:55:19 · 393 阅读 · 0 评论 -
【CodeForces】CodeForces Round #460 (Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Supermarket【思路要点】选取单价最低的店进行购买。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;template <typename T> void read(T &x) { ...原创 2018-02-13 16:20:14 · 498 阅读 · 0 评论 -
【BZOJ3309】DZY Loves Math
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 10000005int tot, prime[MAXN], f[MAXN], miu[MAXN], cnt[MAXN];int g[MAXN], sum[MAXN];bool mark[MAXN];in...原创 2018-03-08 13:00:25 · 275 阅读 · 0 评论 -
【BZOJ1426】收集邮票
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 10005double f[MAXN], g[MAXN];int main() { int n; scanf("%d", &n); double m = n; for (int i = 1;...原创 2018-03-15 13:28:52 · 371 阅读 · 0 评论 -
【BZOJ3450】【TYVJ1952】Easy
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 300005char s[MAXN];long double f[MAXN], g[MAXN];int main() { int n; scanf("%d", &n); scanf("\n%...原创 2018-03-15 15:26:46 · 252 阅读 · 0 评论 -
【BZOJ3992】【SDOI2015】序列统计
【题目链接】点击打开链接【思路要点】先求出\(M\)的原根,然后我们就可以把乘法转化为加法。然后NTT快速幂求出数集的\(N\)次方就行了,注意虽然多项式的次数界会不断上升,但由欧拉定理,我们可以将次数界重新降低至\(M\),相当于每乘一次,做一次取模。时间复杂度\(O(MLogNLogM)\)。【代码】#include<bits/stdc++.h>using namespace s...原创 2018-03-01 15:40:43 · 243 阅读 · 0 评论 -
【BZOJ2318】【SPOJ4060】Game with Probability Problem
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5005#define DONE 1000double f[MAXN], g[MAXN];int main() { int T; scanf("%d", &T); while (T--) {...原创 2018-03-15 17:37:14 · 208 阅读 · 0 评论 -
【BZOJ3143】【HNOI2013】游走
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 505#define MAXM 250005#define EPS 1e-7int n, m, d[MAXN], u[MAXM], v[MAXM];double a[MAXN][MAXN], x[MAX...原创 2018-03-15 19:42:05 · 310 阅读 · 0 评论 -
【BZOJ3270】博物馆
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 25#define MAXP 405#define EPS 1e-7bool mp[MAXN][MAXN];double p[MAXN], a[MAXP][MAXP], x[MAXP];int d[M...原创 2018-03-16 09:17:38 · 473 阅读 · 0 评论 -
【BZOJ3036】绿豆蛙的归宿
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005struct edge {int dest, len; };vector <edge> a[MAXN];int n, m, d[MAXN], o[MAXN], q[MAXN], t...原创 2018-03-16 10:07:11 · 704 阅读 · 0 评论 -
【BZOJ4008】【HNOI2015】亚瑟王
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 255#define MAXM 255double p[MAXN], d[MAXN];double f[MAXN][MAXM], q[MAXN][MAXM];int main() { int T; ...原创 2018-03-16 10:41:04 · 365 阅读 · 0 评论 -
【BZOJ2440】【中山市选2011】完全平方数
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005int tot, prime[MAXN], f[MAXN], miu[MAXN];void init() { for (int i = 2; i < MAXN; i++) { if ...原创 2018-03-10 11:26:23 · 207 阅读 · 0 评论 -
【BZOJ1101】【POI2007】Zap
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005int tot, prime[MAXN], f[MAXN], miu[MAXN], sum[MAXN];void init() { for (int i = 2; i < MAXN; i...原创 2018-03-12 13:13:42 · 227 阅读 · 0 评论 -
【BZOJ2301】【HAOI2011】Problem b
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005int tot, prime[MAXN], f[MAXN], miu[MAXN], sum[MAXN];void init() { for (int i = 2; i < MAXN; i...原创 2018-03-12 19:31:16 · 175 阅读 · 0 评论 -
【CodeForces】CodeForces Round #467 (Div. 1 + Div. 2) 题解
【比赛链接】Div.1Div.2【题解链接】点击打开链接【Div.2 A】Olympiad【思路要点】答案为原数集中除去所有0以外数的种类数,哈希计数即可。时间复杂度\(O(N+Max\{a_i\})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;template <typena...原创 2018-03-05 20:29:18 · 376 阅读 · 0 评论 -
【BZOJ2820】YY的GCD
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 10000005int tot, prime[MAXN], f[MAXN], cnt[MAXN], type[MAXN];long long sum[MAXN];void init() { for (i...原创 2018-03-13 11:04:17 · 240 阅读 · 0 评论 -
【BZOJ4869】【SHOI2017】相逢是问候
【题目链接】点击打开链接【思路要点】欧拉拓展定理:\(a^{\phi(n)}\equiv a^{2\phi(n)}(Mod\ n)\)。而\(\phi(\phi(n))<\frac{n}{2}\)(\(\phi(奇数)=偶数\),\(\phi(偶数)≤\frac{偶数}{2}\)),所以至多有\(O(LogP)\)个不同的模数,模数就会变成1,所以经过\(O(LogP)\)次修改后,被操作数...原创 2018-03-22 20:14:13 · 519 阅读 · 0 评论 -
【USACO】2018 February Contest, Platinum题解
【比赛经历】看完T1先写了一个\(O(NM)\)的暴力,交一发,得分5/10,说明正确地理解了题意。感觉T1码量挺大的,于是先放了一下。T2是傻题,看完10min写掉了,得分10/10。回过头来把T1的线段树码了,一遍写对,不用痛苦地调这个鬼题,提交,得分10/10,跑了1.8s,果然STL不能乱用,差点T了。时间一共过了1.5h-。再看T3,先写了个暴力,找了找规律(还试了试OEIS),然后发现...原创 2018-03-06 10:58:06 · 833 阅读 · 0 评论 -
【BZOJ3884】上帝与集合的正确用法
【题目链接】点击打开链接【思路要点】欧拉拓展定理:\(a^{\phi(n)}\equiv a^{2\phi(n)}(Mod\ n)\)。而\(\phi(\phi(n))<\frac{n}{2}\)(\(\phi(奇数)=偶数\),\(\phi(偶数)≤\frac{偶数}{2}\)),所以至多有\(O(LogP)\)个不同的模数,模数就会变成1,然后直接用欧拉定理计算即可。时间复杂度\(O(T...原创 2018-03-22 20:28:53 · 198 阅读 · 0 评论 -
【BZOJ3529】【SDOI2014】数表
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXQ 20005#define MAXN 100005struct query {int n, m, a, home; };struct info {long long value; int home; };...原创 2018-03-13 12:41:09 · 226 阅读 · 0 评论 -
【BZOJ4870】【SHOI2017】组合数问题
【题目链接】点击打开链接【思路要点】原问题可等价于在\(Nk\)个物品中选出\(pk+r(p\in Z)\)个的方案数。矩阵乘法即可,时间复杂度\(O(k^3LogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXLOG = 63;const int MAXN = 55;template <t...原创 2018-03-23 15:12:19 · 347 阅读 · 0 评论 -
【CodeForces906D】Power Tower
【题目链接】点击打开链接【思路要点】欧拉拓展定理:\(a^{\phi(n)}\equiv a^{2\phi(n)}(Mod\ n)\)。而\(\phi(\phi(n))<\frac{n}{2}\)(\(\phi(奇数)=偶数\),\(\phi(偶数)≤\frac{偶数}{2}\)),所以至多有\(O(LogP)\)个不同的模数,模数就会变成1。所以,对于每个询问,只有前\(O(LogP)\)...原创 2018-03-23 15:51:03 · 532 阅读 · 2 评论 -
【BZOJ4872】【SHOI2017】分手是祝愿
【题目链接】点击打开链接【思路要点】几点显然的性质:1、最少的操作次数为从大向小一次操作亮着的灯泡共用的次数。2、上述的操作的灯泡集合是唯一的,并且操作顺序不影响结果。3、操作集合外的灯泡后,一定要再操作一次,将其复原。由此,我们首先求出最小操作次数\(cnt\),令\(f_i\)为操作集合中有\(i\)个灯泡,期望的操作次数。则有\(\begin{equation} \left\{ ...原创 2018-03-24 11:50:09 · 642 阅读 · 0 评论 -
【BZOJ1419】Red is good
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5005double f[2][MAXN];int n, m;int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n...原创 2018-03-20 15:44:51 · 290 阅读 · 0 评论 -
【BZOJ3566】【SHOI2014】概率充电器
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 500005#define EPS 1e-12struct edge {int dest; double p; };vector <edge> a[MAXN];unsigned father...原创 2018-03-21 19:35:49 · 245 阅读 · 0 评论 -
【BZOJ3930】【CQOI2015】选数
【题目链接】点击打开链接【思路要点】显然问题可以转化为\(K=1\)的形式。那么,我们实际上要求\(\sum_{i_1,i_2,...,i_N=L}^{R}\epsilon(gcd(i_1,i_2,...,i_N))\)。\(=\sum_{i_1,i_2,...,i_N=L}^{R}\sum_{d/i_1,i_2,...,i_N}\mu(d)\)\(=\sum_{d=1}^{R}\mu(d)(\l...原创 2018-04-01 20:11:56 · 287 阅读 · 0 评论 -
【BZOJ4916】神犇和蒟蒻
【题目链接】点击打开链接【思路要点】第一问答案恒为1。考虑第二问,\(S(N)=\sum_{i=1}^{N}\varphi(i^2)=\sum_{i=1}^{N}i*\varphi(i)\)。注意到\(i^2=\sum_{d/i}d*\varphi( \frac{i}{d} )\)。那么\(\sum_{i=1}^{N}i^2=\sum_{i=1}^{N}\sum_{d/i}d*\varphi( \...原创 2018-04-02 15:04:51 · 349 阅读 · 0 评论 -
【BZOJ4652】【UOJ221】【NOI2016】循环之美
【题目链接】BZOJUOJ【思路要点】通过在十进制下找规律,我们发现分数\(\frac{x}{y}\)在\(k\)进制下为纯循环小数当且仅当\(gcd(y,k)=1\)。稍加分析,我们发现上面这一点并不难证明。那么,原题要求的式子应当是\(\sum_{i=1}^{N}\sum_{j=1}^{M}\epsilon(gcd(i,j))*\epsilon(gcd(j,k))\)。\(=\sum_{i=1...原创 2018-04-03 14:29:54 · 607 阅读 · 0 评论 -
【BZOJ4487】【JSOI2015】染色问题
【题目链接】点击打开链接【思路要点】可以看做一共有\(N+M+C\)条限制条件。由容斥原理,答案为\(\sum_{i=1}^{N}\sum_{j=1}^{M}\sum_{k=0}^{C}(-1)^{N+M+C-i-j-k}*(k+1)^{i*j}*\binom{N}{i}*\binom{M}{j}*\binom{C}{k}\)。预处理乘幂,时间复杂度\(O(N*M*C)\)。【代码】#includ...原创 2018-04-18 19:42:32 · 611 阅读 · 0 评论