poj3539 Elevator——同余类bfs】的更多相关文章

题目:http://poj.org/problem?id=3539 题目大意是给定 a, b, c,求 1~h 内有多少个数可以被 a, b, c 通过加减法组成: 这是今天刚讲的神奇的——同余类 bfs 问题! 大概就是选定一个模数,就选最小的(常数可能会比较小?),不妨令作 a,构建一系列点,组成 mod a 剩余系: 然后我们要找到每个点的最小可达数,然后它加上若干个 a 就都是可达的: 对于一个点 x,它可以转移到 (x + b) % b,代价是 b :c 同理: 从起点开始 bfs,对…
Description Edward works as an engineer for Non-trivial Elevators: Engineering, Research and Construction (NEERC). His new task is to design a brand new elevator for a skyscraper with h floors. Edward has an idée fixe: he thinks that four buttons are…
题目:http://poj.org/problem?id=3539 考虑把层数分为模a剩余系.同类内可通过+若干个a走到. 不同类之间需要通过+b.+c来走到. 需要求出每一类中最小的能走到的.即最短路. 注意memset成0x3f!不要直接memset成1! 仔细一看,long long下赋1是17位,赋0x3f是19位.而h是18位. #include<iostream> #include<cstdio> #include<cstring> #include<…
同余类BFS的题,是个OIer基本上都会见过一些,最好的例子就是NOIP 2018 day1  T2---货币系统 虽然这题其实是什么背包就能解决的题目,但数据一变大,出题人坏一点,就没了.... 同余类BFS最早从国家集训队里被搞了出来:当时感觉好神奇,后来就变成了烂大街的套路题....------------cyr的经典名言 记得当时好像考试是还真有人打,好像还怪快的.... 推荐一个差不多就是模板的集训队题(传送门) 题目描述 墨墨突然对等式很感兴趣,他正在研究a_1x_1+a_2x_2+…
题意 有一部电梯,最初停在1层. 电梯有4个按键,上升a,b,c层,回到一层. 求从一层出发.能到达1~h的哪些楼层. (h<=1018,a,b,c<=105) 题解 这种h能大的图论,一眼就知道是同余类. 以模a[1]的余数为下标建立数组,数组的意义是模a[1]为下标的最小的能到达的值. 显然之后的相同模数的楼层都可以达到.统计答案即可. 处理数组用最短路就行. #include<iostream> #include<cstring> #include<algo…
2118: 墨墨的等式 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2944  Solved: 1206[Submit][Status][Discuss] Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. Input 输入的第一行包含3个正整数,分别表示N.BMin.BMax分别表示…
Time Limit: 4000MS   Memory Limit: 65536KB   64bit IO Format: %lld & %llu Description Edward works as an engineer for Non-trivial Elevators: Engineering, Research and Construction (NEERC). His new task is to design a brand new elevator for a skyscrap…
传送门 豪华升级版同余类最短路-- 官方题解 主要写几个小trick: \(1.O(nm)\)实现同余类最短路: 设某一条边长度为\(x\),那么我们选择一个点,在同余类上不断跳\(x\),可以形成一个环. 显然只有在同一个环上的两点之间才可能通过\(x\)进行转移.我们选择环上答案最小的点,它一定不会在当次更新时被更新答案,所以直接从这个点开始依次遍历环上的所有点,每一个点尝试从前面的一个点更新答案. \(2.\)将\(\mod n\)的同余类最短路变为\(\mod d\)的同余类最短路: 令…
题意 给出两个互质的数a,b问最大的不能被xa+yb(x,y>=0)表示的数.(a,b<=109) 题解 NOIPday1T1一道数论题,不知埋葬了多少人的梦想. 用同余类去解释. 我们依旧用数组来表示最小的模a等于下标的数.答案为这些数中最大的数-a. 设这些数中最大的数为x,在此之前其他的模数全都能表示,所以前a-1个数都可以被表示,所以x-a是第一个不能表示的数. 又因为a,b互质所以x为(a-1)*b. 故答案为 a*b-a-b.输出答案就可以了.然而我打了高精.…
声明:关于这题的$O(mn)$尚且未深入理解,虽然之前有跟这位神仙聊过做法但并没太懂.. $O(mn\log m)$同余最短路做法: 首先不妨抽出最小的$a_i=m$,那么剩余的$a$如果可以表示出$x$,那么$x+km$的所有数都可以表出.所以对于$m$的同一个同余类$i\in[0,m)$,我们希望求出$f_i=\min\{h|h\mod m=i\}$其中$h$是可以用其他$a$表出的,也就是用其他东西来表示出最小的.可以$\mod m=i$的数,这样,所有$h+km(k\in N)$都可以表…