看不见的后期
1001 A + B = C
题意
给出三个正整数 a , b , c ( 1 ≤ a , b , c ≤ 1 0 100000 ) a,\ b,\ c\ (1\le a,\ b,\ c\le10^{100000}) a, b, c (1≤a, b, c≤10100000),求任意一组解 x , y , z x,\ y,\ z x, y, z使得下式成立。 a ⋅ 1 0 x + b ⋅ 1 0 y = c ⋅ 1 0 z ( 0 ≤ x , y , z ≤ 1 0 6 ) a\cdot10^x+b\cdot10^y=c\cdot10^z\ (0\le x,\ y,\ z\le10^6) a⋅10x+b⋅10y=c⋅10z (0≤x, y, z≤106)
题解
先将三个正整数的末尾零处理掉,然后分情况讨论。
第一种是直接把
a
,
b
a,\ b
a, b 相加,然后再处理掉末尾零,与
c
c
c 比较,看是否合法。
第二种选择
a
,
b
a,\ b
a, b 中的一个数字不添加末尾零,给另一个数字添加末尾零,那么可以知道,选出来的数字先尽量逐位和
c
c
c 的末尾进行比对,失配的时候再加上
b
b
b。
相当于是做了三次高精度加法,所以整体复杂度是
O
(
l
e
n
)
O(len)
O(len)的。
zxt的做法就比较NB了,因为是加法,加法在位数上最多进一位,所以首先给
a
,
b
,
c
a,\ b,\ c
a, b, c补零,分四种情况:
a
a
a 是否比
c
c
c 少一位,
b
b
b 是否比
c
c
c 少一位。
然后用双Hash判断
a
,
b
a,\ b
a, b加起来是否是
c
c
c 。
1006 Final Exam
题意
已知一次考试有
n
n
n 道题目,每道题目都有一个难度系数
x
x
x,解出这道题目需要花费
x
+
1
x+1
x+1的时间,已知这
n
n
n 道题目的难度系数总和是
m
m
m 。你需要制定一种复习方案,使得难度系数无论怎么分布,你总能至少解出
k
k
k 道题,且此时总用时最小。
1
≤
n
,
m
,
k
≤
1
0
9
1 \le n,\ m,\ k\le 10^9
1≤n, m, k≤109
题解
考虑一个问题,当我们的复习计划确定时,怎样分布难度系数才能使我做不出
K
K
K 道题目。
首先将我们每道题的用时从小到大排序,然后用时最多的
k
−
1
k-1
k−1 道问题难度系数设置为
0
0
0 ,先放我过
k
−
1
k-1
k−1 道题目,然后对于剩下的
n
−
k
+
1
n-k+1
n−k+1 道题目,每道题目的难度系数刚好设置为我的复习用时,这样就可以以最小的花费使得我正好解不出
K
K
K 道题目。
现在我们已经知道难度系数只会分布在我用时最少的
n
−
k
+
1
n-k+1
n−k+1 道题目了,那么我们只需使得用时最少的
n
−
k
+
1
n-k+1
n−k+1 道题的总用时为
m
+
1
m+1
m+1 ,那么
m
m
m 个难度系数就无法限制到我了。
此时还需要使得最大的
K
−
1
K-1
K−1 道题目用时最小,那么就使得前
n
−
k
+
1
n-k+1
n−k+1 道题目用时尽量平均。
答案为
m
+
1
+
⌈
(
m
+
1
)
n
−
K
+
1
⌉
×
(
K
−
1
)
m+1+\lceil \frac{(m+1)}{n-K+1}\rceil \times(K-1)
m+1+⌈n−K+1(m+1)⌉×(K−1)
1010 Just Repeat
题意
两个人各有一些手牌且互相知道对方的手牌组成,先手有
n
n
n 张,后手有
m
m
m 张,每张手牌都有一个权值,两个人轮流出牌,打出的牌的权值不能和对方已经打出的任意一张牌的权值相同,不能打出手牌的人判负(无手牌或者无可打出手牌都有可能)。
1
≤
n
,
m
≤
1
0
5
1\le n,\ m\le10^5
1≤n, m≤105
题解
先手有的牌,后手没有,或者后手有的牌,先手没有,这些牌都是双方一定能打出的。
对于双方都有的牌,把双方共同拥有的数量加起来,排个序,一定是从大到小取的。
因为打出一张牌,可以使得自己同种类的牌一定都能打出,且对方此种类的牌全都无法使用。
总收益就是双方拥有的数量之和。
为了卡我们,有些手牌是以随机生成器的方法给出的,可以使得
∑
n
+
m
=
1
0
7
\sum n+m=10^7
∑n+m=107,map白给了,只sort一边好好写模拟过的。
1010 Kejin Player
题意
我写1001的时候队友弄的。
题解
队友过了就是我过了,队友会了就是我会了(振声)
补题
- 1001
- 1006
- 1010
- 1011
看题
1002
1003
1004
1005
1007
1008
1009