自定义博客皮肤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的博客

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

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

原创 poj2104 K-th Number(主席树模板)

首先离散化,然后对于每个前缀1…i,建立一颗权值线段树。那么l…r的区间信息,就是tree[r]-tree[l-1]。然后因为直接开肯定开不下,我们发现第i棵线段树和第i-1棵线段树基本相同,只有一条链被更改了,因此我们可以利用这一点减少空间花销。也就是说对于每一棵线段树,我只新建出这次被修改了的一条链,所以总的空间复杂度是O(nlogn)的。时间复杂度还是O(nlogn)的。

2017-11-30 21:23:36 361

原创 bzoj3223 Tyvj 1729 文艺平衡树 (splay)

就维护一个区间反转。

2017-11-30 16:16:14 283

原创 suoj20 垃圾显示屏(cdq分治+树状数组)

二维平面,两种操作 1.给(x,y) +1 2.查询矩形(1,1,x,y)的权值和。 二维树状数组开不下,cdq分治,去掉一维,然后用树状数组维护。O(nlog2n)

2017-11-30 15:24:35 279

原创 bzoj3224 Tyvj 1728 普通平衡树(splay/treap)

板子题哇。splay

2017-11-28 20:07:03 388

原创 luogu2710 数列(splay)

和维修数列一样。

2017-11-28 13:16:57 251

原创 bzoj1500 [NOI2005]维修数列(splay)

打了一晚上才改对。。太弱了。

2017-11-28 07:35:17 331

原创 sgu275 线性基模板题

高斯消元求线性基,O(nlogw)O(nlog w),两种写法。第二种代码短,但是不能保证性质。

2017-11-27 19:24:21 818

原创 hdu3949 XOR(求所有的异或和的第k小,高斯消元求线性基)

首先线性基很妙啊。可以来这里学习下:传送门 然后板子基本就是高斯消元?蒟蒻还不会高斯消元。。。待填坑。反正就是用log w级别的数,代替了原来的n个数。在什么意义上这两个东西相等呢?就是这log w个数(叫做线性基),通过线性组合可以得到所有的n个数。一般用于求解异或和最值的问题。板子见 传送门。此题是求第k小的异或和。根据线性基的性质,我们可以得到第k小的就是:把m个线性基从小到大排序,分别叫v

2017-11-27 19:11:02 569

原创 zoj2314 Reactor Cooling (无源汇的有上下界的最大流)

上界用ci表示,下界用bi表示。下界是必须流满的,那么对于每一条边,去掉下界后,其自由流为ci– bi。主要思想:每一个点流进来的流=流出去的流对于每一个点i,令Mi= sum(i点所有流进来的下界流)– sum(i点所有流出去的下界流)如果Mi大于0,代表此点必须还要流出去Mi的自由流,那么我们从源点连一条Mi的边到该点。如果Mi小于0,代表此点必须还要流进来Mi的自由流,那么我们从该点连一条Mi

2017-11-24 20:13:08 502

原创 bzoj1458 士兵占领(最大流)

这题我哪会啊。思路很妙,先把所有能放士兵的位置都放上,看最多能删去几个。每一行可以删去的就是本来可以放的位置数-需要的位置数,如果为负则直接不合法。然后s向行建边,列向t建边,边权都是可以删去的最大个数。如果x行y列可以放,则建边x->y,容量为1,跑最大流即可。求最多可以删去几个点。

2017-11-24 17:09:32 411

原创 bzoj1711 [Usaco2007 Open]Dining吃饭(最大流/三分图匹配)

源点向食物建边,食物向牛建边,牛向饮料建边,饮料向汇点建边,把牛拆成两个,保证一头牛只有1会通过。然后dinic

2017-11-24 14:25:27 599

原创 bzoj1433 [ZJOI2009]假期的宿舍(最大流/二分图最大匹配)

S向所有需要床的人建边,所有床向T建边,i认识j,i向j的床建边,每个人向自己的床建边,跑dinic,看是否所有需要床的人都有床了。为什么要把人和床分开建呢?因为a认识b,b认识c,a不认识c的话,a并不能睡在c的床上。如果只建一个人,就会出现问题。

2017-11-24 13:34:52 386

原创 bzoj1189 [HNOI2007]紧急疏散evacuate(二分答案+bfs+最大流判是否满流)

首先bfs处理出每个人到每个门所需的时间。然后二分答案,对于所有人能到的所有门,建边,边权为1,从源点向所有人建边,边权为1,从所有门向汇点建边,边权为mid(最多出去mid个人),dinic跑最大流看是否满流

2017-11-23 16:29:19 566 1

原创 bzoj1305 [CQOI2009]dance跳舞(二分答案+最大流判是否满流)

二分答案,如何判断mid是否合法呢?我们建图,把每个点分成两个点。喜欢点称为a,不喜欢点称为b,男生x喜欢女生y,则建边xa->ya,边权为1,不喜欢则建边xb->yb,边权为1,最多只能k个不喜欢,所以建边xa->xb,边权为k,yb->ya,边权为k。然后源点向所有xa建边,边权为mid,所有ya向汇点建边,边权为mid。跑dinic求出最大流,看是否满流(即是否mid次所有人都分配成功了)。

2017-11-23 16:23:27 367

原创 bzoj1066 [SCOI2007]蜥蜴(建图最大流)

把每个点拆成两个点,一个表示进入这个点,记作a,一个表示离开这个点,记作b。a->b,边权为高度,表示最多只有这么多的蜥蜴可以通过这个点。然后任意两个可以互达的石柱x,y,建边bx->ay,边权为inf,建立超级源点,向所有一开始有蜥蜴的石柱建边,边权为inf,建立超级汇点,所有可以跳出地图的点向超级汇点连边,边权为inf。然后跑dinic就好啦。

2017-11-23 11:27:22 303

原创 poj1273 Drainage Ditches(最大流dinic板子)

Dinic算法的核心就在于多路增广。每次bfs给残余网络分层,然后一次dfs把能增广的全都增广了。复杂度是O(n2m)O(n^2m).

2017-11-23 09:18:36 315

原创 NOIP2017提高组D2

D2 T1.cheese并查集 T2.treasure状压dp(爆搜) T3.phalanx线段树(暴力),只会80分。

2017-11-22 21:39:39 457

原创 NOIP2017提高组D1

D1 T1.math数论 T2.complexity模拟(栈) T3.park spfa+tarjan缩点找0环+拓扑序dp

2017-11-22 21:35:06 450

原创 AtCoder Grand Contest 008

AtCoder Grand Contest 008 题目链接: https://agc008.contest.atcoder.jp/ A.Simple Calculator(模拟) B.Contiguous Repainting(贪心+枚举) C.Tetromino Tiling(奇偶性)D.K-th K (贪心+构造)E.Next or Nextnext (组合数学+dp+图论+置换)

2017-11-22 16:59:13 1420 1

原创 CF543B Destroying Roads(bfs+枚举)

因为边权都是1,所以可以bfs求得两点间最短路O(nm)O(nm)。然后考虑两条最短路如果不想交,则答案显然就是m-dis[s1][t1]-dis[s2][t2]。如果相交呢,那他们一定会有一段重合的,这样答案显然有可能更小,而且这样的情况下,只有可能在重合的两端分开,分开后就不可能再重合了。我们枚举这段重合的起点和终点i,j,判断是否合法,然后更新答案。注意:要把s1和t1交换一下,因为一共有四种

2017-11-21 13:42:35 432

原创 CF894E Ralph and Mushrooms(tarjan缩点+拓扑序dp+数学)

一个强连通内的边显然可以把它的价值完全压榨,其他的边只能过一次,所以我们tarjan求scc,缩成DAG,然后拓扑序dp求最长路。至于怎么算一条边的所有价值,数学搞吧。首先求出n∗(n+1)<=wn*(n+1)<=w的最大的n,然后价值就是n∗w−∑ni=1i∗(i+1)/2+wn*w-\sum_{i=1}^n i*(i+1)/2+w,也就是n∗w−n∗(n+1)∗(n+2)/6+wn*w-n*(n

2017-11-21 11:13:18 766

原创 CF689B Mike and Shortcuts(单调队列/建图spfa/bfs)

这题做法很多,我太sb了,一直想不出来,看了题解才会。 可以只建i->i+1 i->i-1 i->a[i]三种边,然后spfa或者bfs求单源最短路。 还可以直接从左到右循环,一个点的最短距离只有两种情况,从i-1来,或者从右边某个捷径跳到的点回来,因为ai<=ai+1a_i<=a_{i+1} ,所以还可以用一个单调队列来维护从右边跳回来时的最优值。

2017-11-21 09:08:55 477

原创 Codeforces Round #447

CF894A QAQ(暴力枚举/前缀后缀)CF849B Ralph And His Magic Field(数论,组合数学,快速幂)CF849C Marco and GCD Sequence(数论+构造)

2017-11-20 22:07:07 282

原创 luogu2662 牛场围栏(数论+最短路)

同余类spfa,以%最小数n的余数分类,建n个点,然后用其他的数去建边,从0开始跑最短路,每一种能凑出的最小数就是dis,而最大的不能凑出来的数就是dis-n。

2017-11-20 11:23:37 612

原创 CF507E Breaking Good(spfa+dp)

求最短路,同样最短时取好路最多的。还要记录路径。

2017-11-20 10:16:22 339

原创 CF400D Dima and Bacteria(并查集+Floyd)

首先判断是否可行,把0边链接的点都合并起来,看每一种类的所有点是不是都在一个集合内。然后缩成500个点,跑Floyd即可。

2017-11-19 21:22:02 299

原创 CF689C Mike and Chocolate Thieves(二分答案+数学)

二分答案,发现最大数一定是xk3xk^3,所以枚举立方数,看有多少个,累加即可。

2017-11-19 20:55:16 419

原创 NOIP2003提高组

2003提高 A.神经网络(拓扑模拟) B.侦探推理(字符串+模拟) 太恶心了,不会写。 C.加分二叉树(区间dp+树的遍历) 因为中序遍历是1~n,所以如果根是k的话,左子树一定是1~k-1,右子树一定是k+1~n。这样就可以区间dp了。顺道记一下跟,方便输出前序遍历 D.传染病控制(搜索+剪枝) 实质上相当于在每层选一条边砍掉,可以爆搜,加个最优性剪枝。注意一个点安全了,只要它的祖先

2017-11-18 15:40:10 658

原创 NOIP2005提高组

2005提高 A.谁拿了最多奖学金(模拟) B.过河(dp,玄学系列) 题解 C.篝火晚会(模拟+贪心) 这题神啊。首先把目标环模拟出来,当前环与目标环有多少个不匹配的就是需要多少代价。因为是环,所以我们要循环n次去比较,复杂度O(n^2),gg。我们可以先处理出每个位置上的数与它的正确位置差了多少个,即需要转几下,然后枚举转几下,取能正确匹配最多的。注意还要把目标环反过来做一次。(可以想象

2017-11-17 17:25:48 456

原创 NOIP2006提高组

2006提高 A.能量项链(区间dp)题解 B.金明的预算方案(背包dp)题解 C.作业调度方案(模拟) D.2^k进制数(dp+高精度) D写了很久,代码贼丑,可能是因为一天都没看到Elijahqi大佬的缘故( 然后上了节历史课回来就调过了呢x,还发现Elijahqi在和他的同桌愉快的上课呢x怪不得一天都不学习oi(逃 D可以组合数学直接算,也可以dp一波,dp[i][j]表示一共i

2017-11-17 11:40:44 694

原创 NOIP2007提高组

2007提高 A.统计数字(模拟) B.字符串的展开(模拟) C.矩阵取数游戏(dp+高精度) 考虑倒着dp,dp[i][j]表示还剩i…j的数,把这些取走的最大得分。决策无非两种,先拿i,先拿J. D. 树网的核(树的直径+贪心+暴力枚举) n=300,各种瞎搞。如果只能选一个点的话,一定选中心最优,因此我们以中心为根,贪心的去扩展。每次看能不能把最远的点干掉。。不能时就是答案了。

2017-11-17 10:48:55 472

原创 NOIP2008提高组

2008提高 A.笨小猴(模拟+素数) B.火柴棒等式(搜索/模拟+枚举) C.传纸条(spfa+枚举) 题解见 http://blog.csdn.net/icefox_zhx/article/details/77417642 D.双栈排序(二分图判断+栈模拟) 题解见 http://blog.csdn.net/icefox_zhx/article/details/78151279A#i

2017-11-16 22:09:11 826

原创 NOIP2009提高组

2009提高 A.潜伏者(模拟) B.Hankson 的趣味题(素数筛+数论+分解质因数) a1,a2的最大公因数为a0,则对于每一个质因子,他在a0中的指数为a1,a2中的最小值,即反过来,如果a1中的指数为x1,a0中的指数为x0,x1>x0,则a2中的指数x2必为x0.如果x1==x0,则x2>=x0.最小公倍数同理。这样我们就能得出每一个质因子的指数的取值范围,根据乘法原理算出答案。考

2017-11-16 17:21:30 563

原创 NOIP2010提高组

2010提高 A.机器翻译(模拟+队列) B.乌龟棋(dp) dp[i][a][b][c],表示到第i个格子,用了a张2,b张3,c张4,(则d张1是可以算出来的)的最大分数。 C.关押罪犯(贪心+并查集) 题解 D.引水入城(bfs+贪心) 首先考虑最后一行是否全都能有水,则把第一行全入队,bfs一遍即可。考虑如果全能有水,最少需要第一行的多少个点。对第一行的每个点bfs,处理出这个点

2017-11-16 14:58:28 788

原创 poj3463 Sightseeing(最短路计数+次短路计数)

求最短路的个数和比最短路大1的路的个数。可以写堆优化Dijstra,统计最短路个数和次短路个数,然后判断次短路是否是比最短路大1即可。松弛时讨论一下最小和次小的更新。

2017-11-14 13:10:11 407

原创 NOIP2017普及组

A.。。。 B.枚举 C.建图spfa。 D.二分答案+dp+单调队列优化。

2017-11-14 10:56:25 584

原创 NOIP2004提高组

2004提高 A.津津的储蓄计划(模拟) B.合并果子(贪心+优先队列) C.合唱队形(dp) D.虫食算(搜索+数学)

2017-11-10 21:33:43 325

原创 NOIP2002提高组

2002提高 A.均分纸牌(贪心) B.字串变换(字符串哈希+bfs+剪枝)

2017-11-10 17:13:13 390

原创 NOIP2001提高组

2001提高 A.一元三次方程求解(枚举+二分答案) 水题写挂orz B.数的划分(dfs/dp)这递推我哪会啊。。。 C.统计单词个数(字符串+暴力+区间dp)这题我哪读得懂啊。。。 D.Car的旅行路线(建图spfa)

2017-11-10 15:56:03 355

原创 luogu1063【06提高】能量项链(区间dp)

dp[i][j]=max{dp[i][k]+dp[k+1][j]+a[i]∗a[j+1]+a[k+1]|i<=k<j}dp[i][j]=max\{dp[i][k]+dp[k+1][j]+a[i]*a[j+1]+a[k+1] | i<=k<j\}

2017-11-09 22:08:04 369

zjoi2015.zip

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

2018-02-23

国家集训队2004论文集

国家集训队 论文集 2004 OI。

2017-08-05

2013国家集训队清华集训

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

2017-07-30

空空如也

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

TA关注的人

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