学军中学6月培训第二次模拟赛

cly big duliu

ZOJ4112


河道


小N,小A,小T开学啦。这次,三个好朋友要去学农T_T。
学农,众所周知,有很多好玩的东西。
这次,三个人看到了一条名叫“逢坂”的大河。与此同时,有一位老农民姓高,名须龙,外号龙儿的老农民向三位介绍了这条河对于庄家灌溉的作用。
这里的庄稼可以抽象成M个点,河流连接了所有的庄稼,一共有M - 1条分支,每条分支连接两个点。
由于点是有高度的,所以说这里所有河流的分支,都是单向的。
由于龙儿的庄稼在1号点,所以其他的点的庄稼我们不需要管。而且龙儿保证,这条河的终点是1号点,即所有点都可以到1号点,也就是自己的庄稼。
现在下了一场暴雨。还好每个点都有水库。。。。。。(1号点是没有的)
但是,之后又是干旱,所以龙儿现在想要抽调各个点的水库里面的水,通过河流(河流现在已经干涸了,也就是说,所有的水都来自水库,也只有水库里面有水),来运输到1号点。(不要担心水库里的水在河道上会蒸发)
由于地球妈妈有地心引力,所以水流的流动方式非常特别。
龙儿会将时间离散,也就是说只有在每个时刻,水会流动,而不是一段时间内水流动。不懂?看下去。
一个点的水,可以通过河道,流到其他点的水,并且,在每个时刻,水的流动速度是无限的,也就是说,某个点的水可以在一个时刻流到任何它可以到达的位置。
但是每条河道的流量是固定的,你总不能让龙儿的河道泛滥吧。任意一个时刻,流过这条河道的水量是有上限的。
当然的龙儿想要知道经过t时刻,1好点最多可以接受多少的水。
下面举一个例子(就是样例)
1<--4<--2<--3 河道的样子。
0 3 1 4每个点的水库容量
2 2 1每条河道的容量
T = 4
当T = 1的时候,3号点的1单位水流向4号点,2号点的1单位水流向4号点,4号点2单位水流向1号点。此时水库容量是2 3 0 3
当T = 2的时候,4号点2单位水流向1号点,3号点1单位水流向4号点。此时水库的容量是4 2 0 2。
当T = 3 或 4的时候和T = 2时候一样。所以答案是8。

输入格式:

第一行有两个正整数,M和Query,表示点数和询问的个数。
接下来2 - M行,第i行有三个正整数,Ei,Ci,Li,分别表示,有一条i到Ei的有向边,i点的水库大小是Ci,这条有向边的容量是Li。
接下来有Query行,每行一个正整数t。

输出格式:

对于每个询问,输出1号点接受的最大水量。当然,一行一个答案。

样例输入:

4 1
4 1 2
2 4 1
1 3 2
4

样例输出:

8

数据范围:

数据编号 M Query
0 10 10
1 1000 100
2 1000 1000
3 10000 1000
4 10000 10000
5 100000 10000
6 100000 10000
7 100000 10000
8 50000 10000
9 50000 100

对于每个点原有的水量1000000000 >= Ci >= 0
对于每条边的流量限制1000000000 >= Li >= 0
对于询问100000000 >= T >= 1

时间限制:

1S

空间限制:

512M


自闭过程

这道题我过了。

题解

考虑对每个节点维护一个分段函数,横坐标是时间,纵坐标是这么长时间内能到达这个点并流向它的父亲的总流量。

对于每个叶节点显然是两段一次函数,使用std::set维护拐点(即斜率的变化量),向上启发式合并即可。在一个节点将所有的子树合并后,由于流向父亲的边的容量限制,需要用一个过原点的一次函数去削这个分段函数,暴力检查即可。

时间复杂度为\(O(n \log^2 n + q \log q)\)


苹果


龙儿的庄稼是苹果树。
这棵苹果树还是一颗变异过的树,简单来说,他的果实是金色的。每到秋天,他都会和自己的妻子来品尝金灿灿的苹果,当然了,味道什么的就不是很好了。
小N,小A,小T三个小朋友他们学农的时间正好也是秋天,正是苹果结出果实的时候。
为了款待小N,小A,小T和他们的同学,龙儿从树上摘了M个苹果,依次编号1 - M。毫无疑问的,苹果有好有坏,我们用一个美味值来定义苹果的美味程度。
同学的数量有K - 3个,加上小N,小A,小T,一共有K个同学。
龙儿表示,任何一个同学得到的苹果编号应该是连续的一段,一个苹果只能给一个人。苹果必须分完。这样子的话,每个人的享受度就是他获得的苹果的美味度的和。
由于龙儿是一个大好人,他希望苹果的分配方案比较公平,于是他希望让K个人里面,享受度最大的人的享受度最小。那这个值是多少呢?
这个问题不好解决,于是三个人来求助你。

区间 不!能!为!空!

输入格式:

第一行有两个正整数,M和K,表示苹果的数量和人数。
接下来一行有M个整数,第i个表示第i个苹果的美味度。

输出格式:

一行输出享受度最大的人的享受度。

样例输入:

4 2
5 5 5 15

样例输出:

15

数据范围:

数据编号 M 美味度
0 10 -10^4 - 10^4
1 100 -10^4 - 10^4
2 1000 -10^4 - 10^4
3 10000 0 - 10^4
4 15000 0 - 10^4
5 20000 -10^4 - 10^4
6 20000 -10^4 - 10^4
4 20000 -10^4 - 10^4
8 20000 -10^4 - 10^4
9 20000 -10^4 - 10^4

时间限制:

1S

空间限制:

512M


自闭过程

这不是二分答案裸题吗?

这不是二分答案裸题吗?

这不是二分答案裸题吗?

(看到了美味度可能为负数。)

好吧还真不是。

zbl,\(20pts\)滚粗了。

题解

仍然考虑二分答案,有一个结论,就是记\(mid\)的限制下最少划分成的段数为\(L\),最多划分成的段数为\(R\),那么如果有\(L \leq m \leq R\)成立,那么\(mid\)合法。(你说什么?证明?我没听见。)求\(L\)\(R\)可以通过数据结构优化DP实现。

时间复杂度为\(O(n \log^2 n)\)


划分星星


这个世界上有任何人都没有见过的东西
他很温柔 非常甜美
大概 如果可以看见的话
谁都会想要的吧
正因为如此
才会谁也没有见过它
为了让人无法那么轻易地得到
世界才把它藏了起来
但是总有一天会有人找到
应该得到的那个唯一的人
一定能把它找出来
它就是这样
做出来的
好,听着龙儿在扯自己和老婆的家常的时候,小N表示有点无趣了,毕竟身为一个妹子,虽然有很多小朋友向她表白,但是“小学生”。嗯,你懂得。
小A表示青梅竹马无聊,那么自然要和她玩游戏,解决一下心理上和生理上的问题啦。小T虽然笨,但是非常的贪玩,于是这次他拿出了一个PFP的游戏机。(学农是可以带的吧!)这个PFP游戏机上有一个游戏叫做“灿烂星空”(一听名字就知道是山寨的)。
小T表示自己太笨了,于是让小A和小N玩,自己和PFP作为裁判。
这个游戏是这样子的。
在一个直角坐标系上,有M颗星星,每个星有坐标,当然每个星星的位置都是整点。保证不会有两个星星在一起,不然就爆炸了。
接着,小N先画一条平行于Y轴的直线,这条直线必须至少经过一个星星,不然小N表示她画不出来。
接下来小A画一条平行于X轴的直线,这条线必须经过一个在小N画的直线上的星星。(妹子先手)
哎?这不是一个直角坐标系嘛?
然后是结算得分,小N的得分是右上角的第一象限和左下角的第三象限的星星个数,小A的得分是左上角的第二象限和右下角的第四象限的星星个数。注意,如果星星在小N或者小A画的直线上,那么这个星星是不计入任何一个人得分的。(就和象限的定义是一样的)

小 N 的策略是:最大化最坏情况下自己的得分,这个得分显然是唯一确定的,但是直线是不一定唯一确定的。(小 N 不知道 小 A 的策略)

小 A 的策略是:最大化自己的得分,显然这个得分依赖于小 N 选择哪一条直线。

输入格式:

第一行有一个正整数M,表示星星的个数。
接下来M行,每行两个整数,表示这颗星星的坐标。

输出格式:

请按照这样子的格式。
Sister N can get _ points!
Brother A can get _ _ _ _ points!
_是代替数字。第一行是小N的得分,第二行是小A的得分,注意从小到大输出哦。(要去重)

样例输入:

5
1 2
5 6
2 4
7 3
-5 6

样例输出:

Sister N can get 3 points!
Brother A can get 1 points!

数据范围:

数据编号 M
0 10
1 1000
2 10000
3 50000
4 100000
5 200000
6 200000
4 200000
8 200000
9 200000

坐标范围在-10^9 - 10^9

时间限制:

1S

空间限制:

512M


自闭过程

这道题我也过了。

(题面出锅差评。)

题解

签到题,直接无脑从左往右扫线段树维护就好了时间复杂度为\(O(n \log n)\)


总分:100+20+100=220pts

Rank:5

好像没前天那么惨了?

posted on 2019-06-08 13:10  ErkkiErkko  阅读(89)  评论(0编辑  收藏  举报