flag++

//Writer : Hsz %WJMZBMR%tourist%hzwer
#include <iostream>
#include <cstdio>
#include <cstring>
#define LL long long
#define M(a,b) memset(a,b,sizeof a)
const int inf=0x3fffffff;
const double eps=1e-8;
int in(){
int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return x*f;
}
void out(int x)
{
int a[25],wei=0;
if(x<0) putchar('-'),x=-x;
for(;x;x/=10) a[++wei]=x%10;
if(wei==0){ puts("0"); return;}
for(int j=wei;j>=1;--j) putchar('0'+a[j]);
putchar('\n');
}
int dis[305][305],n,m,v,e,c[2005],d[2005],head[2005],ecnt;
double p[2005],f[2005][2005][2],ans=inf;
int main()
{
n=in(),m=in(),v=in(),e=in();
for(int i=1;i<=n;i++)c[i]=in();
for(int i=1;i<=n;i++)d[i]=in();
for(int i=1;i<=n;i++)scanf("%lf",&p[i]);
M(dis,0x3f);
for(int i=1;i<=v;i++) dis[i][i]=0;
for(int i=1,a,b,dd;i<=e;i++){a=in(),b=in(),dd=in();dis[a][b]=dis[b][a]=std::min(dis[a][b],dd);} for(int k=1;k<=v;k++)
for(int i=1;i<=v;i++)
for(int j=1;j<i;j++)
if(dis[i][j]>dis[i][k]+dis[k][j]) dis[j][i]=dis[i][j]=dis[i][k]+dis[k][j];
for(int i=1;i<=n;i++)
for(int j=0;j<=m;j++)
f[i][j][0]=f[i][j][1]=inf;
f[1][0][0]=f[1][1][1]=0;
for(int i=2;i<=n;i++){
int mn=std::min(i,m);
double d1=dis[c[i-1]][c[i]],d2=dis[d[i-1]][c[i]]*p[i-1]+d1*(1-p[i-1]),
d3=dis[c[i-1]][d[i]]*p[i]+d1*(1-p[i]),d4=d1*(1-p[i])*(1-p[i-1])+dis[c[i-1]][d[i]]*(1-p[i-1])*p[i]+
dis[d[i-1]][c[i]]*(1-p[i])*p[i-1]+dis[d[i-1]][d[i]]*p[i-1]*p[i];
for(int j=0;j<=mn;j++){
f[i][j][0]=std::min(f[i-1][j][0]+d1,f[i-1][j][1]+d2);
if(j)f[i][j][1]=std::min(f[i-1][j-1][0]+d3,f[i-1][j-1][1]+d4);
}
}
for(int i=0;i<=m;i++)
for(int j=0;j<=1;j++){
ans=std::min(ans,f[n][i][j]);
}
printf("%.2lf",ans);
return 0;
}

最新文章

  1. gucci fake bags is usually really a sign of luxurious
  2. java 8 原版 api 下载地址,
  3. Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
  4. loj 1412(树上最长直径的应用)
  5. css3伸缩布局属性总结
  6. [SVN(ubuntu)] svn 文件状态标记含义
  7. python语法笔记(三)
  8. 20145305 《Java程序设计》实验一
  9. APP快速通过苹果AppStore审核九大诀窍
  10. java堆栈 (转)
  11. Java---网络编程(4)-C/S-B/S
  12. oracle数组定义与使用
  13. Linux 特殊符号使用: 倒引号`的使用
  14. (原创)(C#随笔)IEnumerable&lt; ICollection &lt; IList区别
  15. Linux网络服务01——Linux网络基础设置
  16. vuex的使用
  17. PHP判断点是否在多边形区域内外
  18. java的this关键字理解
  19. 西门子S7-300 PLC视频教程(百度网盘)
  20. 用ABP只要加人即可马上加快项目进展(二) - 分工篇

热门文章

  1. HDU多校赛第9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学小知识】
  2. uva 704
  3. 【bzoj1025】【SCOI2009】【游戏】【dp】
  4. 【软件project】之第五、六章总结
  5. android 点击返回键退出程序的方法
  6. Kafka集群部署及測试
  7. c++11 实现半同步半异步线程池
  8. luogu2303 [SDOI2012] Longge的问题
  9. Element UI Form 每行显示多列,即多个 el-form-item
  10. reportlab使用示例:文字和图片