自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

EM LGH

It's Time to Make History

  • 博客(63)
  • 收藏
  • 关注

原创 bzoj 1415: [Noi2005]聪聪和可可 期望dp+记忆化搜索

期望dp水题~你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环)然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数.用记忆化搜索转移就行了.code:#include <queue> #include <cstdio> #include <vector> ...

2019-10-31 20:44:00 95

原创 bzoj 4872: [Shoi2017]分手是祝愿 期望dp

code:#include <bits/stdc++.h> #define N 100005 #define mod 100003 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace st...

2019-10-31 19:31:00 105

原创 CF280C Game on Tree 概率与期望

利用期望的线性性,即 $E(a+b)=E(a)+E(b)$.对于所有点分别求一下期望然后累加即可.code:#include <bits/stdc++.h> #define N 100006 using namespace std; void setIO(string s) { string in=s+".i...

2019-10-31 15:50:00 81

原创 bzoj 3420: Poi2013 Triumphal arch 树形dp+二分

code:#include <bits/stdc++.h> #define N 300005 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int n,edges,k; int hd[N],to[N<<1],nex[N<...

2019-10-31 00:24:00 112

原创 bzoj 2111: [ZJOI2010]Perm 排列计数 Lucas

code:#include <bits/stdc++.h> #define N 2000004 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; LL mod; LL fac[N],in...

2019-10-30 23:28:00 85 1

原创 bzoj 3709: [PA2014]Bohater 贪心

code:#include <bits/stdc++.h> #define N 100005 #define LL long long using namespace std; void setIO(string s) { string in=s+".in"; freopen(in.c_str(),"r",stdin); ...

2019-10-30 23:27:00 89

原创 bzoj 1396/2865: 识别子串 后缀自动机+线段树

水水的字符串题 ~#include <map> #include <cstdio> #include <cstring> #include <algorithm> #define M 500003 #define N 1000003 #define lson now&lt...

2019-10-30 17:19:00 130

原创 bzoj 4922: [Lydsy1706月赛]Karp-de-Chant Number 贪心+dp

code:#include <bits/stdc++.h> #define N 310 using namespace std; void setIO(string s) { string in=s+".in"; string out=s+".out"; freopen(in.c_str(),"r"...

2019-10-30 15:18:00 98

原创 bzoj 1110: [POI2007]砝码Odw 贪心

第一次见到这个模型. 首先,不难得出砝码的种类不会超过 $log(10^9)$ 个,然后就不会分析了qaq...那么,就说明一共只有 $30$ 多个本质不同的砝码.考虑对每个背包进行状态的压缩:写成若干个砝码大小乘积的形式.即 $v[i]=w[i]*a+w[i+1]*b+....$ 然后,将所有背包的系数加和 (有点类似于不进位的进制)因为呢,你发...

2019-10-29 22:18:00 98

原创 bzoj 3721: PA2014 Final Bazarek 贪心

如果没有限制,直接取前 $k$ 大即可.有限制,则只有几种可能:奇换偶,偶换奇.维护奇数偶数的前缀最小值和后缀最大值即可.code:#include <bits/stdc++.h> #define N 1000005 #define LL long long #define inf 2000000000using namesp...

2019-10-29 19:39:00 94

原创 bzoj 2563: 阿狸和桃子的游戏 贪心

这个真的好巧妙啊~如果只考虑点权的话显然直接按照权值大小排序即可.但是加入了边权,就有了一个决策的问题.于是,我们将边权分一半,分给两个端点. 如果一个人拿了两个端点,则边权都会加上.否则,边权会抵消. 直接按照点权+一半边权排序即可. code:#include <bits/stdc++.h> #define...

2019-10-29 18:44:00 96

原创 bzoj 3999: [TJOI2015]旅游 LCT

没啥难的,inf 的值设小了调了半天~code:#include <bits/stdc++.h> #define N 50003 #define lson t[x].ch[0] #define rson t[x].ch[1] using namespace std; namespace IO { void ...

2019-10-29 18:23:00 107

原创 bzoj 4240: 有趣的家庭菜园 树状数组+贪心

有一个小性质:就是一个下标排列的最小移动次数就是逆序对数.我们发现最终形态一定是一个波峰.那么我们求的就是形成波峰的下标最少逆序对数.考虑将元素从小到大依次插入.那么,对于第 $i$ 个元素,一定是放到左面或右面(就是从 1....left 或 right....n) 中的left和right.那么,考虑一个元素新放进去会对后面元素产生的逆序对:放左:后...

2019-10-29 16:32:00 110

原创 CF369E Valera and Queries kdtree

在离线+树状数组和kdtree 之间选择了 kdtree,但复杂度似乎有点高,第 45 个点 tle~code:#include <bits/stdc++.h> #define N 300005 using namespace std; void setIO(string s) { string in=s+".in"; ...

2019-10-29 15:54:00 87

原创 CF837D Round Subset 动态规划

开始的时候数据范围算错了~我以为整个序列 2 和 5 的个数都不超过 70 ~一个非常水的 dpcode:#include <bits/stdc++.h> #define M 75 #define N 201 #define LL long long using namespace std; void setIO(stri...

2019-10-29 14:36:00 108

原创 CF620E New Year Tree 线段树+dfs序+bitset

线段树维护 dfs 序是显然的.暴力建 60 个线段树太慢,于是用 bitset 优化就好了 ~code:#include <bits/stdc++.h> #define M 63 #define N 800005 #define lson now<<1 #define rson now<<1|1 ...

2019-10-29 14:34:00 82

原创 CF293B Distinct Paths 搜索

考试 T2,没想到真的就是一个大爆搜啊~搜索时几个剪枝:1.剩余可用颜色要大于等于剩余步数2.颜色从没用过的里找,然后用二进制状压存储.code:#include <bits/stdc++.h> using namespace std; void setIO(string s) { string in=...

2019-10-29 14:31:00 138

原创 [AGC028B]Removing Blocks 概率与期望

考虑算每一个位置在所有情况的期望值乘以全排列似乎就是答案.那么对于 $i$,如果要由 $j$ 来贡献的话就要满足 $j$ 在 $i....j-1$ 之前先拿.而在拿 $j$ 时,先于 $i...j-1$ 的概率就是 $\frac{1}{|j-i|+1}$直接对所有的 $j$ 加和,然后乘以个概率即可.code:#include <bits/st...

2019-10-28 23:23:00 184 1

原创 bzoj 4319: cerc2008 Suffix reconstruction 贪心

如果字符集无限大的话直接按照 $sa$ 的顺序依次填即可.由于字符集非常小,所以要尽量填相同的字符. 我们知道 $sa$ 数组,也就知道了 $rank$ 数组. 那么考虑添加排名为 $i$ 的字符:如果 $rank[sa[i-1]+1]>rank[sa[i]+1]$,说明 $sa[i]$ 的字典序必须比 $sa[i-1]$ 的字典序大,新建字符....

2019-10-28 16:58:00 93

原创 bzoj 2430: [Poi2003]Chocolate 贪心

发现每一次切割都会使另一方向所有切割次数++.而每一刀的代价就是 cost*切割次数,故贪心按照cost从大到小排序即可.#include <bits/stdc++.h> #define N 200000 #define LL long long using namespace std; void setIO(string s) { string...

2019-10-28 16:39:00 105

原创 容斥计数入门

常见公式:先给出几个重要的公式/结论:一些常见的二项式反演:\(f_n=\sum_{i=0}^{n}(-1)^i\binom{n}{i}g_i\Rightarrow g_n=\sum_{i=0}^{n}(-1)^i\binom{n}{i}f_i\)\(f_{n}=\sum_{i=0}^{n}\binom{n}{i}g_i\Rightarrow \sum_{i=0}^{n}(-1)...

2019-10-25 10:32:00 187

原创 BZOJ 2839: 集合计数 广义容斥

在一个 $N$ 个元素集合中的所有子集中选择若干个,且交集大小为 $k$ 的方案数.按照之前的套路,令 $f[k]$ 表示钦定交集大小为 $k$,其余随便选的方案数. 令 $g[k]$ 表示交集恰好为 $k$ 的方案数. 则有 $f[k]=\sum_{i=k}^{n}\binom{i}{k}g[k]$,反演得 $g[k]=\sum_{i=k}^{n}(-1)^{i-k}\binom{...

2019-10-24 20:59:00 97

原创 luogu 5505 [JSOI2011]分特产 广义容斥

共有 $m$ 种物品,每个物品 $a[i]$ 个,分给 $n$ 个人,每个人至少要拿到一件,求方案数.令 $f[i]$ 表示钦定 $i$ 个没分到特产,其余 $(n-i)$ 个人随便选的方案数,$g[i]$ 表示恰好 $i$ 个没分到特产的方案数.按照我们之前讲的,有 $f[k]=\sum_{i=k}^{n}\binom{k}{i}g[i]\Rightarrow g[k]=\su...

2019-10-24 20:43:00 59

原创 CF504E Misha and LCP on Tree 后缀自动机+树链剖分+倍增

求树上两条路径的 LCP (树上每个节点代表一个字符)总共写+调了6个多小时,终于过了~绝对是我写过的最复杂的数据结构了 我们对这棵树进行轻重链剖分,然后把所有的重链分正串,反串插入到广义后缀自动机中. 求 LCP 的话就是后缀树中两点 $LCA$ 的深度. 如果 $LCP$ 的长度小于两个重链的长度,就直接输出答案,否则还要继续爬重链....

2019-10-22 20:38:00 221

原创 CF798D Mike and distribution 贪心

我感觉这道题挺神的~假设 $a[i]=b[i]$,那么我们可以将 $a$ 降序排序,然后你发现只要你按照 $1,3,5......n$ 这么取一定是合法的.而我们发现 $2$ 比取 $3$ 优,取 $4$ 还比取 $5$ 优.所以,我们可以这样:强制性取第一个元素,然后其余 $\frac{n}{2}$ 个元素每相邻两个依次考虑,不论拿哪个都是合法的.这样做有什...

2019-10-22 16:27:00 89

原创 CF707D Persistent Bookcase 可持久化线段树

维护一个二维零一矩阵(n,m<=1000),支持四种操作(不超过10^5次):将(i,j)置一将(i,j)置零将第i行零一反转yu回到第K次操作前的状态每次操作后输出全局一共有多少个一你发现如果每一次操作都复制一整行的话是可以用 $bitset$ 优化的,自带/32所以,我们对于每一个时刻维护一个线段树,其中 $i$ 节点表示第 $i$ 行对应...

2019-10-22 16:02:00 95

原创 BZOJ 4368: [IOI2015]boxes纪念品盒 贪心

题意:给定一个环,环上有一些点包裹,你要从 $0$ 号点出发,然后每次带上一个容量为 $k$ 的背包. 问:如果要把所有的包裹都带回 $0$ 好点最少要走多少距离. 每一次只有 $3$ 种走法:走整圆,没走到半圆就返回(两个方向)而我们可以贪心证明我们最多只会走一次整圆:如果我们要走 $2$ 次或两次以上整圆的话说明要拿的物品肯定 $>k$ 个...

2019-10-21 16:07:00 237

原创 BZOJ 4300: 绝世好题 二进制

对于每一个数字拆位,然后维护一个大小为 30 左右的桶即可.code:#include <bits/stdc++.h> #define N 100006 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int mx[N]; int main() { ...

2019-10-21 10:28:00 73

原创 luogu 3200 [HNOI2009]有趣的数列 卡特兰数+质因数分解

打个表发现我们要求的就是卡特兰数的第 n 项,即 $\frac{C_{2n}^{n}}{n+1}$.对组合数的阶乘展开,然后暴力分解质因子并开桶统计一下即可.code:#include <bits/stdc++.h> #define N 100040 #define setIO(s) freopen(s".in","r",stdin) usi...

2019-10-15 18:21:00 107

原创 bzoj4974 字符串大师 KMP

这个好神啊~code:#include <bits/stdc++.h> #define N 100040 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int nex[N],vis[27]; char str[N]; int main()...

2019-10-15 18:19:00 102 1

原创 nowcoder 181045 / 克洛涅的多项式 构造+思维

code:#include <bits/stdc++.h> #define ll long long #define mod 998244353 #define N 1000006 #define setIO(s) freopen(s".in","r",stdin) using namespace std; namespace IO ...

2019-10-15 16:50:00 117

原创 CF359D Pair of Numbers gcd+暴力

利用区间 gcd 个数不超过 log 种来做就可以了~code:#include <bits/stdc++.h> #define N 300005 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int n; set<int>s; ...

2019-10-14 20:10:00 77

原创 CF358D Dima and Hares dp

状态的定义挺奇特的~发现最终每一个物品一定都会被选走.令 $f[i][0/1]$ 表示 $a[i]$ 在 $a[i-1]$ 前/后选时 $1$~$(i-1)$ 的最优解. 因为一个数字的价值只由其相邻两边决定~code:#include <bits/stdc++.h> #define N 3007 #d...

2019-10-14 19:20:00 117

原创 SPOJ 2939 QTREE5 LCT

维护信息的方式十分巧妙~维护每一棵 splay 中深度最浅,深度最深的点距离最近的白点. 这样非常方便维护,进行区间合并,进行子树维护code:#include <bits/stdc++.h> #define N 100006 #define inf 1000000 #define setIO(s) freopen(s".in","r"...

2019-10-14 16:49:00 124

原创 BZOJ 1576 树剖+LCT

考试的时候zz,写了一个子树修改,一直没找到反例.....正解是链修改,对点到lca之间的点附一个值就好了~对于链修改,链查询,当然要用LCT了~code:#include <bits/stdc++.h> #define N 100003 #define M 200005 #define ll long long ...

2019-10-14 14:03:00 66

原创 CF1051D Bicolorings 递推

考试T2,随便推一推就好了~code:#include <bits/stdc++.h> #define N 1015 #define mod 998244353 #define ll long long #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",std...

2019-10-14 14:00:00 274 2

原创 CF938D Buy a Ticket dijkstra

考试T1,建一个反图跑一个最短路就好了~code:#include <bits/stdc++.h> #define ll long long #define N 200002 #define M 600009 #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdo...

2019-10-14 14:00:00 104

原创 luogu 3702 [SDOI2017]序列计数 矩阵乘法+容斥

现在看来这道题真的不难啊~正着求不好求,那就反着求:答案=总-全不是质数这里有一个细节要特判:1不是质数,所以在算全不是质数的时候要特判1code:#include <bits/stdc++.h> #define N 104 #define M 20000002 #define mod 20170408 #d...

2019-10-12 18:55:00 63

原创 牛客练习赛53 (C 富豪凯匹配串) bitset

没想到直接拿 bitset 能过 $10^8$~code:#include <bits/stdc++.h>#define N 1004 #define setIO(s) freopen(s".in","r",stdin)using namespace std;int n,m; char G[N][N],S[N]; bitset<...

2019-10-11 20:49:00 91

原创 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线

考试的时候切的,类似HH的项链~code:#include <bits/stdc++.h>#define ll long long #define M 500003 #define N 2000005 #define inf 100000000 #define lson now<<1#define rson now<...

2019-10-11 20:47:00 128

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除