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

一开始官方题解就没搞懂…然后就看了一下别人的代码,水水过就算了。今天拿到…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. Solidworks工程图 如何绘制向视图,辅助视图

    先画一条垂直于视野方向的中心线   点击辅助视图,然后点选刚才的中心线即可生成向视图   对向视图的标准可以得到一些用其他方法不好标注的尺寸            

  2. weex 项目开发(一) weex create project 与 weex init project 的区别

    开发环境配置:http://www.cnblogs.com/crazycode2/p/7822961.html 1. weex create project  与  weex init project ...

  3. bsp开发之驱动开发

    驱动程序是可以管理虚拟设备或者物理设备,协议,服务等得软件模块,操作系统仅仅有通过驱动程序才干訪问硬件.针对windows ce开发设备驱动.就是通过platform builder创建一个新的平台, ...

  4. C指针——C语言手记

    近期敲代码的时候.发现自己非常多东西都開始忘了. 今天最终有机会好好总结一下指针.当做个笔记同一时候也希望对大家实用.假设有不对的地方.希望大家能帮我指正一下.然后我的实验环境是32位RHEL+ecl ...

  5. freeIPMI README && issue about OpenIPMI kernel driver

    http://www.gnu.org/software/freeipmi/README FreeIPMI - Copyright (C) 2003-2013 FreeIPMI Core Team Fr ...

  6. lodar

    一个文件使用另一个文件的东西的时候需要使用到 export{开放} --watch 自动检测 可以加载打包的后边 module.exports = { entry:{ //入口文件 home:&quo ...

  7. startActivity、 startActivityForResult 、广播的使用

    前言 近期忙着跟项目.好久没有写文字了.今天一个群里面的童鞋问到一个关于不同界面间传值的问题,借这个背景,写一段关于" startActivity. startActivityForResu ...

  8. Appium&python

    Appium官网所描述的特性,都很吸引人,刚好最近在研究Mobile Automation Testing,所以很有兴趣探索下Appium这个年轻的工具. 不过看了官网的documents,实在是让初 ...

  9. sublime 中配置 python 运行

    运行是按快捷键 ”ctrl + B“ Preferences->Browse Packages->Python->Python.sublime-build 编辑这个文件.   修改成 ...

  10. 设计模式学习笔记——Observer观察者模式

    观察者模式里面有两个东西:观察者(Observer)和目标(Subject).当目标发生变化的时候,观察者随之起舞,也作出相应的变化.此为观察者模式. 这是怎么做到的?主要是目标里面存有一份观察者的名 ...