Difference between revisions of "CCPC-Wannafly Winter Camp Day1 (Div 1)"
Xiejiadong (talk | contribs) |
Xiejiadong (talk | contribs) |
||
Line 9: | Line 9: | ||
题意:在平面上,有$(1,0)-(n,0),(1,k)-(n,k),(0,0)-(0,k),(n,0)-(n,k)$四条线段,以及若干$(i,0)-(i,k)$的线段。在$(1,0)-(n,0),(1,k)-(n,k)$上各有一些需要经过的点,只能在线段交点上拐弯或掉头,求出一条从给定在$(1,0)-(n,0)$上的起点出发,经过$(1,0)-(n,0),(1,k)-(n,k)$上所有给出的点,并回到起点的最短路径。 | 题意:在平面上,有$(1,0)-(n,0),(1,k)-(n,k),(0,0)-(0,k),(n,0)-(n,k)$四条线段,以及若干$(i,0)-(i,k)$的线段。在$(1,0)-(n,0),(1,k)-(n,k)$上各有一些需要经过的点,只能在线段交点上拐弯或掉头,求出一条从给定在$(1,0)-(n,0)$上的起点出发,经过$(1,0)-(n,0),(1,k)-(n,k)$上所有给出的点,并回到起点的最短路径。 | ||
− | 题解:在一般情况下,最优的情况是选择两条能包含所有点的与$y$轴平行的线段构成的环,但在特殊情况下可能是由两条往返于起点的重合边与一个环构成,需要对于$(1,0)-(n,0),(1,k)-(n,k)$上有无点的情况,以及起点在$(1,0)-(n,0)$上所有点的左右两侧或是中间的情况,共$3 \times 3 = 9$ | + | 题解:在一般情况下,最优的情况是选择两条能包含所有点的与$y$轴平行的线段构成的环,但在特殊情况下可能是由两条往返于起点的重合边与一个环构成,需要对于$(1,0)-(n,0),(1,k)-(n,k)$上有无点的情况,以及起点在$(1,0)-(n,0)$上所有点的左右两侧或是中间的情况,共$3 \times 3 = 9$种情况分类讨论。 |
== Problem B == | == Problem B == |
Revision as of 15:33, 29 January 2019
CCPC-Wannafly Winter Camp Day1 (Div 1)
Problem A
Solved.
不怎么温暖的签到。
题意:在平面上,有$(1,0)-(n,0),(1,k)-(n,k),(0,0)-(0,k),(n,0)-(n,k)$四条线段,以及若干$(i,0)-(i,k)$的线段。在$(1,0)-(n,0),(1,k)-(n,k)$上各有一些需要经过的点,只能在线段交点上拐弯或掉头,求出一条从给定在$(1,0)-(n,0)$上的起点出发,经过$(1,0)-(n,0),(1,k)-(n,k)$上所有给出的点,并回到起点的最短路径。
题解:在一般情况下,最优的情况是选择两条能包含所有点的与$y$轴平行的线段构成的环,但在特殊情况下可能是由两条往返于起点的重合边与一个环构成,需要对于$(1,0)-(n,0),(1,k)-(n,k)$上有无点的情况,以及起点在$(1,0)-(n,0)$上所有点的左右两侧或是中间的情况,共$3 \times 3 = 9$种情况分类讨论。
Problem B
Unsolved.
Problem C
Solved.
温暖的签到
题意:给两个long long范围之内的数$A, B>=5$,求一种拆分使得$\sum_{i=1}^{n}{a_i}=A,\sum_{i=1}^{n}{b_i}=B,gcd(a_i,b_i)=1$如果有多个输出n最小的一个
思路:随机就完事了。。特判完$n=1$就随机划分成两个数直到找到解为止,不可能无解
Problem D
Unsolved.
Problem E
Unsolved.
Problem F
Solved.
签到
题意:爬山,一开始在1号山上,体力为k。每上升1m减少一点体力,下降1m增加一点体力。给出每个山的高度和它们之间的路径,可以减少山的高度,减少l花费l*l。总代价为路径长度和减少山高度的花费,求1到n的最少花费。
思路:显然体力和山的高度的和不变,所以体力根本不大需要关注。如果到点k体力不够就减少高度使得体力刚好够到k,这个花费应该加到终点为k的边的长度上。剩下的就是最短路了。
Problem G
Unsolved.
Problem H
Unsolved.
Problem I
Unsolved.
Problem J
Solved.
题意:$n$个人共有$m$件物品,现在一个人要购买这些物品,使得他拥有的物品数严格大于每一个人,求最小代价。
题解:从大到小枚举剩下的人中拥有物品最多的人拥有的物品数。
首先,对每个人拥有的物品按照价格降序排列,在拥有物品最多的人拥有$k$件物品时,首先,每个人拥有的下标$>k$个的物品必须全部被选上。然后,再在剩下的物品中选取最小的若干个,使得拥有的物品数量总和$>k$。因此,我们可以用$set$维护每个人拥有的下标$\le k$的物品。每次从$k$推到$k-1$时,从集合中删去所有下标$=k$的物品,全部加到答案中,再一直将集合中最大的物品弹出,直到拥有的物品总数$=k$或集合为空。
然后,对每一次的答案取$min$,就是要输出的答案。
Problem K
Unsolved.