洛谷P1850 换教室(概率dp)
2024-09-08 15:00:17
我的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 ;
}
最新文章
- Flask 的扩展
- bootstrap 分页
- linux与linux,linux与windows之间用SSH传输文件
- 用C#访问Dynamic AX的WebService.
- 添加常驻Notification
- C++排序函数sort/qsort使用
- POJ 2318 TOYS &;&; POJ 2398 Toy Storage(几何)
- css_day7
- android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过
- AFNetworking3.0 POST请求
- JSP手动注入 全
- Web —— 在自己电脑搭建网站,发布到公网,并使用域名访问
- webuploader
- Java打印M图形(二维数组)——(九)
- C# ftp 上传、下载、删除
- UOJ 274 温暖会指引我们前进 - LCT
- 【代码笔记】iOS-对数组进行排序
- Linux 文件编码格式转换
- C# 所有特性,特性所在命名空间,那些命名空间拥有特性类
- SICP-练习2.17
热门文章
- Effective C++ 条款三 尽可能使用const
- struts.xml中为什么加上<;constant name=";struts.devMode"; value=";true"; />;就出错
- v-bind指令
- 读懂这些spring boot的核心注解,快速配置完成项目搭建
- C#高阶与初心:(二)P/Invoke平台调用
- 基于ADB框架Robotium跨进程操作
- C++ 四种强制类型转变与区别之处
- 理解yarn平台,理解万岁,肤浅理解也万岁~
- Qt &; opencv 学习(二)
- Aspose 直接插入SQL Server DataTalbe