自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

L_0_Forever_LF的专栏

曾是一个OIer

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

原创 BZOJ1128: [POI2008]Lam

因为互质有很多美妙方便的性质,所以推一下可以弄出答案的柿子 ansi=1ai∏nj=i+1aj−1ajansi=\frac{1}{ai}\prod_{j=i+1}^n\frac{aj-1}{aj} 于是这个分子分母会非常大…要写高精 因为要最简,需要资瓷一下高精和单精取gcd,因为有(a,b)=(a,bModa)(a,b)=(a,bModa ),写个高精模单精后直接gcd就行了 然后资瓷一下

2017-12-08 09:59:40 326

原创 BZOJ1127: [POI2008]KUP

先考虑单个格子 如果有某个格子的值在[k,2k]可以直接输出 如果在[2k+1,+∞),因为所有元素非负,这个格子一定不能选,把这个格子标记出来 于是最终的矩形一定全部由< k的元素组成 若这个矩形的和>2k,我们将他分割成2个矩形,不可能和都< k,所以我们不断分割一定能构造出一个合法答案 于是找出原矩阵中不含标记点的极大子矩阵,若他的和#include<set>#include<ma

2017-12-08 09:53:04 464

原创 BZOJ1126: [POI2008]Uci

因为出发点是在左下角,每次只能右转,所以走的一定是个顺时针,不能走已走过的位置限制了剩余能走的区域一定是个矩形 f[l][r][d][u][0 to 3]f[l][r][d][u][0\ to\ 3]表示当前能走的矩形区域的四条边的位置和当前的方向,因为矩形确定了,方向确定了,当前位置其实也就确定了所以不用记录当前位置 数组开不下这么大,但注意到按照dp的顺序,l是递增的,可以滚动掉这一维 转

2017-12-08 09:47:55 479

原创 BZOJ1125: [POI2008]Poc

我是真的没有任何码力可言qwq splay维护串的hash值 每次更改hash值,在splay上给所有那个值的点打个答案标记 特殊处理交换同一个串code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bit

2017-12-08 09:42:31 532

原创 BZOJ1124: [POI2008]枪战Maf

发现这是若干个基环内向树和若干个环 最坏情况下: 一个单独的环死剩1个 一个基环内向树死剩入度为0的点 最优情况下,显然按照拓扑序开枪死的人最少,模拟一下就行了注意特判一个单独的自环qwqcode:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#inclu

2017-12-08 09:39:51 348

原创 BZOJ1122: [POI2008]账本BBB

每次取反序列的和改变2,旋转和不变 根据原始序列的和,q-p可以算出至少要取反的次数,如果额外的次数记作花费,产生花费只可能是因为某个前缀和<0 预处理1~i,i~n前缀和的最小值,因为至多旋转n-1次,枚举旋转次数,算粗前缀和最小的位置,保证这个位置>=0就可以保证序列合法,算一下花费什么的code:#include<set>#include<map>#include<deque>#in

2017-12-08 09:36:14 458

原创 BZOJ1997: [Hnoi2010]Planar

先将哈密顿回路展在平面上,尝试给他连上原图中的其他边 每条边我们可以画在环内或者环外,有些边之间有冲突,不能同时在环内或环外,这就对应了一个2-SAT模型 直接tarjan判一下有没有u,u’在同一个连通分量就行了 边数是m^2的,Tm^2会T 因为平面图有个性质 m<=3n-6,用这个剪枝就行了code:#include<set>#include<map>#include<deque>

2017-12-07 10:28:36 364

原创 BZOJ2525: [Poi2011]Dynamite

我想O(n)但是好像不太行? 于是二分一下答案 贪心的取标记点,每个标记点让他的层数尽量浅以对其他子树产生贡献 f[i]表示i的子树一定要多少个标记点,g[i]表示i的子树内最浅的标记点的层数,d[i]表示i的子树内未被覆盖的最深的点的层数 贪贪贪,dp一下 有一些细节qwqcode:#include<set>#include<map>#include<deque>#include<

2017-12-06 21:22:08 278

原创 BZOJ4059: [Cerc2012]Non-boring sequences

右端点扫过去,用线段树每个左端点,区间内只出现一次的数的数目code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#includ

2017-12-06 21:18:34 329

原创 BZOJ4584: [Apio2016]赛艇

转化+dp

2017-12-06 21:08:45 244

原创 BZOJ4071: [Apio2015]巴邻旁之桥

在河同一边的可以不理他问题就是有若干个人在A侧l位置,要通过桥到B侧r位置 l< r 当K=1时发现答案就是所有l,r的中位数 因为ans=|p−l|+|p−r|ans=|p-l|+|p-r|(好有道理我怎么没发现qwq) 同时这启示我们(观察易得??qwq)当有两个桥时,每个人会选择更接近(l,r)中点的桥 所以我们将(l,r)按照中点排序后,两个桥将这些人分成了两部分,我们枚举这个分界

2017-12-06 20:55:34 430

原创 BZOJ4070: [Apio2015]雅加达的摩天楼

没判重点一直炸qwq这题看起来就很最短路 但是直接建边明显不行 注意到当p>n√\sqrt n时边数是n√\sqrt n的,总边数nn√n\sqrt n 当p<n√\sqrt n时,可以发现对于p相同,mod p下相同的两个 点我们会建重复很多边 具体来说,如果有x< y,px=py, x%p=y%p,那么x连到y右边的j边可以通过x->y->j,x只需要连到y就好了 那么这样的总边数是

2017-12-06 20:34:33 420

原创 BZOJ3205: [Apio2013]机器人

卡常卡了好久qwq可以先用记忆化搜索搜出每个位置往四个方向走会走到哪,注意判走到已经走过的地方避免死循环 f[l][r][i][j]表示在(i,j)合成机器人l~r的最小花费 有 f[l][r][i][j]=min f[l][r][di][dj]+1 (di,dj)->(i,j) f[l][r][i][j]=min(f[l][k][i][j]+f[k+1][j][i][j]) 对于第二个转

2017-12-06 12:18:44 497

原创 BZOJ3206: [Apio2013]道路费用

表达一下深深的怨念题面保证了边权互不相同,然鹅我做这题的时候狂WA不止,对拍只有边权相同的时候能拍出来,交到uoj上也过了 我就怀疑数据有问题qwq 于是扒了一个AC代码,加了判如果有相同边权,输出了一些脏话qwq 然后0msWA了 注释掉这行 A掉了 …….要了数据 这数据…一半以上一堆相同边权的吧….边权互不相同保证了不考虑操作边的MST唯一,不保证相同边权…似乎不太可做? 辣鸡

2017-12-05 11:28:28 391

原创 BZOJ2811: [Apio2012]Guard

先将序列中不可能有忍者的位置标出来 如果剩下的位置恰好有K个,要特判直接全部输出然后将每个区间缩掉两端的0 如果存在某两个区间A,B,A包含B,那么A是不必要的 处理完后剩下的区间两两互不包含,按右端点排序后,从左到右左右端点递增 易知只有每个区间的右端点有可能一定有忍者,因为贪心的放肯定是放右端点更优用f[i]表示保证了1~i区间的限制最少需要几个忍者,g[i]表示保证了i~n的区间限制至

2017-12-05 11:14:04 285

原创 BZOJ4539: [Hnoi2016]树

WA到哭qwq 插入的点本身就在模板树上时不用找子树内第k大qwq我们将每次插入的一棵子树看作一个块,那么在模板树上插入块,最后的大树会有n+m块 插入时如果接上去的父亲不在模板树上,二分找到接在哪一个块p上,再用主席树找p对应模板树的子树内第k大,从而找到接在块p对应模板树里的哪个节点fa上,算粗这个块的根到块p的根的距离作为这两个块之间的边权,顺便维护st表 询问时先在大树上跳块,直到跳到同

2017-12-04 21:04:49 356

原创 BZOJ1025: [SCOI2009]游戏

求和不超过n的若干个数,lcm有多少种将lcm分解质因数 lcm=p1^k1*p2^k2…..pm^km 不同质因子显然互不影响 要使lcm含pi^ki这个因子,至少要有一个数含pi^ki这个因子 因为这些数都>1,所以a*b>=a+b 所以贪心的想肯定单独一个pi^ki比较优 f[i][j]表示前i个质数,和为j,lcm有多少种 转移的时候枚举pi^ki 能保证不重不漏code:#

2017-12-04 19:48:58 252

原创 BZOJ4408: [Fjoi 2016]神秘数

考虑处理单组询问 一开始ans=1,每次统计<=ans的数的和sum,若sum>=ans,就用sum+1更新ans 最坏情况下,ans的更新是1,2,3,5,8….是斐波拉契数列 所以ans最多更新log次 用主席树资瓷统计区间<=ans数的和 每次询问log^2 总复杂度mlog^2code:#include<set>#include<map>#include<deque>#in

2017-12-04 10:11:06 537

原创 BZOJ3872: [Poi2014]Ant colony

因为下取整可以合并,即a/b/c=a/bc,且我们只关心经过某一条边< s,t>的蚂蚁,将树以< s,t>为界砍成两棵树,分别以s,t为根,那么我们只关心这两棵树的叶子到根上方时,有多少个k 对于子树中的叶子i,他走到根上方的分母f[i]已经确定,可以做个简单的dp求,这个叶子的贡献就是g[j]/f[i](下取整)=k的蚂蚁,即g[j]在[ k∗f[i],(k+1)∗f[i] )[\ k*f[i]

2017-12-03 16:38:40 451

原创 BZOJ3837: [Pa2013]Filary

当m=2时,k至少为n/2 所以序列中的每一个位置都有至少1/2的概率在k个数中 随机一个序列的位置i,计算i在k个数中时,k的最大值 计算其他n-1个数和a[i]的差b[j],另外k-1个数的b[j]的gcd>1,那么将gcd分解质因数后,任意一个分解出来的p[i]都可以代表k个数 于是将b[j]分解质因数,维护每个p[i]在多少个b[j]中出现,最大的p[i]就是k,要计算m的最大值,容

2017-12-03 16:33:22 798

原创 BZOJ4515: [Sdoi2016]游戏

传送门(这篇写得比我好qwq s到t的链可以拆成两条纵链 令dis[x]表示x到根的距离 对于一条纵链上的一个点x,添加的数就可以看成 (dis[x]-dis[t])* k+b =dis[x]*k-dis[t]*k+b =k*dis[x]+B 很像直线的表达式y=kx+b 树剖,问题变成线段树维护多条直线在区间内的最小值 对于一条链,因为这个区间内的dis是递增的即x坐标递增,这个

2017-12-01 20:59:41 452

原创 BZOJ3836: [Poi2014]Tourism

因为任意两点间不存在点数超过10的简单路径,所以dfs搜索树的层数不超过10 对每个联通块建dfs搜索树,因为所有非树边都是返祖边,可以顺着dfs序dp,三进制状态压每一层的状态,0表示未被覆盖,1表示建了旅游站,2表示没建被覆盖其实感觉这个复杂度很虚qwqcode:#include<set>#include<map>#include<deque>#include<queue>#inclu

2017-12-01 20:31:09 455

原创 BZOJ3835: [Poi2014]Supercomputer

不会做看题解qwq,感觉这个结论…不知道怎么想啊qwq 用sum[i]表示层数>=i的点数,那么有ans=maxi=1 to maxdep(i+⌈sum[i+1]k⌉)ans=max_{i=1\ to\ maxdep}( i+\lceil \dfrac{sum[i+1]}{k} \rceil) 这个柿子的意思是:用i次操作搞定前i层,接下来每次操作都能取满k个或把剩余不足k个取完为什么答案就是这

2017-12-01 20:28:42 465

原创 BZOJ3834: [Poi2014]Solar Panels

一开始看错题了,后来重新看了题…emmmm还是不会啊啊啊啊,写了个貌似复杂度很对的暴力交上去过了???(先讲一下我这个比较搞笑?的做法) 求a~b,c~d的数之间的最大的gcd,尝试枚举一下? 因为一个数x,他的>x√> \sqrt x的约数可以通过枚举<x√< \sqrt x的约数求得,我们枚举从1到b√\sqrt b枚举dd,对于x=from a to bx=from\ a\ to\ b,

2017-11-29 21:52:08 296

原创 BZOJ3833: [Poi2014]Solar lamps

可以将给出的直线视作向量,那么当这两个向量不共线时(共线时情况类似),建立出以这两个向量为基底的坐标系,将坐标取反后,每盏灯(x,y)亮了后,能照亮的区域是(<=x,<=y),然后直接暴力弄这个东西就行了 因为不会写树套树qwq,我写了kd-tree,卡了半天卡过去了qwq 为了减小常数写了指针和一些奇奇怪怪的东西,代码可能不会很友好code:#include<set>#include<map

2017-11-29 21:35:57 368

原创 BZOJ3832: [Poi2014]Rally

喵喵喵新建点st连向所有点,所有点连向点ed,f[i]表示S到i的最长链,g[i]表示i到T的最长链,那么过一条边< u,v>的最长链就是f[u]+< u,v>+g[v],将这个定义为边权,那么原图任意一个割集中最大的边权就是图中的最长链 按拓扑序枚举删的点,一开始原图分成st和其他点两个集合S,T,每次选出T中一个可拓展的点v,将割集中连向v的边删掉,剩余的最大边权就是删去v的答案,再将v加入S

2017-11-29 11:08:38 322

原创 BZOJ3831: [Poi2014]Little Bird

f[i]表示从1走到i的最小劳累值 因为高度的影响至多增加1的花费,可以用单调队列,按f从小到大维护,对于f相同的优先保留大的code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#includ

2017-11-29 11:04:51 255

原创 BZOJ3830: [Poi2014]Freight

可以发现如果B站的列车要选择回来一定是剩余的全部一起回来 用f[i]代表前i个列车全部回来,最后一辆列车最早回来的时刻,Ai表示第i辆列车可以发车的最早时间,有 f[i]=min(max(Ai+S,f[j]+S+i−j−1)+S+i−j−1)f[i]=min(max(Ai+S,f[j]+S+i-j-1)+S+i-j-1) =2S+2i−1+min(max(Ai−i,f[j]−j−1)−j)=2

2017-11-28 17:23:51 448

原创 BZOJ3829: [Poi2014]FarmCraft

贪贪贪的题我都不是很会会啊qwqf[i]代表从i开始走i的子树,最晚装完机的妹子什么时候装完,g[i]代表走完i的子树需要多少时间 对于转移,因为每条边只能走2次,走了一棵子树就一定要走完,对于一棵子树j,f[j]-g[j]是走完这棵子树,装机多出来的空闲时间,肯定要尽量利用这些空闲时间,所以按照f[j]-g[j]从大到小走子树转移code:#include<set>#include<map>

2017-11-25 07:47:59 358

原创 BZOJ3828: [Poi2014]Criminals

对于每个位置i,在他左端匹配A序列,使序列的开头lp[i]尽量大,在他右段倒着匹配B序列,使开头rp[i]尽量小,若这个位置的颜色c[i]是2个序列最后一个颜色且1~lp[i]-1,rp[i]+1~N有相同颜色这个位置就可以作为相遇点lp[i]可以正着扫过去,p[j]记录匹配到A序列第j个位置,开头最大到哪里,当前颜色c[i]若在A序列的第id个位置出现,若id=1,直接更新p[1],否则若p[id

2017-11-25 07:40:44 410

原创 BZOJ3827: [Poi2014]Around the world

将一段延伸到尽可能接近d,设其长为L,发现n个开头的走法在这一段内都会占据L个位置中的一个,根据这个性质就可以dp了 把环拉成链,倍长,对n+1~2n做dp,st[i]表示走到i,起点是哪个点,f[i]表示st[i]走到i需要的最少步数,f[i]=min f[j]+1 (s[i]-s[j]<=d)code:#include<set>#include<map>#include<deque>#i

2017-11-23 18:31:13 406

原创 BZOJ3526: [Poi2014]Card

一开始没读懂题意以为操作之间互不影响….然后写了个长长的st表WA了..用a[i][0/1]代表第i个卡片的正反面,线段树上每个点维护一个v[0/1][0/1]表示这个区间左右卡片的状态,在这个状态下这个区间是否能合法code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cm

2017-11-23 18:28:54 256

原创 BZOJ3521: [Poi2014]Salad Bar

维护p-j的前缀和sum[i],那么一段l~r合法的充要条件是sum[l]<=sum[l~r],sum[r]>=sum[l~r],即中间的所有sum都>=sum[l],<=sum[r] 如果枚举了右端点r,i为r左边第一个i满足sum[i]>sum[r] ,令L=i+1,问题变成找L~r的sum最小值 可以rmq,用并查集离线做rmq可以O(n),具体来说,维护每个位置i~r的rmq,那么1~r

2017-11-23 18:25:41 360

原创 51nod 1397

根据增广路的性质(未匹配匹配未匹配交错路),画图贪贪贪感觉能搞出来?我们先把图中的m对匹配点连上,得到这个东西蓝色的为匹配边,上方为集合A,下方为集合B,不妨设|B|>=|A| 先不考虑匹配点的度数够不够,我们尝试补并尽量添加非匹配点的度 因为m个匹配已经存在,所以A集和B集中的非匹配点之间不能有边 我们先为B集某个未匹配点添加边(这里假定度数要求为2,所以这个未匹配点至少要添加2条边,与匹配

2017-11-20 22:12:50 299

原创 51nod 1446

一个good点如果只和bad相连就不计算他的价值,否则算入总价值记作great点,要求总价值<=maxval这些good点之间除了权值没啥区别,生成树计数容易想到用矩阵树定理去统计,但是用矩阵树定理,只能通过让他们之和bad间有边限制i个点一定不是great点,对于其他点有可能还有不是great点的情况统计 于是用g[i]表示至少i个good点非great,f[i]表示恰好i个good点非grea

2017-11-20 21:46:23 379

原创 51nod 1448

倒着考虑印的过程,最后一次印的区域一定是K*K的同色区域 然后在之前的操作这片区域里印成什么颜色都行,定义为杂色,每次找一个K*K的全0/1+杂色区域印,(nm)^6code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#inc

2017-11-19 17:24:27 295

原创 51nod 1450

得到2颗星的期望次数可以解方程算但得到1颗星的算不了。 因为每关都要通过,我们按Yi从小到大处理,f[i][j],pi[i][j]表示玩了i关,获得了j颗星的期望次数,概率 如果(n-i)*2=m-j,那接下来每关都要玩2星,也只会在这些关弄2星因为他们的Yi最大 否则我们只要求通过就行了 通过的期望次数是能算的,通过了后获得1/2颗星的期望是Xi:Yi,就可以dp了code:#includ

2017-11-19 17:22:58 350

原创 51nod 1487

注意到只能建2个塔,暴力枚举是k(n*m)^2的 但可以发现我们枚举了第一个塔后,第二个塔没有必要枚举,可以预处理第二个塔放在每个位置的价值,塞进一个堆里(事实上不需要堆…排个序就行了,还省个log…) 考虑到两个塔覆盖了重复的点只算一次,如果堆顶的塔与当前枚举的塔冲突就把他取出来算一下贡献,把所有冲突的拿出来后计算完贡献再把他们放回去,最多k^2个重复,复杂度 O(nmk2log(nm))O(

2017-11-19 17:19:57 439

原创 codeforces 891C

给出一个无向图,每次询问图中的一个边集,是否存在包含这个边集的MST考虑怎么判断是否存在包含某一条边的MST 若他不在原图的MST上,显然只能尝试用它替换一条权值相等的,MST上的边 设他的权值为c,可以先对权< c的边先做kruskal建出生成树,用这些边将原图缩点 然后若这条边在这个缩完点的图上不是自环,就合法对于每个询问的边集,不同的边权显然互相独立 这个边集合法的充要条件是每条边合法

2017-11-19 17:15:00 785

原创 BZOJ3728: PA2014Final Zarowki

贪贪贪将一开始的灯泡和房间从小到大排个序 房间倒着处理,每个房间找>=他的功率的还未匹配的最小的灯泡,将他们匹配上 找不到匹配的灯泡一定要花费一次替换,打个标记在上面,先不管他 匹配完房间如果已经不够替换就gg 否则将每个房间匹配的灯泡-他的要求塞进一个大根堆 去掉堆顶的剩余替换次数个code:#include<set>#include<map>#include<deque>#inc

2017-11-17 19:54:23 384

空空如也

空空如也

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

TA关注的人

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