海亮游记DAY1

额……这几天来补一下原来欠的博客(

好了,言归正传,今天是来海亮的学习的第一天,嗯,一来就考试,搞什么啊~~

先把题目放出来:

1.黑客的平均数

  (average.cpp)

【时空限制】

    时间限制:4s

    空间限制:256MB

【问题描述】

Chty_syq是一名黑客,但是他运气不佳,选课时段来临时,他选的课全都掉了,因此他想要侵入浙江大学教务网报复那些抢他课的欧皇。

在入侵的过程中,Chty_syq得到了一串密钥,这个密钥是一个长度为n的序列,为了破解这个密钥,他必须求出序列中一段连续子序列的最大平均值,且这个连续子序列的长度不小于k。

众所周知,Chty_syq不屑于做这种简单的问题,于是他把这个问题扔给了你,如果你能解决这个体力活,他将不再嘲笑你。

【输入格式】

       第一行两个正整数n,k。

       第二行n个整数表示这个序列。

【输出格式】

       一个浮点数表示答案,保留6位小数。

【输入输出样例1】

average.in 

average.out

4 3

3 4 1 2

2.666667

【输入输出样例2】

average.in

average.out

8 6

4 7 9 5 8 1 9 10

7.000000

【数据范围】

对于30%的数据,

对于100%的数据,

2.染色

  (color.cpp)

时空限制

    时间限制:1.5s

    空间限制:256MB

【问题描述】

纵横交错兮天下之局,谁能参悟兮世事如棋。世事难料,亦如棋局之难料。

Chty_syq偶然间获得了一个棋局,传说其中暗含天机。已知棋局上有n个棋子,第i个棋子的坐标为,为了破解天机,需要对这些棋子进行黑白染色,然后分别计算黑色棋子两两间曼哈顿距离的最大值A,以及白色棋子两两间曼哈顿距离的最大值B,如果能求出一种染色方案使得的值最小,Chty_syq就能勘破天机。

注:两点的曼哈顿距离定义为

但是这个问题太简单了以至于Chty_syq不屑于去做,于是他把窥探天机的机会留给了你,你需要求出这个最小值,以及最小值对应的染色方案的数量。

【输入格式】

第一行,一个整数n表示棋子个数。

接下来n行,每行两个整数,表示棋子的坐标。

建议本题不要使用纯cin读入数据。

【输出格式】

一行两个整数,分别表示最小值及其对应的方案数。

方案数对取模。

【输入输出样例1】

color.in 

color.out

2

0 0

1 1

0 2

【输入输出样例2】

color.in 

color.out

4

0 0

0 1

1 0

1 1

1 4

【输入输出样例3】

color.in 

color.out

3

0 0

1000 1000

5000 5000

2000 2

【数据范围】

对于20%的数据,

对于40%的数据,

对于60%的数据,

对于100%的数据,

3.水群合并计划

  (group.cpp)

【时空限制】

    时间限制:1.5s

    空间限制:128MB

【问题描述】

我们知道,海亮中学信奥群禁止水群,于是同学们密谋另外建立一个群用来水群。由于群主可以为所欲为,所以每个同学都想成为群主,于是开始的时候,每个人都建立了一个群,群里只有一个人,显然这是水不起来的,于是在机房大佬范晨阳的带领下,开始把所有的群合并为一个大群,史称“水群合并计划”。

合并计划如下:每个群的群员都有一个编号,对于一个n个人的群,群员从进行编号。对于2个群,先找出一个人数较少的群(如果两群人数相等则随便挑选一个)A,假设其人数为,接着我们将另一人数较多的群B的所有成员的编号都加上,并将这些成员全部加入群A。除此之外,一个群在一天内只能参与一次合并,也就是说在某一天合并而成的新群在当天不能再次参与合并。

众所周知,OI 圈中盛行互膜。当2个群合并时,他们之间的一些群成员会进行互膜。对于每个原 B 群中的成员,假设其在新群中的编号为(),那么他会与新群中编号为的成员互膜。

现在我们知道最终的大群里有n个人,以及m条互膜记录,请你验证最初的群是否能够通过合法的合并操作得到这些互膜记录。如果答案是肯定的,求出完成“水群合并计划”的最小天数d。

【输入格式】

       本题有多组数据,第一行一个整数 T,表示数据组数,接下来依次描述各组数据。

第一行2个整数n,m,意义见题目描述。

接下来m行,每行2个整数 u,v,描述了当前群内编号为 u 的成员和当前群内编号

为v的成员曾经互膜过一次(他们进行这次互膜时的编号并不一定为 u 和 v)。

需要注意的是,这些互膜记录并不一定是按时间顺序给出的。

【输出格式】

       对于每组数据,输出一行:如果该群不合法,输出,否则输出最小的 d。

【输入输出样例1】

group.in

group.out

2

1 0

2 0

0

-1

【输入输出样例2】

group.in

group.out

2

3 3

0 1

0 2

1 2

4 6

0 1

1 2

2 3

3 0

0 2

1 3

2

3

【数据范围】

对于10% 的数据,保证 T = 1

对于20% 的数据,保证 n≤10,m≤10

对于50% 的数据,保证 n≤1000

对于100% 的数据,保证 T≤10,1≤n≤100000,0≤m≤100000,0≤u,v< n

 这个就是题目,

然后对于T1:

这是一道sb题(借用一下_liurunda之名言)

原谅我的懒惰,很清楚的,

下面我们去看一看T2:

这道题中间需要用到一个距离的转化(即:曼哈顿距离转化为切比雪夫距离),这个转化其实也很简单,就是将坐标轴旋转45度即可

原文地址:https://www.cnblogs.com/xishirujin/p/11241144.html