哈哈哈哈,我就知道这道题目再扔给我,我还是不会,就是这么菜,哈哈哈

一开始官方题解就没搞懂…然后就看了一下别人的代码,水水过就算了。今天拿到…GG;

题意:

一开始,有一张原图,有一条长度为n的链. 节点i和i+1之间有长度为1的边.

现在又新加了3条边, 每条边长度都是1. 给出m个询问, 每次询问两点之间的最短路.

然后让你算出对于每组数据, 输出一个整数S=(∑i=1mi⋅zi) mod (109+7), 其中zi表示第i

组询问的答案.

官方题解:

你可以选择分类讨论, 但是估计可能会写漏一些地方. 只要抽出新增边的端点作为关键点, 建立一个新图, 然后跑一遍floyd就好了. 复杂度大概O(6^2⋅m)

然后继续摸着摸着发现,也可以说是感觉到。

我们在一个用领接矩阵所存储的图中,求一个点到一个点的最短距离,无非就是min(两点间直接多长,点1经过一些最短路到达点2);

这一题让我体会很多:

第一:

利用一个图来进行操作,那么无可厚非这个图里面点之间的距离就是最短距离。建图啊建图,这只是个初始化的过程,在第二遍拿起这道题的时候还是错了。

第二:

利用图这个过程,那么就是经过与不经过的问题;还有这道题目让我体会最深的就是怎么经过,在纸上画了一下,瞬间爆炸,我floyd的精华一点都不知道啊!

过程,过程!!!

这道题目显示了自己:1,基础差! 2,floyd算法没理解!还是太菜,太菜。

#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
typedef long long LL;
LL mod=1e9+7;
LL INF=0x3f3f3f3f;
int n;
LL bmap[10][10];
LL cp[110]; void init()
{
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
bmap[i][j]=bmap[j][i]=abs(cp[i]-cp[j]);
}
}
} void debug()
{
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
printf("%d ",bmap[i][j]);
printf("\n");
}
} void floyd()
{
int k,i,j;
for(k=0; k<6; k++)
{
for(i=0; i<6; i++)
{
for(j=0; j<6; j++)
{
bmap[i][j]=min(bmap[i][j],bmap[i][k]+bmap[k][j]);
}
}
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int num;
scanf("%d%d",&n,&num);
for(int i=0; i<6; i++)
{
scanf("%d",&cp[i]);
}
init();
bmap[0][1]=bmap[1][0]=1;
bmap[2][3]=bmap[3][2]=1;
bmap[4][5]=bmap[5][4]=1; //建图,要想在一张图上进行操作,则所必须的就是保证这张图就是最完美(最短路)的图,所以跑一下floyd;
floyd(); // debug(); LL ans=0;
for(int p=1; p<=num; p++)
{
int u,v;
scanf("%d%d",&u,&v);
LL sum=abs(u-v); for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++) //跑一跑最短路
{
sum=min(sum,abs(u-cp[i])+abs(v-cp[j])+bmap[i][j]);
sum=min(sum,abs(v-cp[i])+abs(u-cp[j])+bmap[i][j]);
}
}
ans=(ans+(p*sum)%mod)%mod;
}
printf("%lld\n",ans);
}
return 0;
}

BestCoder Round #74 (div.1) 1002Shortest Path(hdoj5636)的更多相关文章

  1. hdu 5636 搜索 BestCoder Round #74 (div.2)

    Shortest Path  Accepts: 40  Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: ...

  2. hdu5635 BestCoder Round #74 (div.2)

    LCP Array  Accepts: 131  Submissions: 1352  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 13 ...

  3. BestCoder Round #67 (div.2) N bulbs(hdu 5600)

    N bulbs Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  4. Codeforces Round #368 (Div. 2) B. Bakery (模拟)

    Bakery 题目链接: http://codeforces.com/contest/707/problem/B Description Masha wants to open her own bak ...

  5. BestCoder Round #74 (div.2)

    组合 1001 LCP Array 第一题就小难,出题的好像是浙大的大牛? 找到一个规律:a[i] = x, s[i..i+x]都想同.a[i] = a[i+1] + 1 (a[i] > 0), ...

  6. hdu 5637 BestCoder Round #74 (div.2)

    Transform  Accepts: 7  Submissions: 49  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 131072 ...

  7. HDU5638 / BestCoder Round #74 (div.1) 1003 Toposort 线段树+拓扑排序

    Toposort   问题描述 给出nn个点mm条边的有向无环图. 要求删掉恰好kk条边使得字典序最小的拓扑序列尽可能小. 输入描述 输入包含多组数据. 第一行有一个整数TT, 表示测试数据组数. 对 ...

  8. Codeforces Round #284 (Div. 2) C题(计算几何)解题报告

    题目地址 简要题意: 给出两个点的坐标,以及一些一般直线方程Ax+B+C=0的A.B.C,这些直线作为街道,求从一点走到另一点需要跨越的街道数.(两点都不在街道上) 思路分析: 从一点到另一点必须要跨 ...

  9. Codeforces Round #262 (Div. 2) 460C. Present(二分)

    题目链接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...

随机推荐

  1. Multiple analytic account plans多辅助核算方案

    定义核算方案     菜单 会计/设置/辅助核算会计/多个方案         点击"创建"按钮         说明 辅助核算方案,输入方案名称     点击"添加一个 ...

  2. vim note (1)

    'vim' go into the vim mode 'i' 'a' 's'    is means insert mode 'v' is means visual mode 'esc' is mea ...

  3. 2015-03-12---外观模式,建造者模式(附代码),观察者模式(附代码),boost库应用

    今天白天主要看了boost库的应用,主要是经常使用的一些库,array,bind,function,regex,thread,unordered,ref,smartpointers库,晚上看了看设计模 ...

  4. tabhost实现android菜单切换

    做APP项目已经有半个月了.慢慢地熟悉了这个开发环境和开发套路. 虽然是摸着石头过河.但也渐渐看到了水的深度! 作为一个电商项目APP,势必会涉及究竟部菜单条的功能.自己实现这个功能的过程是崎岖的,最 ...

  5. @Transactional 无效的解决方案

    1 .在需要事务管理的地方加@Transactional 注解.@Transactional 注解可以被应用于接口定义和接口方法.类定义和类的 public 方法上 . 2 . @Transactio ...

  6. Arcgis Engine(ae)接口详解(5):IGeometry几何高级操作

    IPoint point = new PointClass(); point.PutCoords(, ); //ITopologicalOperator接口用于几何对象的几何操作 ITopologic ...

  7. 每日五题(Spring)

    1使用Spring框架的优点是什么? 控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. 面向切面的编程(AOP): Spring支持面向切面的编 ...

  8. [攻防实战]CTF大赛准备(手动注入sql)

    一.IIS write漏洞利用 先用工具扫描,再上传小马,使用菜刀连接即可. 思考点: 如何获知是一台IIS站点? 本例中上传的一句话木马是什么意思? <%eval request(" ...

  9. sql建表,建索引注意事项

    建表注意 .建议字段定义为NOT NULL 搜索引擎 MyISAM InnoDB 区别 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基 ...

  10. usaco2008 nov 区间异或求和

    Problem 11: Switching Lights [LongFan, 2008] Farmer John tries to keep the cows sharp by letting the ...