2019 Multi-University Training Contest 7

看不见的后期

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 (1a, b, c10100000),求任意一组解 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) a10x+b10y=c10z (0x, y, z106)

题解

先将三个正整数的末尾零处理掉,然后分情况讨论。
第一种是直接把 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 1n, m, k109

题解

考虑一个问题,当我们的复习计划确定时,怎样分布难度系数才能使我做不出 K K K 道题目。
首先将我们每道题的用时从小到大排序,然后用时最多的 k − 1 k-1 k1 道问题难度系数设置为 0 0 0 ,先放我过 k − 1 k-1 k1 道题目,然后对于剩下的 n − k + 1 n-k+1 nk+1 道题目,每道题目的难度系数刚好设置为我的复习用时,这样就可以以最小的花费使得我正好解不出 K K K 道题目。
现在我们已经知道难度系数只会分布在我用时最少的 n − k + 1 n-k+1 nk+1 道题目了,那么我们只需使得用时最少的 n − k + 1 n-k+1 nk+1 道题的总用时为 m + 1 m+1 m+1 ,那么 m m m 个难度系数就无法限制到我了。
此时还需要使得最大的 K − 1 K-1 K1 道题目用时最小,那么就使得前 n − k + 1 n-k+1 nk+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+nK+1(m+1)×(K1)

1010 Just Repeat

题意

两个人各有一些手牌且互相知道对方的手牌组成,先手有 n n n 张,后手有 m m m 张,每张手牌都有一个权值,两个人轮流出牌,打出的牌的权值不能和对方已经打出的任意一张牌的权值相同,不能打出手牌的人判负(无手牌或者无可打出手牌都有可能)。
1 ≤ n ,   m ≤ 1 0 5 1\le n,\ m\le10^5 1n, m105

题解

先手有的牌,后手没有,或者后手有的牌,先手没有,这些牌都是双方一定能打出的。
对于双方都有的牌,把双方共同拥有的数量加起来,排个序,一定是从大到小取的。
因为打出一张牌,可以使得自己同种类的牌一定都能打出,且对方此种类的牌全都无法使用。
总收益就是双方拥有的数量之和。
为了卡我们,有些手牌是以随机生成器的方法给出的,可以使得 ∑ 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值