自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

juruo? juruo!

青春从不辜负拼尽全力的你。

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

原创 bzoj1053: [HAOI2007]反素数ant

题面在这里 做法: 这题嘛看起来很恐怖啊= =n居然有20亿 然而其实我们只需枚举一下质因子的个数,而这个枚举量是很小的,因为前10个质数相乘就已经超过20亿了吧、、、 于是我取了前12个质数。 暴力dfs一下就行。/************************************************************* Problem: bzoj 1053 [H

2017-12-15 00:46:06 201

原创 bzoj1044: [HAOI2008]木棍分割

题面在这里 做法: 第一问直接二分答案。 第二问DP,我们定义f[i][j]f[i][j]表示前i根木棍分为j块的方案数。 首先要O(n)O(n)预处理出nxt[i]nxt[i]表示满足a[i]−a[k−1]<=resa[i]-a[k-1]<=res的最小的k。注意这里的a[]a[]是题目中数据的前缀和。然后转移方程是这样: f[i][1]=(a[i]<=res),f[i][j]=∑k=n

2017-12-14 22:07:25 209

原创 bzoj1041: [HAOI2008]圆上的整点

题面在这里 emmmm先来吐槽一下下~ %一发dsy上0ms的大佬们。。。 我就比较弱辣要200+ms,,QwQ 做法: 来做一些鬼畜的变形= = r2=x2+y2r^2=x^2+y^2 y2=r2−x2y^2=r^2-x^2 y2=(r+x)(r−x)y^2=(r+x)(r-x) y=(r+x)(r−x)−−−−−−−−−−−√y=\sqrt{(r+x)(r-x)} 设d=gc

2017-12-14 20:30:48 232

原创 bzoj1042: [HAOI2008]硬币购物

题面在这里 做法: 暴力dp显然要挂。 我们考虑先完全背包预处理出无限制的方案数。 然后考虑只有一个硬币有限制的情况。我们需要的答案应该等于f[tot]−f[tot−(bi+1)∗ai]f[tot] - f[tot-(b_i+1)*a_i],假定tot是总钱数,a是钱的面值,b是限制。至于为什么的话,一大佬题解里讲得挺清楚。链接 那么多种硬币都有限制就用一下容斥原理即可。/********

2017-12-14 15:39:08 230

原创 写在年末 the end of 2017

突然就很想感怀一下这一年。措手不及地来,又措手不及地走。毫无预知。一年刚开始的时候总还觉得遥遥无期,结束的时候却只能感叹时光易逝。或许这就是,只有失去了才会懂得珍惜的道理吧。2017。初二升初三。记得去年这个时候刚考完noip2016普及组,还在缅怀那不尽人意的成绩。同年级的选手纷纷一等了,准备明年冲提高组。而我拿着一个普及二等犹豫不决。这样的成绩,给人一种不踏实的感觉,你普及都考不到一等,凭什么去

2017-12-14 01:04:36 783 5

原创 poj3481 Double Queue(splay)

题面在这里 题目大意: 有一些人,每个人有一个名字和优先级。初始时队列为空。现在有33种操作:插入一个人;弹出优先级最大的那个人;弹出优先级最小的那个人。做法: 平衡树练习。直接上代码。/************************************************************* Problem: poj 3481 Double Queue Use

2017-12-09 18:00:13 318

原创 poj2985 The k-th Largest Group

题面在这里 题目大意: 有n个集合,每个集合有一个互不相同的元素。现在有两种操作:合并xx, yy所在的集合;询问第kk大的集合元素个数。做法: 并查集+平衡树。平衡树里维护每个集合的元素个数。/************************************************************* Problem: poj 2985 The k-th Largest

2017-12-09 15:53:33 220

原创 poj2892 Tunnel Warfare

题面在这里 题目大意: 有nn个物品排成一行。三种操作:DD xx 表示将第xx个物品摧毁;RR 表示将上一个物品回复;QQ xx 表示查询xx所在连通块的个数。做法: 平衡树中保存摧毁的物品编号。 查询时只需查询xx的前驱prepre后继nxtnxt,然后输出nxt−pre−1nxt-pre-1即可。/****************************************

2017-12-09 00:27:01 190

原创 poj2828 Buy Tickets

题面在这里 题目大意: 有一个队列,初始时为空。有nn个人,n<=200000n<=200000,有一个想去的位置和价值,每个人会依次将这个价值插入到它想去的位置上。这nn个人都插入队列后,输出这个队列。做法: 我们维护一个线段树,每个节点表示这个区间内剩下还有几个空位,初始时线段树每个节点值就等于区间长度。 考虑逆序操作。从nn~11枚举,插入时询问线段树左儿子剩下的空位够不够,如果够的就

2017-12-08 12:22:53 218

原创 bzoj3196: Tyvj 1730 二逼平衡树

题面在这里我去树套树真**丧心病狂… 神tm6KB代码,代码总长233行也是醉了。 做法: 额没什么好说的就是树套树的裸题。。自行体会。/************************************************************* Problem: bzoj 3196 Tyvj 1730 二逼平衡树 User: fengyuan Lan

2017-12-07 21:01:49 248

原创 bzoj3862: Little Devil I

题面在这里 题目大意: 给一棵树,每条边有黑白两种颜色。有3种操作:一条链上的边的颜色取反(黑->白,白->黑);与一条链相邻的边的颜色取反,相邻就是指只有一个点在链上的边;询问某条链上黑边的数量。开始时边的颜色都是白。做法: 1操作和3操作就是普通的树剖+线段树,很容易维护。 主要是2操作。 我们考虑维护两棵线段树,T[0]T[0]维护正常的边修改,T[1]T[1]是辅助用的,当

2017-12-07 11:17:10 297 2

原创 bzoj2325: [ZJOI2011]道馆之战

题面在这里 题目大意: 这题题目太长了就简单说一下题意。 给一棵树,每个节点分为两个区域A,B,在树上一个节点的某个区域,可以走到相邻节点的同一个区域,或同一个节点的另一个区域。每个区域内有两种状态,’.’表示冰,’#’表示障碍(障碍不能通过),给一些查询u, v,询问从u走到v能经过的最多冰的数量。同时还有一些修改操作,将某一点两个区域修改为s(s是长度为2的字符串)。做法: 这题花了我一

2017-12-06 17:57:03 313

原创 bzoj3531: [Sdoi2014]旅行

题面在这里 做法: 树剖+线段树动态开点。 容易想到对每个宗教建一棵线段树,不过空间限制不够,所以需要动态开点。别的都和正常树剖一样。代码如下:/************************************************************* Problem: bzoj 3531 [Sdoi2014]旅行 User: fengyuan Lang

2017-12-06 13:01:17 232

原创 做暗夜里的光

begin亲爱的你,是否想过,有一天夜晚,你被黑暗笼罩,没有路灯照明,也没有月光引路。你是否会迷茫无措,是否会无助颤抖? 我们总会有那么一天,有那么一瞬间,感觉似乎世界从来没有爱过你,一切都是一个完美的骗局。可是你知道吗? 我们每个人,都是从红尘中走来,风雨飘摇来到这世界。见过春花秋雨,也见过夏盛冬衰,体会过暖风熏人的舒适,也体会过寒风刺骨的冰冷。可是不管怎样,我们走过来了,走到了这一步,历尽艰

2017-12-06 12:14:31 788

原创 codeforces841E - On the Bench

题面在这里 题目大意: 给一个长度为n序列,n 做法: 很巧妙的DP+组合计数。 需要将数字分组。我们考虑将所有数字去掉平方因子后的数(相当于一个数开根号化成最简根式后根号里的数)相同的分到一组。 这个其实等价于,将所有数分解质因数后质因子的指数奇偶性相同的分到一组。 还等价于,两两之间相乘会变成平方数的分成一组。(额说到这了才是重点咳咳咳。。之前的帮助理解) 于是将问题转化为,

2017-12-06 11:39:22 338

原创 bzoj3626: [LNOI2014]LCA

题面在这里做法:首先说明以下都是以1为根的,点的编号是1~n。考虑最暴力的做法:对于一个询问l, r, z,将1~z的点全部打标记,枚举l~r之间的点u,从1~u的路上找到第一个打标记的点,答案就加上这个点的深度。然后稍微转化一下,假如把1~z的点权+1,然后对于l~r之间的点u,询问1~u之间的点权和,答案加上这个和。(正确性显然)再转化,我们把l~r之间的点u,1~u上点权

2017-12-05 23:21:56 240

原创 bzoj4034: [HAOI2015]树上操作

题面在这里做法:树剖。线段树维护区间和,打lazy标记。其中子树加就是在dfs序上in[x]到out[x]一段加。/************************************************************* Problem: bzoj 4034 [HAOI2015]树上操作 User: fengyuan Language: C++ R

2017-12-05 20:42:54 261

原创 poj2763 Housewife Wind

题面在这里题目大意:有一棵树,每条边有边权,一个人初始在s点。现在有两种操作,一是修改某条边的边权,二是询问这个人走到x点经过的边权总和,并移动到x点。做法:树剖。线段树维护区间和。(第一次树剖一次过qwq太感动了)/************************************************************* Problem: p

2017-12-05 18:13:47 404

原创 bzoj2243: [SDOI2011]染色

题面在这里做法:树剖,就是线段树上要做点文章。要维护区间左端和右端的颜色,要打覆盖标记。合并的时候注意相同颜色答案要减一。/************************************************************* Problem: bzoj2243 [SDOI2011]染色 User: fengyuan Language: C++

2017-12-05 01:42:31 221

原创 poj3237 Tree

题面在这里题目大意:有一棵树,要求支持树上单点修改,链取反(相反数),询问链上最大边权。做法:额....树剖裸题。维护一个线段树,打tag表示取不取反,然后线段树里要维护最大的和最小的值mx[o]和mi[o],更新的时候就是:swap(mx[o], mi[o]); mx[o] = -mx[o]; mi[o] = -mi[o]。然后先欣赏一下我的艰辛历程emmmm

2017-12-04 23:26:15 201

原创 hdu4348 To the moon

题面在这里题目大意:给一个序列,4种操作:C l r x    时间戳++,并把[l, r]区间内的数都加一。Q l r       询问当前时间戳的[l, r]区间和。H l r x    询问x时间戳的[l, r]区间和。B x        将当前时间戳更改为x。做法:做法就是主席树,每次更改的时候新建一颗线段树,并且维护一个lazy tag即可。

2017-12-03 17:45:36 300

原创 bzoj1573: [Usaco2009 Open]牛绣花cowemb

题面在这里明显不能暴力枚举两条直线。我们考虑怎样的情况会使得两条直线相交于圆内。如图:只有这种情况:两条线与圆的4个交点相间排列。故我们求出每条直线与圆的交点,把圆拉成一条线段,然后在线段上求交错的线段对数,树状数组+离散化即可。/*************************************************************

2017-12-03 12:36:12 777

原创 codeforces834D - The Bakery

题面在这里题目大意:给一个长度为n的序列(n DP+线段树。先设方程:f[i][j][k]表示前i个数,分成j个连续子序列,最后一个序列从k开始的最大价值和。两个转移:① 第i个和最后一个序列合并。如果k~i-1之间没有出现a[i],那么f[i][j][k] = f[i-1][j][k]+1.② 第i个作为新的一个序列的开始。在f[i-1][j-1][p]

2017-12-02 00:13:18 390

原创 回忆录

想要将oi旅程中的关键节点记录在这里。----------------------------------------------------------------------------------------------------------2017.12.1noip2017分数线划定。一等分数线360,我400。得了提高组一等奖。初三。第一次noip。2018.1.52018第一场cf。...

2017-12-01 19:23:48 465

原创 zoj2112 Dynamic Rankings

题面在这里题目大意:给一个序列,要求维护一个数据结构支持单点修改,区间查询第k大。动态第k大,树状数组套主席树。第一次写树套树。#include#include#include#include#include#include#include#include#include#define rep(i, x, y) for (int i = (x);

2017-11-29 23:12:06 264

原创 【Notes】【主席树】hdu2665 Kth number

题面在这里题目大意:给一个长为n的序列,m次询问,每次询问[l, r]内第k小的数是几。 n <= 100000, m <= 5000emmmm这题其实和poj2104一模一样的。不过poj的那题我用的是划分树,这题用一下主席树。(划分树是不支持修改的)主席树又名函数式线段树balabalabala....(关于主席树的简介包括名字来...

2017-11-27 23:49:36 17619 23

原创 【Notes】【划分树】poj2104 K-th Number

题面在这里题目大意:给一个长为n的序列,m次询问,每次询问[l, r]内第k大的数是几。 n 用了划分树,简单介绍一下。划分树,顾名思义是将n个数的序列不断划分,根结点就是原序列,左孩子保存父结点所有元素排序后的一半,右孩子也存一半,也就是说排名1 -> mid的存在左边,排名(mid+1) -> r的存在右边,同一结点上每个元素保持原序列中相对的顺序。

2017-11-27 20:45:59 287

原创 bzoj1208: [HNOI2004]宠物收养所

题面在这里splay练习,按题意模拟着做,每次找前驱后继即可。代码比较丑= = 而且里面有一些不必要的东西比如sz[]这个数组是不需要的。ps. wzp是一超级无敌巨佬名字,大家可以尽情地%他..../************************************************************* Problem: bzoj 1208 [HNOI20

2017-11-24 20:28:41 256

原创 bzoj1588: [HNOI2002]营业额统计

题面在这里splay练习,查找前驱后继即可。/************************************************************* Problem: bzoj 1588 [HNOI2002]营业额统计 User: fengyuan Language: C++ Result: Accepted Time: 176 ms Memory:

2017-11-22 22:09:23 217

原创 bzoj1036: [ZJOI2008]树的统计Count

题面在这里树链裸题。。直接上代码qwq/************************************************************* Problem: bzoj 1036 [ZJOI2008]树的统计Count User: fengyuan Language: C++ Result: Accepted Time: 2388 ms Mem

2017-11-18 21:31:55 271

原创 Codeforces round #446 (div2)

比赛链接(恩。。。noip后第一场cf,被虐地好惨啊。主要是T2打错了一个字母找了1h...居然只降了1分我感到很欣慰。。)言归正传qwq.

2017-11-18 10:04:00 289

原创 codeforces790B - Bear and Tree Jumps

题面在这里题目大意:有一棵树,在树上每一步 可以跳k条边。设f(s, t)表示从s到t的最小步数。求所有点对的f值之和。先考虑k = 1的情况,那么就是求树上任意两点的距离之和,相当于求每一条边被经过的次数,答案应该就是任意一条边左右两边点数的乘积之和。然后如果k != 1,那么在一条路径长度不被k整除的时候就会出现问题,因为有一个余数,这个余数我们需要再走一步。处理这

2017-11-17 21:58:02 367

原创 codeforces790A - Bear and Different Names

题面在这里题目大意:就是说有一个长度为n的名字序列,然后告诉你每连续m个里有没有重复的,有重复的就是NO,没有重复就是YES。让你构造一个合法的名字序列。一个简单的贪心思想,前m-1个赋值为1~m-1,每次有重复的就让他等于这m个的第一个,这样就不会对后面有影响。如果没有重复的就再新建一个。/*************************************

2017-11-17 20:46:00 294

原创 bzoj1034: [ZJOI2008]泡泡堂BNB

题面在这里排序+贪心。贪心策略就是说,对于a[],b[]分别维护两个指针,然后最弱的能打过就打最弱的,打不过的话,最强的能打过就打最强的,还是打不过的话就拿a[]最弱的打b[]最强的。然后这个是最好成绩。最差成绩就是把a,b反一反然后做出b的最好成绩,那么2*n-ans就是a的最差成绩。/*******************************************

2017-11-16 22:30:42 248

原创 bzoj1029: [JSOI2007]建筑抢修

题面在这里贪心是显然的吧。一个想法就是考虑按结束时间排序,然后能修就修,不能修就不修。但是明显是错的qwq。。因为你可以舍弃一些之前的来完成更多的任务。所以我们应该是舍弃掉之前做过时间最长的,正确性显然。然后用堆维护一下即可。/************************************************************* Problem

2017-11-16 21:56:34 258

原创 bzoj1024: [SCOI2009]生日快乐

题面在这里大暴力。。。首先考虑一个问题:如果一个矩形只能向一个方向切n-1刀,让每个矩形的长宽之比最大值最小,应该怎么切?显然是平均切成n份。但是这里不要求只能一个方向,我们可以对于一个矩形枚举它切在哪里,递归地处理切成的两个矩形就好了。/************************************************************* Pro

2017-11-16 21:08:58 362

原创 bzoj1019: [SHOI2008]汉诺塔

题面在这里首先f[i][j]表示第i个柱子上j个盘,移到g[i][j]上需要的步数。g[i][j]保存上述状态下移到哪个柱子。假设现在的状态是第x个柱子i个盘,设y = g[x][i-1],k = 3-x-y(k是剩下一个盘)然后我们考虑操作:肯定是把x上的i-1个先移到y,剩下一个移到k,再移动y上的i-1个盘。至于y上i-1个盘怎么移,需要分类讨论:如果g[y][i

2017-11-16 20:08:40 251

原创 51nod1495 中国好区间

题面在这里这题标签叫做“尺取法”。。一开始感觉很高级。。后来发现就是维护两个指针QAQ首先将题意转化一下,要求一个区间内的第k大的数>=T,相当于是这个区间内有>=k个数>=T,就是说我们把每个数如果>=T就打标记1,否则是0,然后满足条件的区间即需要区间内1的个数>=k。那么我们用一下前缀和s[i]表示前i个数内1的个数,然后如果一个区间[x, y]满足要求即需要s[y] - s[x

2017-11-15 22:48:43 293

原创 51nod1437 迈克步

题面在这里很裸的单调栈。。计算出每个数作为最小值的区间最大长度len,然后更新ans[len],最后倒着更新一遍ans[]就好了。很坑地要加读优输优。/************************************************************* Problem: 51nod 1437 迈克步 User: bestFy Language:

2017-11-15 19:44:50 294

原创 51nod1423 最大二“货”

题面在这里我们维护一个单调递减的栈,然后发现每次一个数进栈的时候,那些弹出栈的数都对应某一个区间的次大值(最大值就是要进栈的数),所以我们每次弹栈的时候更新一下答案就好了。然后这个只是次大值在最大值之前的情况,之后的情况再把a数组反过来操作一遍就行。/************************************************************* P

2017-11-15 17:04:12 379

空空如也

空空如也

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

TA关注的人

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