hdu 5636 搜索 BestCoder Round #74 (div.2)
Shortest Path
Accepts: 40
Submissions: 610
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
问题描述
有一条长度为n的链. 节点i和i+1之间有长度为1的边. 现在又新加了3条边, 每条边长度都是1. 给出m个询问, 每次询问两点之间的最短路.
输入描述
输入包含多组数据. 第一行有一个整数T, 表示测试数据的组数. 对于每组数据: 第一行包含2个整数n和m (1≤n,m≤105)表示节点的数目和询问数目. 接下来一行包含6个有空格分开的整数a1,b1,a2,b2,a3,b3 (1≤a1,a2,a3,b1,b2,b3≤n), 表示新加的三条边为(a1,b1), (a2,b2), (a3,b3). 接下来m行, 每行包含两个整数si和ti (1≤si,ti≤n), 表示一组询问. 所有数据中m的和不超过106.
输出描述
对于每组数据, 输出一个整数S=(i=1∑mi⋅zi) mod (109+7), 其中zi表示第i组询问的答案.
输入样例
1 10 2 2 4 5 7 8 10 1 5 3 1
输出样例
7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | /* hdu 5636 搜索 BestCoder Round #74 (div.2) 给你一条链,每两个节点之间的距离是1,然后加上3条边。 m个询问,[l,r]之间的最短路 表示最开始想的是每个询问查找一次最小值,但是思路还是有问题,准确的说只有3 条捷径会对最后的答案造成影响。所以每次我们只需要枚举走过捷径的数目以及进入 的位置,找出最小值即可。 正解: 通过搜索,可以找出走3条捷径的所有情况,然后取出最小值即可 hhh-2016-03-05 21:43:51; */ #include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <map> #include <queue> #include <algorithm> using namespace std; typedef long long ll; #define LL(x) (x<<1) #define RR(x) (x<<1|1) #define MID(a,b) (a+((b-a)>>1)) const int maxn=100005; const int MOD = 1e9+7; int tx[5],ty[5]; int vis[5],l,r; ll ans ; void fin( int now,ll len) { if (len+ abs (r-now)<ans) ans = (ll)(len+ abs (r-now))%MOD; for ( int i =1;i <= 3;i++) { if (!vis[i]) { vis[i] = 1; fin(tx[i], abs (len+ abs (ty[i]-now))+1); fin(ty[i], abs (len+ abs (tx[i]-now))+1); vis[i] = 0; } } } int main() { int t,n,q; scanf ( "%d" ,&t); while (t--) { scanf ( "%d%d" ,&n,&q); for ( int i =1;i <= 3;i++) { scanf ( "%d%d" ,&tx[i],&ty[i]); } ll sum = 0; for ( int i =1;i <= q;i++) { scanf ( "%d%d" ,&l,&r); ans = abs (l-r); fin(l,0); sum=(ll)(sum+(ll)(ans*i)%MOD)%MOD; // cout << ans <<endl; } printf ( "%I64d\n" ,sum%MOD); } return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步