BZOJ4695 最假女选手 < SegBeats >
Problem
最假女选手
TimeLimit:50Sec
MemoryLimit:128MB
Description
在刚刚结束的水题嘉年华的压轴节目放水大赛中,wyywyy如愿以偿的得到了最假女选手的奖项。但是作为主办人的C_SUNSHINE为了证明wyywyy确实在放水,决定出一道基础题考察wyywyy的姿势水平。给定一个长度为N序列,编号从1到N。要求支持下面几种操作:
- 给一个区间[L,R]加上一个数x
- 把一个区间[L,R]里小于x的数变成x
- 把一个区间[L,R]里大于x的数变成x
- 求区间[L,R]的和
- 求区间[L,R]的最大值
- 求区间[L,R]的最小值
Input
第一行一个整数N表示序列长度
第二行N个整数Ai表示初始序列
第三行一个整数M表示操作个数
接下来M行,每行三或四个整数,第一个整数Tp表示操作类型,接下来L,R,X或L,R表述操作数
Output
对于每个4,5,6类型的操作,输出一行一个整数表示答案
BZOJ1006【HNOI2008】神奇的国度 <弦图+MCS>
Problem
【HNOI2008】神奇的国度
TimeLimit:20Sec
MemoryLimit:162MB
Description
K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则。他们认为三角关系:即A,B相互认识,B,C相互认识,C,A相互认识,是简洁高效的。
为了巩固三角关系,K国禁止四边关系,五边关系等等的存在。所谓N边关系,是指N个人A1,A2⋯An之间仅存在N对认识关系:(A1,A2)(A2,A3)⋯(An,A1),而没有其它认识关系。比如四边关系指A,B,C,D四个人 (A,B),(B,C),(C,D),(D,A)相互认识,而(A,C),(B,D)不认识。
全民比赛时,为了防止做弊,规定任意一对相互认识的人不得在一队。国王想知道,最少可以分多少支队。
Input
第一行两个整数N,M。表示有N个人,M对认识关系。
接下来M行每行输入一对朋友。
Output
输出一个整数,最少可以分多少队。
BZOJ1078【SCOI2008】斜堆 <可并堆>
Problem
【SCOI2008】斜堆
TimeLimit:10Sec
MemoryLimit:162MB
Description
斜堆(skewheap)是一种常用的数据结构。它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大。因此在整棵斜堆中,根的值最小。但斜堆不必是平衡的,每个结点的左右儿子的大小关系也没有任何规定。在本题中,斜堆中各个元素的值均不相同。
在斜堆H中插入新元素X的过程是递归进行的:
- 当H为空或者X小于H的根结点时X变为新的树根,而原来的树根(如果有的话)变为X的左儿子。
- 当X大于H的根结点时,H根结点的两棵子树交换,而X(递归)插入到交换后的左子树中。
给出一棵斜堆,包含值为0∼n的结点各一次。求一个结点序列,使得该斜堆可以通过在空树中依次插入这些结点得到。
如果答案不惟一,输出字典序最小的解。输入保证有解。
Input
第一行包含一个整数n。
第二行包含n个整数d1,d2,⋯,dn,di<100表示i是di的左儿子,di≥100表示i是di−100的右儿子。
显然0总是根,所以输入中不含d0。
Output
仅一行,包含n+1整数,即字典序最小的插入序列。
BZOJ2820 YY的GCD <莫比乌斯反演>
BZOJ1052【HAOI2007】覆盖问题 <二分答案>
Problem
【HAOI2007】覆盖问题
TimeLimit:10Sec
MemoryLimit:162MB
Description
某人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L×L的正方形塑料薄膜将小树遮起来。我们不妨将山建立一个平面直角坐标系,设第i棵小树的坐标为(Xi,Yi),3个L×L的正方形的边要求平行与坐标轴,一个点如果在正方形的边界上,也算作被覆盖。当然,我们希望塑料薄膜面积越小越好,即求L最小值。
Input
第一行有一个正整数N,表示有多少棵树。
接下来有N行,第i+1行有2个整数Xi,Yi,表示第i棵树的坐标,保证不会有2个树的坐标相同。
Output
一行,输出最小的L值。
BZOJ1430 小猴打架 < Prufer序列+组合数学 >
Problem
小猴打架
TimeLimit:5Sec
MemoryLimit:162MB
Description
一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友。每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友。经过N−1次打架之后,整个森林的小猴都会成为好朋友。 现在的问题是,总共有多少种不同的打架过程。 比如当N=3时,就有{1−2,1−3} {1−2,2−3} {1−3,1−2} {1−3,2−3} {2−3,1−2} {2−3,1−3}六种不同的打架过程。
Input
一个整数N,N≤106
Output
一行,方案数mod9999991。
BZOJ1027【JSOI2007】合金 <凸包+Floyed>
Problem
【JSOI2007】合金
TimeLimit:4Sec
MemoryLimit:162MB
Description
某公司加工一种由铁、铝、锡组成的合金。他们的工作很简单。首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同。然后,将每种原材料取出一定量,经过融解、混合,得到新的合金。新的合金的铁铝锡比重为用户所需要的比重。 现在,用户给出了n种他们需要的合金,以及每种合金中铁铝锡的比重。公司希望能够订购最少种类的原材料,并且使用这些原材料可以加工出用户需要的所有种类的合金。
Input
第一行两个整数m和n(m,n≤500),分别表示原材料种数和用户需要的合金种数。第2到m+1行,每行三个实数a,b,c(a,b,c≥0且a+b+c=1),分别表示铁铝锡在一种原材料中所占的比重。第m+2到m+n+1行,每行三个实数a,b,c(a,b,c≥0且a+b+c=1),分别表示铁铝锡在一种用户需要的合金中所占的比重。
Output
一个整数,表示最少需要的原材料种数。若无解,则输出–1。
BZOJ1095【ZJOI2007】Hide捉迷藏 <括号序列+线段树>
Problem
【ZJOI2007】Hide捉迷藏
TimeLimit:40Sec
MemoryLimit:256MB
Description
捉迷藏Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N−1条双向走廊组成,这N−1条走廊的分布使得任意两个屋子都互相可达。
游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们只会躲藏在没有开灯的房间中,但是为了增加刺激性,孩子们会要求打开某个房间的电灯或者关闭某个房间的电灯。为了评估某一次游戏的复杂性,Jiajia希望知道可能的最远的两个孩子的距离(即最远的两个关灯房间的距离)。
我们将以如下形式定义每一种操作:
- C(hange)i :改变第i个房间的照明状态,若原来打开,则关闭;若原来关闭,则打开。
- G(ame) :开始一次游戏,查询最远的两个关灯房间的距离。
Input
第一行包含一个整数N,表示房间的个数,房间将被编号为1,2,3⋯N的整数。接下来N−1行每行两个整数a,b,表示房间a与房间b之间有一条走廊相连。接下来一行包含一个整数Q,表示操作次数。接着Q行,每行一个操作,如上文所示。
Output
对于每一个操作G(ame),输出一个非负整数,表示最远的两个关灯房间的距离。
若只有一个房间是关着灯的,输出0;若所有房间的灯都开着,输出−1。
BZOJ1068【SCOI2007】压缩 <区间DP>
Problem
【SCOI2007】压缩
TimeLimit:1Sec
MemoryLimit:128MB
Description
给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息。压缩后的字符串除了小写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一个M(如果当前位置左边没有M,则从串的开始算起)开始的解压结果(称为缓冲串)。 bcdcdcdcd可以压缩为bMcdRR,下面是解压缩的过程:
另一个例子是abcabcdabcabcdxyxyz可以被压缩为abcRdRMxyRz。
Input
输入仅一行,包含待压缩字符串,仅包含小写字母,长度为n。
Output
输出仅一行,即压缩后字符串的最短长度。