自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Icefox的博客

生活不止眼前的苟且,还有诗和远方。

  • 博客(106)
  • 资源 (3)
  • 收藏
  • 关注

原创 bzoj4946 [Noi2017]蔬菜(模拟费用流,贪心,线段树)

首先我们有一个费用流的做法。 因为保质期这个东西不太好限制,我们把每种蔬菜都按照过期时间分成若干类,每类大概x个,这样就相当于我们有了n*p种蔬菜。每种蔬菜在指定时间过期。我们把S的奖励放到每一种蔬菜过期时间最晚的那一类中去。我们可以建图,S向每一天i连边,容量为m,费用为0,每一天i向所有第i天过期的蔬菜连边,容量为inf,费用为a,每一天i向下一天i+1连边,容量为inf,费用为0(我把...

2018-06-29 22:28:40 903

原创 bzoj4944 [Noi2017]泳池(dp,概率与期望)

首先把求最大面积恰为K的概率转化成 求最大面积<=K的概率-最大面积<=K-1的概率我们注意到最底层一定是选了若干段<=K的连续段,于是我们可以枚举连续段的长度来dp。我们考虑f[i][j]f[i][j]f[i][j]表示底边长为i,且每一列都向上延伸至少h的高度且满足面积<=K的概率那么我们有 fn,mfn,mf_{n, m} = ⎧⎩⎨⎪⎪01pnfn,...

2018-06-28 22:20:52 335

原创 bzoj4943 [Noi2017]蚯蚓(Hash+复杂度分析卡常)

做法较为明显,直接模拟即可。Hash比较字符串。 复杂度分析一波,如果没有2操作的话,复杂度显然是O(nk)O(nk)O(nk)的,考虑有2操作的话,分裂两个蚯蚓的复杂度是O(k2)O(k2)O(k^2),因此而带来的合并复杂度也是O(ck2)O(ck2)O(ck^2)的,因此总的复杂度就是O(nk+ck2+|s|)O(nk+ck2+|s|)O(nk+ck^2+|s|) 然后就是卡常啦! 首...

2018-06-28 15:27:52 298

原创 bzoj4650 [Noi2016]优秀的拆分(计数+SA)

好久没写SA了的赶脚qaq 考试时写了95分的O(n2)O(n2)O(n^2)暴力hash我们考虑枚举中间分割点i,以i结尾的AA串个数*以i+1开头的AA串个数就是对答案的贡献。于是我们只需要处理出f[i],以i结尾的AA串个数 g[i],以i开头的AA串个数这两个数组。我们考虑枚举AA串的半长度len,每隔len个设一个关键点,那么一个合法的长度为len的AA串一定包含了恰好两个...

2018-06-27 23:07:09 226

原创 bzoj4742 [Usaco2016 Dec]Team Building(dp)

把所有牛一起降序排序,权值相同的FP的在前。 然后直接dp就好了,f[i][j][k],考虑前i头牛,FJ已经选了j头,FP已经选了k头的方案数,要求k<=j #include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 1010#de...

2018-06-27 20:18:53 286

原创 bzoj1670 [Usaco2006 Oct]Building the Moat(凸包)

求凸包裸题。用的是Graham扫描法求凸包。 a×b>0a×b>0a\times b>0 说明向量b在向量a的逆时针方向上。 我们一开始极角排序就是要把这些点与点1的连线逆时针排序。 然后按顺序处理这些点,维护一个栈,使得相邻点之间的线段都是逆时针转的。这样就得到了一个凸包。 写个模板题还被卡精度了gg 要1e-6…#include <bits/stdc++.h&gt...

2018-06-26 21:14:38 258

原创 CF392E Deleting Substrings(区间dp)

题意就是说给你一个序列a,你每次可以选择一段“山峰形”子串删掉,获得v[长度]的价值,价值可能为负。可以不全删掉,求最大价值。 f[i][j] 把i~j都删掉的最大价值 g[i][j] 把i~j删成a[i],a[i]+1,…,a[j]的形式的最大价值 h[i][j] 把i~j删成a[i],a[i]-1,…,a[j]的形式的最大价值 dp[i] 前i个的最大价值 #include &lt...

2018-06-26 19:46:41 545

原创 bzoj4198 [Noi2015]荷马史诗(Huffman编码+stl)

题目给出的定义显然就是让我们求Huffman编码。 不过可能是K叉的,我们加几个0补全就好了。 为了满足第二个要求,贪心的权值相同时深度小的优先。#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100010#define pi...

2018-06-26 14:20:31 242

原创 bzoj4199 [Noi2015]品酒大会(SAM+线段树)

这回换了个SAM写,SA的做法见:portal一开始以为可以做到线性…结果写了之后发现还是要挂棵线段树… 我们考虑对反串建SAM,搞出后缀树,这样任意两个后缀的lca就是他们的lcp。于是我们可以在每个lca处统计答案。 不过一个点可能会覆盖一段长度区间,所以要区间修改答案。 复杂度O(26n+nlogn)O(26n+nlogn)O(26n+nlogn)#include <bi...

2018-06-26 14:16:27 394

原创 bzoj4184 shallot(线段树时间分治+线性基)

我们按时间建线段树,把所有数的存在时间求出来,一定是一个连续的区间,插到线段树对应区间上。线段树每个节点挂一个vector来存数。这样就把删除操作避免掉了。然后从上到下dfs一遍线段树,把每个叶子的线性基合并出来即可,复杂度O(nlognlogw)O(nlognlogw)O(nlognlogw) 空间O(nlogn+nlogw)O(nlogn+nlogw)O(nlogn+nlogw)#inc...

2018-06-25 21:33:11 323

原创 CF607B Zuma(区间dp)

给定一个序列,每次操作可以选择一个回文子串删掉,问把整个序列删除所需的最小操作次数。我们区间dp,f[i][j]表示把i~j都删掉的最小花费 转移有两种: 1、i,j没有在一次被删掉,f[i][j]=f[i][k]+f[k+1][j] 2、a[i]==a[j],i,j在一次被删掉,那么在删i+1~j-1的最后一下时把i,j也带走就好了,因此就是f[i+1][j-1]#include &l...

2018-06-25 20:48:49 672

原创 CF346B Lucky Common Subsequence(LCS+kmp)

给定三个串A,B,C,求串A,B的lcs,要求不能包含C串作为子串。 f[i][j][k]表示A串前i个,B串前j个,lcs匹配到了C串的第K的个字母的lcs 转移和普通的lcs差不多,就是在往lcs上多加一个字符时,需要求一下新的lcs匹配到了C的那个字符,我们kmp预处理一下next数组即可快速找到。 复杂度O(n3)O(n3)O(n^3)#include <bits/stdc...

2018-06-25 20:33:50 554

原创 bzoj4197 [Noi2015]寿司晚宴(数学+状压dp)

首先考虑n<=30怎么做,没几个质因子,状压掉 然后n<=100,状压着有点费劲,各种优化,比如*2>n的质因子肯定是贡献3倍答案,*3>n的质因子可以讨论一下也不压进状态里,然后就可以卡过去了 这启发了我们正解的思路!对于大质因子我们一起转移,然后就把这个大质因子这一位扔掉。 我们只需要状压<500−−−√500\sqrt {500}的那么8个质因子就好了。 ...

2018-06-25 13:26:42 190

原创 bzoj4195 [Noi2015]程序自动分析(并查集+Hash表)

并查集小水题~ 需要Hash表/map/离散化一下 一开始没排序…sb了。。。#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 200011inline char gc(){ static char buf[1<&...

2018-06-25 13:18:53 231

原创 bzoj4196 [Noi2015]软件包管理器(树链剖分)

树链剖分小水题~维护区间白点个数即可。 复杂度O(nlog2n)O(nlog2n)O(nlog^2n)#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100010inline char gc(){ static char...

2018-06-25 13:15:34 193

原创 bzoj3054 Rainbow的信号(位运算+瞎搞)

考虑单独统计每一位对答案的贡献。 考虑枚举区间右端点i,那么&操作就是往左找第一个0的位置 |操作就是往左找第一个1的位置 ^操作就是记一下到i-1的异或和为0/1的个数,转移一下就好了 复杂度O(logwn)O(logwn)O(logwn)#include <bits/stdc++.h>using namespace std;#define ll long l...

2018-06-24 23:30:35 474

原创 6.24NOI 模拟赛

A.小w、小j和小z 我可能是个傻子,两个人i,j相撞的要求就是 si<sj,ti>tj或者si>sj,ti<tjsi<sj,ti>tj或者si>sj,ti<tjsitj或者si>sj,tiO(logwnk)O(logwnk)O(logwnk)水了80,其实按s排序之后不就是问你最少删掉几个使得剩下的序列为上升序列嘛…直接求个lis就好了 复杂...

2018-06-24 23:03:03 336

原创 luogu4713「语文」凑字数(dp+贪心+枚举)

考试时根本没看到这题(蒻 后来也只会42分的做法qaq 并没有想到如何处理K>1的情况 原来暴力枚举一下哪些部分得分为0就好了啊qaq 然后把其他的扣分都算在一起就好了,可以证明如果非法一定不优。 然后利用此题分数S只有200的特性 可以做到O(2kkSn)O(2kkSn)O(2^kkSn)的复杂度 f[i][j]f[i][j]f[i][j]表示前i句话,扣了j分写到的最远位置...

2018-06-23 22:32:20 253

原创 CF403D Beautiful Pairs of Numbers(计数,dp+组合数学)

首先做一个dp f[i][j]f[i][j]f[i][j]表示区间总长度为i,有j个区间,且任意两个区间的长度不同的方案数。两种转移:1、每个区间的长度都增加1,f[i][j]−>f[i+j][j]f[i][j]−>f[i+j][j]f[i][j]->f[i+j][j] 2、每个区间长度都增加1,并新增一个长度为1的区间,f[i][j]−>f[i+j+1][j+1]f[i][...

2018-06-23 21:14:08 481

原创 luogu4714 「数学」约数个数和(组合数学+miller_rabin判素数)

luogu6月月赛E。 当时绝对是脑抽了 其实O(wK)O(wK)O(wK)的暴力递推还是可以写的呀… 令n=∏pqiin=∏piqin=\prod p_i^{q_i} 我们发现可以分开讨论每一个pqiipiqip_i^{q_i},最后乘起来就好了,且只跟次数q有关 设f[k][q]f[k][q]f[k][q]表示pqpqp^q的k次因数个数。 那么有递推式f[k][q]=∑i=0qf...

2018-06-23 17:43:10 330

原创 CF354C Vasya and Beautiful Arrays(gcd+暴力)

首先gcd最大是原序列最小数,设为m。 如果K>=m-1那么一定都可以变成m的倍数,因此答案就是m 显然答案最小为K+1,因为一定能把所有数都变成K+1的倍数。 于是我们可以在K+1~mn从大到小枚举,数x如果是答案的话,要求每一个数都在[gx,gx+K]之间。我们前缀和统计一下即可。 复杂度O(wlogw)O(wlogw)O(wlogw)#include <bits/st...

2018-06-23 13:01:38 353

原创 bzoj2124 等差子序列(Hash+树状数组)

给定一个排列,问是否存在长度>=3的等差子序列。如果存在长度>=3的等差子序列,那么一定存在长度为3的等差子序列。我们只需要判断是否存在长度为3的等差子序列即可。我们从前往后做,对于aiaia_i,如果ai−kai−ka_i-k与ai+kai+ka_i+k都已经出现过或者都没出现过那没事,否则只出现了一个的话,另一个一定在后面,就一定会构成一个等差子序列。每个数如果出现...

2018-06-23 12:33:11 447

原创 Wannafly挑战赛18

https://www.nowcoder.com/acm/contest/129#question A.序列(组合数学) -2和0.5一样多,且都为偶数,枚举一下具体个数就好了 O(n)O(n)O(n) 考时ZZ了,不会跳了过去…很久以后才A掉gg B.随机数(矩阵快速幂) 设f[i]表示前i个数有奇数个1的概率,则 f[i+1]=f[i]∗(1−p)+(1−f[i])∗pf[i+1...

2018-06-22 23:09:24 306

原创 bzoj2986 Non-Squarefree Numbers(Mobius函数+容斥+二分答案)

其实和bzoj2440一模一样。 就是利用Mobius函数来容斥就好了#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 500010inline char gc(){ static char buf[1<<16...

2018-06-22 16:57:52 212

原创 bzoj2393 Cirno的完美算数教室(容斥原理+dfs)

和bzoj1853基本一模一样,因为是2和9还更少了些合法数字…#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 2100inline char gc(){ static char buf[1<<16],*S,*...

2018-06-22 16:25:00 327

原创 bzoj1853 [Scoi2010]幸运数字(容斥原理+dfs)

我们发现纯幸运数字只有2046个,而去掉倍数之后只剩了943个。 我们直接容斥,暴力枚举就好了qaq 注意剪枝,从大到小枚举,求lcm避免爆ll等玄学技巧就好了qaq#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 2100in...

2018-06-22 16:21:25 313

原创 bzoj3676 [Apio2014]回文串(manacher+SAM)

首先对原串建SAM,并处理出每个点所代表的串出现的次数sz。 用manacher搞出本质不同的回文子串,去SAM上查询出现次数即可。 在SAM上定位这个串的时候倍增查找即可。 复杂度O(nlogn)O(nlogn)O(nlogn) 注意我这样manacher没有处理单点的情况…#include <bits/stdc++.h>using namespace std;#de...

2018-06-22 15:39:56 284

原创 bzoj4448 [Scoi2015]情报传递(树上主席树+离线)

#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 200010inline char gc(){ static char buf[1<<16],*S,*T; if(T==S){T=(S=buf)+fread(...

2018-06-22 12:02:32 224

原创 bzoj4849 [Neerc2016]Mole Tunnels(模拟费用流)

这题看完之后很容易想到费用流,但是n太大了不能直接跑。 我们考虑模拟这个费用流的增广过程,每次多了一条S->x的容量为1,费用为0的边后,我们要找一条费用最低的x->T的路径来增广,也就是要在树上找距离x最近的一个还有食物的点。因为是完全二叉树,所以我们可以直接暴力跳父亲,维护f[x]表示x子树内有食物的点到x的距离最小值,g[x]记录这个最近点的位置。那么x->xx的距离+f...

2018-06-22 10:58:07 473

原创 bzoj4793 [CERC2016]Hangar Hurdles(bfs+最大生成树+贪心)

首先我们可以预处理出以每一个格子为中心的最大正方形边长。 (以每一个障碍为起点,跑八联通bfs即可) 那么能从x点挪到y点的最大正方形边长就是两点间路径最小值的最大值。 也就是求一个最大瓶颈边,我们想到了最大生成树。 不过这个是点权的,处理起来比较奇怪qaq 我们按点权从大到小处理每一个点,和这个点周围的四个点,如果已经加进去了,就连起来。钦定父亲节点权值小于儿子节点,维护这棵最大生成树...

2018-06-22 10:09:19 597

原创 bzoj5084 hashit(广义SAM+set动态维护树链的并)

给出的字符串可以很方便的建成Trie树的若干个字符串的形式。 然后我们对Trie树建出广义SAM 那么每次询问的答案就是目前Trie树上所有点在parent树上的点到根的若干树链的并的点i的mx[i]-mx[par[i]] 我们可以用set+dfs序来动态维护树链的并的长度。 注意到x到根的这条树链的贡献其实就是mx[x] 复杂度O(26n+nlogn)O(26n+nlogn)O(26n...

2018-06-21 22:56:08 387

原创 bzoj4709 [Jsoi2011]柠檬(贪心+dp+决策单调性+单调栈)

问题就是把这个序列分成若干段,使得每段的贡献和最大。 首先我们贪心地发现每段的起终位置一定相同(否则分出去更好) 于是有dp,f[i]表示前i个的最大贡献。枚举i这一段的起点j,一定满足a[i]==a[j],记c[i]表示i及i之前出现了多少个a[i] f[i]=maxj=1i{f[j−1]+a[i]∗(c[i]−c[j]+1)2|a[j]==a[i]}f[i]=maxj=1i{f[j−1]...

2018-06-21 15:12:42 345

原创 bzoj5311 贞鱼(dp+决策单调性+wqs二分)

首先我们有朴素dp f[i][k]f[i][k]f[i][k]表示把前i个分成k段的最小代价 f[i][k]=minj=0i−1{f[j][k−1]+w(j+1,i)}f[i][k]=minj=0i−1{f[j][k−1]+w(j+1,i)}f[i][k]=\min\limits_{j=0}^{i-1}\{f[j][k-1]+w(j+1,i)\} 其中w(i,j)w(i,j)w(i,j)表示...

2018-06-21 12:02:56 838

原创 uoj117 欧拉回路(输出欧拉回路模板)

欧拉图判定条件:无向图: 连通且每个点的度数均为偶数。(可以有孤立点)有向图: 连通且每个点的入度等于出度。(可以有孤立点)输出回路: 套圈法,可以搜出没有公共边的若干子回路,并成一个就好了。于是可以用栈把搜到的圈(边)存下来即可。 需要优化一下邻接表(类似Dinic的当前弧优化),复杂度O(m)O(m)O(m)#include <bits/stdc++.h>...

2018-06-20 22:58:27 753

原创 uoj236 【IOI2016】railroad(欧拉图+最小生成树)

首先我们对每一个速度建一个点,然后对于每一个路段(s,t),建边s->t。这样我们就是求可以在这张图中添加一些边,要求经过每条边恰好一次。我们添加一条(inf,1)的边,这样就是要求把这张图变成欧拉图。考虑这样一个区间[x,x+1][x,x+1][x,x+1] , 只有满足s≤x,t≥x+1s≤x,t≥x+1s≤x,t≥x+1的边与满足t≤x,s≥x+1t≤x,s≥x+1t≤x,s≥...

2018-06-20 21:54:13 889

原创 bzoj3622 已经没有什么好害怕的了(dp+容斥原理)

首先设a组糖果比药片大,b组药片比糖果大,然后要求a-b=K,a+b=n,显然有a=(n+K)/2 于是就是求恰好a组糖果比药片大的方案数。 我们dp处理出至少j组的”方案数” 首先把a,b数组均排序,处理出每个糖果i大于的药片个数w[i],然后f[i][j]表示前i个糖果,选出了j组符合条件的。 f[i][j]=f[i−1][j]+f[i−1][j−1]∗(w[i]−j+1)f[i][j...

2018-06-20 17:20:42 283

原创 bzoj3812 主旋律(图论+状压dp+容斥原理)

题目给出一个 n 个点,m 条边的有向图,要求求出删掉一些边以后,整个图强联通的方案数,其中 n≤15,m≤n(n−1) 好难啊qaq 题解传送门:portal 实现上也有一些技巧要注意qaq#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#def...

2018-06-20 15:14:03 312

原创 bzoj4455 [Zjoi2016]小星星(容斥原理+状压枚举+树形dp)

首先我们有一个树形状压dp的想法,f[x][i][S]表示x节点,匹配原图的i节点,子树匹配了原图S状态的点的方案数,这样可以保证一一对应,不重不漏,可惜复杂度高达O(n33n)O(n33n)O(n^33^n),无法承受。 我们考虑容斥,用树上n个点匹配原图n个点的所有方案-匹配原图n-1个点的所有方案+匹配原图n-2个点的所有方案-… 于是我们O(2n)O(2n)O(2^n)枚举原图的一个点...

2018-06-20 10:03:38 218

原创 bzoj4710 [Jsoi2011]分特产(容斥原理+组合数学)

题目要求有0个人有0个。 我们枚举有i个人有0个来容斥,其余的人随意分,用插板法来计算方案数。 Ans=∑i=0n−1(−1)iCin∏j=1mCn−i−1aj+n−i−1Ans=∑i=0n−1(−1)iCni∏j=1mCaj+n−i−1n−i−1Ans=\sum\limits_{i=0}^{n-1}(-1)^iC_n^i\prod\limits_{j=1}^mC_{a_j+n-i-1}^{n...

2018-06-20 08:18:13 307

原创 bzoj5306 [Haoi2018]染色(容斥原理+ntt)

一个不会数数的老年咸鱼选手的学习经历x首先我很快的得到了一个式子:Cim∗n!(s!)i∗(n−is)!∗(m−i)n−isCmi∗n!(s!)i∗(n−is)!∗(m−i)n−isC_m^i*\frac{n!}{(s!)^i*(n-is)!}*(m-i)^{n-is} 但是我说不出它的意义…感觉很重复x,需要容斥x 然后就傻掉了gg其实可以按套路来,给每一项设一个容斥系数b[i], ...

2018-06-19 22:55:56 325

zjoi2015.zip

浙江省选 2015 zjoi 数据 题目zjoi2015.zip 2015浙江省省赛数据。

2018-02-23

国家集训队2004论文集

国家集训队 论文集 2004 OI。

2017-08-05

2013国家集训队清华集训

2013国家集训队清华集训资料。

2017-07-30

空空如也

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

TA关注的人

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