自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zeyu_King的专栏

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成!

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

原创 主席树初探

笔者近几天研究了一下早已久仰的主席树!(据说可是主席发明的树哦)看着讲义和网上的博客yy了好久,最后还是看程序看明白的,衰。。。。。。极力推荐CLJ的《可持久化数据结构研究》,写的非常好,虽然蒟蒻一开始没看懂。。。。--------------------------------------------------华丽的分割线--------------------------

2014-12-31 23:37:44 1293

原创 [BZOJ 2801]POI2012 Minimalist Security

首先不要被题目吓倒,这题你就做出大半了。只有联通块内才会互相约束(废话)扫描每一个联通块,找到一个起点,假设他的权值为x。那么每个连出去的边的终点权值为  w-x 。也就是说每个点上一定为kx+b(其中k=1或-1)也许每个点会被扫描到多次,分以下几种情况1、k1==k2,若b1!=b2无解,若b1==b2.......没有影响,继续running2、k1!=k2,那么我们

2014-12-21 15:20:25 976

原创 [BZOJ 2085]POI2010 Hamsters

表示蒟蒻在ac这道题之前理解的矩乘都是极为片面的原本我以为矩乘只能优化线性转移,例如f[n]=ai*f[i]+aj*f[j]+ak*f[k].......其实这样的方程也是可以转移的:f[n]=min(f[i]+ai,f[j]+aj,f[k]+ak......) Matrix operator *(const Matrix &x)const{ Matrix ret; fo

2014-12-21 14:40:24 933

原创 [BZOJ 2796]POI2012 Fibonacci Representation

大概就是说假设 F(x)d[n]=min( d[a-F(x)] , d[F(x+1)-a] )+1记忆化一下就行了。证明吗。。。这个坑再填吧。。。#include #include #include #include using namespace std;typedef long long LL;LL f[110],n;int Q,i;map hash;in

2014-12-17 22:20:19 1132

原创 [BZOJ 2795]POI2012 A Horrible Poem

很优美的题目:)列出以下性质:1、循环节一定是长度的约数(废话。。。)2、如果n是一个循环节,那么k*n也必定是一个循环节(关键所在)3、n是[l,r]这一段的循环节  的充要条件是  [l,r-n]和[l+n,r]相同(利用这个性质我们在判断是否为循环姐是可以做到O(1))我们从性质2开始,如果len是循环节,那么最小循环节一定是len的约数——是不是有想法了?枚

2014-12-17 22:01:44 1585

原创 NEERC2013 Kabaleo Lite

有意思的贪心题。n=1时特判,只有当最后player的棋子和player_1的胜利棋子是相同的,player_1才能取胜。剩下的,我们可以看到对于   非player_1的胜利棋子  的棋子   他的任务就是尽量覆盖 player_1的胜利棋子 ,而对于和   player_1的胜利棋子   相同的棋子   在最坏情况下会放在一个位置——自身覆盖。枚举player_1的覆盖点,计算当前

2014-12-16 22:13:08 1015

原创 [BZOJ 3060]POI2012 Tour de Byteotia

考试的时候瞎写了个骗分算法居然给碰上标算了。。。先说一下当时是怎么想的吧,本来是打算直接按照读入顺序加边并删除的,但是这很明显有反例,于是。。。。于是我决定先把两端点均大于k的加入,再把剩下的边加进去。。。。。。评测出乎意料的过了看了题解后再yy,似乎这样做很靠谱。首先第一次加入的边是显然正确的。那么剩的点最多形成一棵树,用类似kruskal的加边方法就行了!#incl

2014-12-16 21:52:25 1149 1

原创 [BZOJ 2791]POI2012 Rendezvous

逗逗逗,一开始看错了题目,然后杯具了一个多小时。。。。。看明白了题目还是思路还是很直观的。首先若果两个点的在环之外就可以走到一起,很明显这就是最优解。如果在环内的话,那么我们分找出两个点第一个进入环的祖先,很容易证明最优解一定是这两个祖先中的一个,然后。。。敲代码吧#include #include #include using namespace std;const i

2014-12-16 21:43:57 751

原创 [BZOJ 2789]POI2012 Letters

water。。。。很明显我们把相同的字母相对位置弄出来后,前后同一位置的一定是对应的,否则一定不优。那么问题就变成两两交换将一个位置的数换到另一位置,裸树状数组。。。老样子,贴代码#include #include #include #include using namespace std;#define lowbit(x) ( (x)&(-(x)) )const i

2014-12-16 21:36:41 930 1

原创 [BZOJ 2790]POI2012 Distance

乍一看以为是神题,想了想,原来很暴力。。。可以看到乘和除是没有顺序关系的,那么为了我们就统一先除再乘。假设我们已经把原数除完了变成x,那么再在x上乘一些数使得得到的数在所有书中所需的步数最小,记为min1,次小的几为min2。预处理大法~~~~对每个数字枚举所有约数d,更新的最小值。在计算答案,同样枚举约数,利用min1或min2计算即可。代码#include #in

2014-12-16 16:49:45 905

原创 NEERC2013 HACK PROTECTION

想了好长时间。。。。最后看了dyf的题解直接拜到在地上了。首先注意一下对于从一个固定起点计算and值,计算出来的结果一定是单调不下降的,并且只会有31种可能(2^31)!!!xor值很好计算,做个前缀xor,我们可以O(1)得到区间的xor值那么枚举and的起点,不断二分出and变化的位置,问题就变成询问区间内有多少xor值为固定值的问题了。代码#include #inc

2014-12-16 12:21:11 889

原创 [BZOJ 2087] POI 2010 Sheep

神题啊首先必须yy出一个性质:一条边如果不能将点分成两部分为偶数个点,那么无论在哪种方案中他都是不合法的!(其实很明显啦,蒟蒻想了半天也没发现)我们枚举凸包上每个点,按此点为原点将剩下的所有点极角排序。复杂度O(nm logm)有了边之后,我们可以设计dp了。f[i][j]表示从i顺时针到j之间的已经全部分完了的方案数,可得f[i][j]=sigma(f[i][k]*f[k][

2014-12-16 09:15:22 830

原创 [BZOJ 2799]POI 2012 Salaries

算出每个点取值的范围:1~maxx_i。把没用的点从小到大放在一个数组里,按照maxx_i顺序扫描。如果当前maxx_i=k的仅有一个点,且在1~k中只有一个数可用,那么这个节点的值确定了。如果maxx_i=k的节点数==在1~k中可用的数的数量,很明显之前的节点会把这些数占满,1~k中可用的数全置为不可用。复杂度:O(n)#include #include #include

2014-12-16 06:53:28 772

原创 [BZOJ 3043]IncDec Sequence

非常好的一道题目,很有启发性。题目里面规定每次可以选一个区间队区间里的数统一加上1或减去1,要求最少的操作数使得的数列里的所有数都一样。一开始想了好久好久,一点思路都没有。。。。后来看了题解,彻底被这种思路折服了由于操作都是区间操作,那么区间里的数相对差值是不变的,那么我们可以将所有的数和其前一个数做一个差形成一个新的数列,我们权且叫他数列b很明显,只有当数列b除了第一个元素外所有

2014-12-10 06:51:05 800

原创 [BZOJ 2082]POI 2010 Divine divisor

数论小集合。题目里第一问本质上要求的其实是 数a1*a2*a3*....*am(m2^(指数是k的素数个数)-1瓶颈在于我们如何求出这个质因数分解,ai我们最多能找出ai在10^6(不到80000个素数)以内的质因子,我们就先找出小因子。与下来只可能存在 p、p*q、p^2p^2的情况可以很容易判定能够出来我们又可以想到了大素数判定(笔者弱弱的不会写Miller-Rab

2014-12-07 14:40:51 968

原创 [BZOJ 2081]POI 2010 Beads

练暴力的题目。。。直接枚举长度,计算答案,hash判重。复杂度其实和调和级数有关,大概就是O(n*ln(n))(笔者偷懒判重直接用排序写了,水过了。。。)#include #include #include using namespace std;const int MAX=(1e9)+9,Maxn=200005;int po[Maxn],hash[Maxn],rhash[

2014-12-07 13:03:12 671

原创 [BZOJ 2086]Poi 2010 Blocks

实战的时候逗比的使劲儿优化O(mnlgn)的算法,搞得吐血后才多对1个点,还是有2个点毫无压力的T啦然后看了题解才发现自己逗比到一定境界了。。。。我们的目的就是找到最小的j,使得j这样我们就可以去掉lgn了。把s最成一个单调下降的序列,现在队列求出n对应的j(很明显j存在于这个下降序列中),我们发现在找n-1对应的j中,若想更新答案,其对应的j必定比n对应的j小!因此我们只用两个指

2014-12-07 12:49:08 1074

原创 [BZOJ 2084]POI2010 Antisymmetry

说白了就是判断两个相反的串,从某一位置开始,向两个串的相反方向延伸,使得到的子串是相同的,并且长度最大。求最大的延伸长度。水题,很明显的hash吧,O(nlgn)。也可以看作是manacher的变种,跑manacher可以做到线性复杂度。#include #include #include using namespace std;const int MOD=(1e9)+7

2014-12-07 12:45:57 924

空空如也

空空如也

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

TA关注的人

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