传送门

我的floyd竟然写错了?今年NOIP怕不是要爆零了?

这就是一个概率dp

我们用$dp[i][j][k]$表示在第$i$个时间段,已经申请了$j$次,$k$表示本次换或不换,然后直接暴力转移

点数只有300,跑一遍floyd

 //minamoto
#include<iostream>
#include<cstdio>
#include<cstring>
#define inf 1e17
using namespace std;
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,:;}
inline int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getchar()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getchar());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
const int N=,M=;
int mp[M][M],c[N][],n,m,e,v;double dp[N][N][],k[N],ans;
int main(){
// freopen("testdata.in","r",stdin);
memset(mp,0x3f,sizeof(mp));
n=read(),m=read(),v=read(),e=read();
for(int i=;i<=n;++i) c[i][]=read();
for(int i=;i<=n;++i) c[i][]=read();
for(int i=;i<=n;++i) scanf("%lf",&k[i]);
for(int i=,u,v,w;i<=e;++i){
u=read(),v=read(),w=read();
cmin(mp[u][v],w),cmin(mp[v][u],w);
}
for(int i=;i<=v;++i) mp[i][i]=mp[i][]=mp[][i]=;
for(int k=;k<=v;++k) for(int i=;i<=v;++i) for(int j=;j<=v;++j)
cmin(mp[i][j],mp[i][k]+mp[k][j]);
for(int i=;i<=n;++i) for(int j=;j<=m;++j) dp[i][j][]=dp[i][j][]=inf;
dp[][][]=dp[][][]=;
for(int i=;i<=n;++i){
dp[i][][]=dp[i-][][]+mp[c[i][]][c[i-][]];
for(int j=,l=min(i,m);j<=l;++j){
int c1=c[i][],c2=c[i][],c3=c[i-][],c4=c[i-][];
cmin(dp[i][j][],dp[i-][j][]+mp[c1][c3]);
cmin(dp[i][j][],dp[i-][j][]+mp[c1][c4]*k[i-]+mp[c1][c3]*(-k[i-]));
cmin(dp[i][j][],dp[i-][j-][]+mp[c1][c3]*(-k[i])+mp[c2][c3]*k[i]);
cmin(dp[i][j][],dp[i-][j-][]+mp[c1][c3]*(-k[i-])*(-k[i])+
mp[c2][c3]*(-k[i-])*k[i]+mp[c1][c4]*k[i-]*(-k[i])+mp[c2][c4]*k[i-]*k[i]);
}
}
ans=inf;
for(int i=;i<=m;++i) cmin(ans,dp[n][i][]),cmin(ans,dp[n][i][]);
printf("%.2lf\n",ans);
return ;
}

最新文章

  1. Flask 的扩展
  2. bootstrap 分页
  3. linux与linux,linux与windows之间用SSH传输文件
  4. 用C#访问Dynamic AX的WebService.
  5. 添加常驻Notification
  6. C++排序函数sort/qsort使用
  7. POJ 2318 TOYS &amp;&amp; POJ 2398 Toy Storage(几何)
  8. css_day7
  9. android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过
  10. AFNetworking3.0 POST请求
  11. JSP手动注入 全
  12. Web —— 在自己电脑搭建网站,发布到公网,并使用域名访问
  13. webuploader
  14. Java打印M图形(二维数组)——(九)
  15. C# ftp 上传、下载、删除
  16. UOJ 274 温暖会指引我们前进 - LCT
  17. 【代码笔记】iOS-对数组进行排序
  18. Linux 文件编码格式转换
  19. C# 所有特性,特性所在命名空间,那些命名空间拥有特性类
  20. SICP-练习2.17

热门文章

  1. Effective C++ 条款三 尽可能使用const
  2. struts.xml中为什么加上&lt;constant name=&quot;struts.devMode&quot; value=&quot;true&quot; /&gt;就出错
  3. v-bind指令
  4. 读懂这些spring boot的核心注解,快速配置完成项目搭建
  5. C#高阶与初心:(二)P/Invoke平台调用
  6. 基于ADB框架Robotium跨进程操作
  7. C++ 四种强制类型转变与区别之处
  8. 理解yarn平台,理解万岁,肤浅理解也万岁~
  9. Qt &amp; opencv 学习(二)
  10. Aspose 直接插入SQL Server DataTalbe