自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FTM's Blog

有人说我冰雪聪明~~~

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

原创 BZOJ3594: [Scoi2014]方伯伯的玉米田

BZOJ3594: [Scoi2014]方伯伯的玉米田动态规划·二维树状数组题解:感觉自己Dp好弱啊,啥也想不出来。。。QwQ。有一个结论,提升[l,r]可以用提升[l,n]来替代,总不会更坏。 (像这种区间长度没有限制自由度很高比较棘手的一般就是找个最优性结论限制住)设f[i][j]表示前i个提升j次的最长LIS长度。 f[i][j]=maxf[k][l](k<i,l≤j,ak+l≤ai+j)

2017-08-29 11:53:34 365

原创 BZOJ3316: JC loves Mkk

BZOJ3316: JC loves Mkk二分答案·优先队列题解: http://blog.csdn.net/ws_yzy/article/details/50560213PoPoQQQ大爷: 看到平均值最大果断二分答案 看到长度[L,R]果断单调队列把原数组复制一遍,断环为链。 二分一个答案x,求a[i]-x的前缀和。 问题变成了是否有两个距离满足要求的数,之差大于0.

2017-08-28 23:57:58 440

原创 BZOJ3770: 疯狂的限制

BZOJ3770: 疯狂的限制乱搞题解:直接看代码吧。Code:#include <iostream>#include <cstring>#include <cstdio>#include <vector> #define D(x) cout<<#x<<" = "<<x<<" "#define E cout<<endlusing namespace std;const int N =

2017-08-26 20:53:06 392

原创 BZOJ4416: [Shoi2013]阶乘字符串

BZOJ4416: [Shoi2013]阶乘字符串状压dp题解:据说n>21n>21无解? 据说合法的串最短是O(n2)O(n^2)级别的? 不知道。。。对于n<=21n<=21的情况, 设f[S]f[S]表示原串的最短前缀的结束位置,这个前缀是以S为字符集合的阶乘字符串。 设g[i][x]g[i][x]表示在后缀[i+1,n][i+1,n]中x这个字符第一次出现的位置。枚举S中的字母x,f

2017-08-26 15:40:15 428

原创 BZOJ2959: 长跑

BZOJ2959: 长跑LinkCutTree·并查集题解:如果没有环就是LCT裸题了,维护子树和即可。有环的时候,不管环长得什么样(单环也好,多个环有交点、有公用边也好),只要依次为环上的边定向,一定可以做到从任意一个点开始,遍历环上所有的点,在任意一个点停下来(当然了,可能会走重复的路径)。也就是说,环跟一个点没有区别。那么就可以缩点,用并查集维护,剩下的部分LCT。LCT合并的时候直接选出一个

2017-08-26 10:22:14 340

原创 BZOJ4542: [Hnoi2016]大数

BZOJ4542: [Hnoi2016]大数莫队·乱搞题解:蛤~我这种蒟蒻怎么可能自己想出来呢2333~ 但是我看网上的题解很多没有证明过程,就写一下吧~ans=∑i=lr∑j=ir1((10′)n−r∑k=ijs[i]∗10n−kmodp==0)ans=\sum_{i=l}^{r} \sum_{j=i}^{r} 1 ((10')^{n-r} \sum_{k=i}^{j}{s[i] * 10^{n

2017-08-25 22:06:19 220

转载 MarkDown数学公式

MarkDown数学公式你以为我会吗?tan90。tan90^。 参见:http://blog.csdn.net/yzr1183739890/article/details/64130912

2017-08-25 19:48:01 179

原创 BZOJ2878: [Noi2012]迷失游乐园

BZOJ2878: [Noi2012]迷失游乐园树形Dp题解:orz orz orz orz ORZ Tunix ORZ orz orz orz orz 简单写一下,怕自己忘了。。。先考虑没有环的情况。令点1为树根,设down[i]down[i]表示从i开始向下走的期望步数,up[i]up[i]表示往上走的。down[i]down[i]的计算很简单: down[i]=∑(down[j]+w

2017-08-25 19:44:34 471

原创 4571: [Scoi2016]美味

4571: [Scoi2016]美味主席树·位运算 的 奇妙世界题解:i∈[L,R]i∈[L,R],最大化:Xxor(A[i]+Y)X xor (A[i]+Y)如果我们先不考虑i∈[L,R]i∈[L,R]和+Y+Y呢?一个按位的二叉tire树可以解决问题。每次根据XX的当前位决定优先向左还是向右,如果优先的一边没有点则走另一边。如果实际走的是优先选的那一边,ans=(ans<<1)+1,否则ans

2017-08-24 22:05:54 234

原创 BZOJ4565: [Haoi2016]字符合并

BZOJ4565: [Haoi2016]字符合并区间Dp·状压Dp题解:又一道神题,蒟蒻orz由于合并的获利为正,所以一定会合并到不能合并为止。我们发现一个长度lenlen合并完的长度是已知的,length[i]=(i<m?i:length[i−m+1])length[i]=(i<m?i:length[i-m+1])设f[i][j][s]f[i][j][s]表示区间[i,j][i,j]最后变成ss的

2017-08-24 22:04:50 411

原创 BZOJ3747: [POI2015]Kinoman

BZOJ3747: [POI2015]Kinoman线段树题解: http://hzwer.com/5715.html线段树经典题 nxt[i]记录第i天的电影下次播放时间 枚举区间左端点,线段树维护每个位置作为右端点的答案 考虑l-r的左端点变为l+1 发现l到nxt[l]-1的答案减少w[f[l]] 而nxt[l]到nxt[nxt[l]]-1增加w[f[l]] 线段树维护,支持

2017-08-24 22:03:38 411

原创 BZOJ3218: A + B Problem

BZOJ3218: A + B Problem最小割·主席树题解:用主席树优化最小割orzorz orz orz orz orz orz orz orz orz orz orz POPOQQQ orz orz orz orz orz orz orz orz orz orz orz调试1.5h+Code:#include <algorithm>#include <iostream>#inc

2017-08-24 21:56:57 260

原创 BZOJ4184: shallot

BZOJ4184: shallot线性基·线段树题解:又是一道神题! 然而蒟蒻只能抄题解,还抄漏了一句。。。一个数字的出现时间是一段区间[l,r][l,r],可以开一棵线段树,把[l,r][l,r]对应的线段树节点上的vector里加上这个数。 最后dfs一次,参数传一个线性基(不是引用),把当前点vector里的都加进去,再往下dfs。 这样到达叶节点的线性基就包含了这个点时存在的数,输出一

2017-08-24 18:16:56 410

原创 BZOJ4569: [Scoi2016]萌萌哒

BZOJ4569: [Scoi2016]萌萌哒并查集·倍增题解:并查集中点id[i][j]id[i][j]表示从i开始2j2^j长度的这一块区间。 合并的时候区间拆成不超过log个2的整数次幂长度的区间,把他们对应的点合并。 最后自顶向下合并,即如果id[i][j]]id[i][j]]和id[a][b]id[a][b]在一个并查集里,则合并id[i][j−1]、id[a][b−1]id[i][j

2017-08-24 16:06:52 202

原创 BZOJ4568: [Scoi2016]幸运数字

BZOJ4568: [Scoi2016]幸运数字线性基·倍增·LCA题解:抑或和最大的问题显然要用到线性基。本题就直接倍增维护线性基,合并出答案即可。线性基的合并就是一个插入到另一个中。有一点小细节就是lb[i][j]lb[i][j]中维护的是从i到i的2j2^j级祖先的线性基,左开右闭,也就是不包括i本身的。因此查lca(a,b)lca(a,b)的时候先把a和b的插入进去。Code:#includ

2017-08-24 15:19:26 239

原创 BZOJ2460: [BeiJing2011]元素

BZOJ2460: [BeiJing2011]元素线性基题解:线性基网上有很多讲解了,不再赘述。明白了线性基之后这题就是裸题了。 为了价值最大,按照价值排个序,先插入价值大的即可。Code:#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>using namespace std;typede

2017-08-24 14:26:27 190

原创 BZOJ3881: [Coci2015]Divljak

BZOJ3881: [Coci2015]DivljakAC自动机·Fail树题解:一开始想错了,还是对AC自动机的性质太不熟悉了。。。以前没接触过Fail树,先来简单总结一下。 Fail树就是只保留AC自动机的fail指针并将其反向建出来的树。 对于Fail树上的节点,它代表的字符串是其子树中的节点代表的字符串的后缀。也就是下面的包含上面的。考虑这样一个问题:假设给你若干个字符串,每次询问a在b

2017-08-24 11:30:37 275

原创 BZOJ3439: Kpm的MC密码

BZOJ3439: Kpm的MC密码Tire树·dfs序·主席树题解:把字符串反过来,后缀变成前缀,扔进Tire树里。以一个字符串结束点为根的子树中的单词都是它的Kpm串。要求其中第K大的编号。求Tire树的dfs序,子树变成连续的区间,套主席树的区间第K大。注意:有相同的字符串。不仅Tire树结束标记要用vector了,而且主席树插入的时候也不能直接clone上一层的了(那样cnt就不对了),而是

2017-08-24 11:16:29 396

原创 BZOJ3252: 攻略

BZOJ3252: 攻略贪心·线段树 http://blog.csdn.net/mys_c_k/article/details/66474976题目大意:给定一棵以1为根的n个点的树,树有点权且点权为正整数,可以选择k条以根作为起点的路径,每条路径的价值即这条路径上所有点的点权之和。 但是选择一条路径之后,这条路径上的所有点的点权会变成0。(也就是说,这k条路径中被重复选择的点,其点权只能被

2017-08-23 13:42:47 493

原创 BZOJ2006: [NOI2010]超级钢琴

BZOJ2006: [NOI2010]超级钢琴优先队列·RMQ题解: http://blog.csdn.net/orpinex/article/details/7012836这道题合法的子序列是非常多的,如果朴素显然是无法做出这道题 有一个非常美妙的想法,对于给定的起点,起点的权值已知了,子序列的个数是确定的 那么记录一下前缀和s[i],对于给定的起点,实际上就是询问起点所代表的那一段区间

2017-08-23 13:42:02 229

原创 BZOJ1227: [SDOI2009]虔诚的墓主人

BZOJ1227: [SDOI2009]虔诚的墓主人树状数组题解:我们发现一个格子的答案就是: C(left,k)∗C(right,k)∗C(up,k)∗C(down,k) C(left,k) * C(right,k) * C(up,k) * C(down,k) left、right、up、downleft、right、up、down分别表示这个点的左右上下有几棵树。坐标范围很大,想到离散化,

2017-08-23 13:41:04 210

原创 BZOJ1103: [POI2007]大都市meg

BZOJ1103: [POI2007]大都市meg括号序·树状数组题解:首先求出括号序。如样例为1455422331 将进栈时打上标记1,出栈时打标记-1,这样已经退出的点的两个标记就会互相抵消 然后出栈序号与1号序号之间的权值和-1即为答案(排除1的影响) 修改时只要将对应标记变为0就可以了Code:#include <iostream>#include <cstring>#incl

2017-08-23 13:40:22 190

原创 BZOJ1055: [HAOI2008]玩具取名

BZOJ1055: [HAOI2008]玩具取名区间Dp题解:设f[l][r][x]表示[l,r][l,r]区间能否变成xx这个字母。转移:枚举最后一次合并的划分点,枚举xx的每一种变形规则,看看左右两边是否都可以变成变形则需要的字母。Code:#include <iostream>#include <cstring>#include <cstdio>#include <vector>#in

2017-08-23 13:39:38 192

原创 BZOJ1014: [JSOI2008]火星人prefix

BZOJ1014: [JSOI2008]火星人prefixSplay·HASH题解:一般这种又是插入又是修改的直接上splay啦~ splay维护HASH,求LCP的时候二分一下查HASH是否相等。 复杂度O(Qlog2n)O(Qlog^2n)其实也可以写预先为将来所有可能的位置开点的线段树,原理差不多。代码比较难写QWQ 肯定是我太弱了。。。Code:#include <iostream>

2017-08-23 13:38:53 280

原创 BZOJ1415 聪聪和可可

BZOJ1415 聪聪和可可期望Dp题解:设f[i][j]f[i][j]表示聪聪在点i,可可在点j时的期望步数。i==j时,f[i][j]=0f[i][j]=0i按找要求走一步或两步能走到j时,f[i][j]=1f[i][j]=1否则: f[i][j]=f[i′][j]+1+∑(f[i′][j′]+1)du[j]+1 f[i][j]=\frac {f[i'][j]+1+\sum{(f[i

2017-08-23 13:36:49 276

原创 BZOJ1076: [SCOI2008]奖励关

BZOJ1076: [SCOI2008]奖励关状压Dp题解: http://blog.csdn.net/PoPoQQQ/article/details/43454337对于这种最优策略的期望DP 我们一般都是从后往前推 枚举每次出现宝物 枚举此时的状态 枚举宝物是哪种 如果当前的宝物可以吃 就在吃与不吃的后继状态中选择最大值加到当前状态上 如果当前的宝物不能吃 只能选择不吃的后继状态加到

2017-08-23 13:17:10 296

原创 BZOJ2893: 征服王

BZOJ2893: 征服王费用流 的 奇妙世界题解:哇塞好神奇! ♪(´∇`*) 竟然还有如此厚颜无耻**巧妙**的费用流!好啦以下是抄的题解:首先缩点,变成DAG “见到有向图60%是缩点”——某大佬然后就是一个DAG上的一条边可以重复走最小路径覆盖。 DAG的最小路径覆盖可以用二分图匹配来解决。可重复的就要用费用流了: 对于一个点u,拆成u->u’ ,连两条边,一条cap=1 cos

2017-08-23 13:09:38 251

原创 BZOJ2741: 【FOTILE模拟赛】L

BZOJ2741: 【FOTILE模拟赛】L可持久化Tire·分块题解:首先做一下XOR前缀和,把问题变成“选择一个区间里的两个数,使他们的XOR值最大”。考虑可持久化Tire,但是它只能解决“一个区间里找一个数使得它与给定数的XOR值最大”,就是必须枚举一个,log的时间找另一个。考虑分块,另beginibegin_i表示第i块的第一个的位置, 设f[i][j]f[i][j]表示从区间[beg

2017-08-23 10:09:24 211

原创 BZOJ3712: [PA2014]Fiolki

BZOJ3712: [PA2014]FiolkiLCA·乱搞题解:哇塞好棒棒的题啊!显然的做法是O(mk)O(mk)的,嗯,换种思路。 如果我们能快速知道反应的发生顺序呢? 可惜没有如果…… 是有的!按照操作的顺序,为每个操作新建一个节点,当然每个原始的瓶子也是节点,两个儿子分别是反应的两个瓶子。 这样就长成一片森林啦~ 然后两种物质的LCA的深度不就是它们反应的顺序吗? 排一下序模拟一

2017-08-22 12:16:09 300

原创 BZOJ3727: PA2014 Final Zadanie

BZOJ3727: PA2014 Final Zadanie乱搞题解: 感谢fqk dalao画柿子! 令点11为根,设dis[i]dis[i]表示ii到根的深度,易得: b[1]=∑a[i]∗dis[i]b[1]=\sum{a[i]*dis[i]} b[i]=b[fai]−size[i]+(size[1]−size[i])(i>1)b[i]=b[fa_i]-size[i]+(size[

2017-08-22 10:02:52 245

原创 BZOJ4145: [AMPPZ2014]The Prices

BZOJ4145: [AMPPZ2014]The Prices状压Dp题解: http://www.cnblogs.com/gromah/p/4592207.html我们考虑设立状态Dp[i][s]Dp[i][s]表示考虑了前ii个商店后,购买状态为ss的最小花费。转移的话就枚举每个商店ii,首先令: Dp[i][s]=Dp[i−1][s]+D[i]Dp[i][s]=Dp[i−1][s]+D

2017-08-21 22:28:25 299

原创 BZOJ1264: [AHOI2006]基因匹配Match

BZOJ1264: [AHOI2006]基因匹配MatchDp·树状数组题解: http://www.cppblog.com/MatoNo1/archive/2011/03/19/142240.html?opt=adminLCS问题的朴素时间复杂度为O(NM)O(NM)。对于本题显然需要优化。 观察LCS的转移方程: F[i][j] = F[i-1][j-1]+1(当A[i]==B[j]时

2017-08-21 22:19:21 241

原创 BZOJ2400: Spoj 839 Optimal Marks

BZOJ2400: Spoj 839 Optimal Marks最小割 的 奇妙世界题解: 引用自http://blog.csdn.net/u012288458/article/details/50720724,少许改动。位运算相关,按位做 枚举每一位(以下的0和1都是指的这一位) 一个点与S连通表示这个点选0,与T连通表示这个点选1 如果这个点确定为0,那么源点S向这个点连一条容量为i

2017-08-21 22:11:19 205

原创 BZOJ2696: 航班安排

BZOJ2696: 航班安排网络流·费用流题解: 引用自fqk dalao的博客!这道题也是他教的!MOD一下! http://blog.csdn.net/Phenix_2015/article/details/50843982先让我重新说一下题意qwq。 有n个机场,机场两两之间需要的最短时间是f[i,j]f[i,j],花费的费用是一个固定值c[i,j]c[i,j],有m个请求,在

2017-08-21 20:30:38 574

原创 BZOJ3275: Number

BZOJ3275: Number网络流·费用流题解:经典套路:奇偶分组 可以发现偶数和偶数之间是不可能冲突的,因为gcd至少为2。 奇数和奇数呢?令:a=2k+1a=2k+1,b=2p+1b=2p+1,则:a2b2=(2k+1)2(2p+1)2=4(k2+p2+k+p)+2\begin{align}a^2b^2 &= (2k+1)^2(2p+1)^2 \\&= 4(k^2+p^2+k+p)+

2017-08-21 19:18:51 215

原创 BZOJ3171: [Tjoi2013]循环格

BZOJ3171: [Tjoi2013]循环格费用流题解:我们发现在最后的完美状态中,一个格子的入度=出度=1. 可以看出,只要满足所有格子入度=出度=1,就一定是一个完美循环。 把每个格子拆点,S向每个左边的点连容量1费用0的边 每个右边点向T连容量1,费用0的边 每个格子向四周连容量为1,如果原来指向的就是这个方向则费用为0,否则费用为1。这样,与S连的边容量为1,保证了出度=1;与T连

2017-08-21 14:50:56 220

原创 BZOJ1098: [POI2007]办公楼biu

BZOJ1098: [POI2007]办公楼biu链表·乱搞题解:这真的是一道令人耳目一新的题!首先很容易看出答案就是补图的连通块个数,但是补图有O(n2)O(n^2)条边啊QWQ 在不建立补图的情况下,对于一个点,遍历其原图中的边,哪些点没访问到,它们就是补图中能走到的点。很遗憾,这样还是O(n2)O(n^2)我们发现“遍历所有点看哪个没访问到”这个步骤做了很多无用功,因为很多点可能已经确定了它

2017-08-19 10:40:46 290

原创 BZOJ1691: [Usaco2007 Dec]挑剔的美食家

BZOJ1691: [Usaco2007 Dec]挑剔的美食家贪心·mutiset题解:对于这种多元关系,比较套路的就是先将一维排序。因为我们要求最小花费,所以我们就按照花费排序,扫到每一个牧草,就将比它花费小的牛加进去,然后让它弹掉鲜美度小于等于它的最大一个即可。Code:#include <iostream>#include <cstring>#include <cstdio>#inclu

2017-08-19 10:12:03 416

原创 BZOJ4276: [ONTAK2015]Bajtman i Okrągły Robin

BZOJ4276: [ONTAK2015]Bajtman i Okrągły Robin费用流·线段树优化建图题解:有一个用费用流的显然做法,可惜边是O(n2)O(n^2)级别的。 这时就要用到线段树优化建图啦! 一个强盗的区间拆成log个线段树上的区间,向对应的线段树节点连边,线段树上的非叶子向儿子连边,叶子向T连容量为1的边,最后S向每个强盗连边,容量1,费用w[i].Code:#inclu

2017-08-19 08:48:10 306

原创 BZOJ4631: 踩气球

BZOJ4631: 踩气球线段树 的 奇幻世界题解:在dalao fqk的模拟赛里我自己想出来的! 撒花 撒花线段树维护气球,把一个孩子拆成若干个线段树上的区间,并放在对应线段树节点的vector里,并且记录num[i]num[i]孩子i被拆成了几个区间。 每当一个区间变成0时,就把它vector里的孩子的num[ch[i]]−−num[ch[i]]--,如果num[ch[i]]==0num[c

2017-08-18 22:22:14 506

空空如也

空空如也

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

TA关注的人

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