BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #98326同步于 2019/9/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

[不懂就问] 整除逆推算法题

ys19930828
2019/9/15镜像同步7 回复
遇到一道毫无思路的算法题,求走过路过的大佬留一下思路[ema1]
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
JSZKC机器人#1 · 2019/9/15
有提交地址吗?
ys19930828机器人#2 · 2019/9/16
没有 他就这几个测试用例 【 在 JSZKC 的大作中提到: 】 : 有提交地址吗?
allvphx机器人#3 · 2019/9/16
分两种情况进行处理,如果是中间有连续两个/连续三个字符出现,就可以知道他们的倍数关系,这样你可以把三个变量消成两个/一个变量。 变化后序列全都是一个变量,这样相邻两个变量建立一个大小关系不等式。 最后求出满足不等式下的最小解就可以了
JSZKC机器人#4 · 2019/9/16
满足不等式下的最小解怎么求,一系列形如 l1<=x/y<=r1 l2<=x/z>=r2 的约束怎么求整数解呀 【 在 allvphx 的大作中提到: 】 : 分两种情况进行处理,如果是中间有连续两个/连续三个字符出现,就可以知道他们的倍数关系,这样你可以把三个变量消成两个/一个变量。 : 变化后序列全都是一个变量,这样相邻两个变量建立一个大小关系不等式。 : 最后求出满足不等式下的最小解就可以了
nullne机器人#5 · 2019/9/16
太难了。。
rancho机器人#6 · 2019/9/16
补充一下3L的思路,我们在最前面加一个0,假如我们只看AB,现在序列是 AB B A A B A AB 从第一个AB开始,到第二个AB结束,AB只算一个的话,中间肯定经历的是A和B的公共倍数,这中间一共出现5个A,3个B,所以有 5A = 3B 所以最小的满足的就是 A = 3, B = 5 ,同样还可以列其他的方程 mA = nC kA = lD 把这些方程求一个最小整数解就可以了 例如给的例子 B, BC, AB, BC, B, ABC, B 我们在前面补一个ABC ABC, B, BC , AB, BC, B, ABC, B 现在只看AB AB, B, B, AB, B, B, AB, B 两个AB之间,只考虑一个AB,一共有1个A,3个B A = 3B 然后只看AC AC, C, A, C, AC 两个AC之间只考虑一个AC,一共有2个A,3个C 2A = 3C 求这两个方程的最小整数解,得到 A = 3,B = 1, C = 2 当然,考虑到有些字母没有出现一个完整循环节的情况,需要进一步验证,把求得的最小解带入验证,如果没有循环节的字母可以从小往大插空安排进去,符合预期,如果不能安排进去,求第二小最小解,然后再验证,如此循环直到OK 比如 A, B, D, C, A, AB 填充0 ABCD, A, B, D, C, A, AB 只看AB AB, A, B, A, AB 得到 3A = 2B 只看AC,得到 AC, A, C, A, A 没有解 只看AD,得到 AD, A, D, A, A 没有解 从A= 2,B = 3开始安排 0ABCD, 1, 2A, 3B, 4 不对(应该跟着A) 安排 A = 4, B= 6 0ABCD, 1, 2, 3, 4A, 5, 6B, 7D, 8不对,(应该跟着A) 安排 A = 6, B = 9 0ABCD, 1, 2, 3, 4, 5, 6A, 7, 8, 9B, 10D, 11C, 12A, 13, 14, 15, 16, 17, 18AB(验证通过) 最后A = 6, B = 9, C = 11, D =12
rancho机器人#7 · 2019/9/16
其实类似于 AC, A, C, A, A 还可以列出不等式 C>A 2A>C 2C>3A 可以降低验证的复杂度,这个看最后时间要求了 【 在 rancho 的大作中提到: 】 : 不难啊,我们在最前面加一个0,假如我们只看AB,现在序列是 : AB B A A B A AB : 从第一个AB开始,到第二个AB结束,AB只算一个的话,中间肯定经历的是A和B的公共倍数,这中间一共出现5个A,3个B,所以有 : ...................