洛谷P1850 换教室(概率dp)
我的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 ;
}
洛谷P1850 换教室(概率dp)的更多相关文章
- 洛谷 P1850 换教室 解题报告
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1≤i≤n) ...
- 洛谷——P1850 换教室
P1850 换教室 有 2n 节课程安排在 nn 个时间段上.在第 i个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 $c_i$ 上课,而另一节课程在教室 $d_i$ ...
- 洛谷 P1850 换教室
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...
- 洛谷P1850换教室
题目传送门 理解题意:给定你一个学期的课程和教室数量以及教室之间的距离还有换教室成功的概率,求一个学期走的距离的期望最小值 题目是有够恶心的,属于那种一看就让人不想刷的题目...很明显的动规,但是那个 ...
- P1850 换教室 概率dp
其实说是概率dp,本质上和dp没什么区别,就是把所有可能转移的情况全枚举一下就行了,不过dp方程确实有点长... ps:这个题的floyed我竟然之前写跪了... 题目: 题目描述 对于刚上大学的牛牛 ...
- 洛谷P1850 换教室 [noip2016] 期望dp
正解:期望dp 解题报告: 哇我发现我期望这块真的布星,可能在刷了点儿NOIp之后会去搞一波期望dp的题...感觉连基础都没有打扎实?基础概念都布星! 好那先把这题理顺了嗷qwq 首先我们看到期望就会 ...
- 洛谷P1850 换教室
令人印象深刻的状态转移方程... f[i][j][0/1]表示前i个换j次,第i次是否申请时的期望. 注意可能有重边,自环. 转移要分类讨论,距离是上/这次成功/失败的概率乘相应的路程. 从上次的0/ ...
- 洛谷P1850 换教室_数学期望_Floyd
调了一下午QAQ-让我对数学期望的理解又提升了一个层次. 首先,我们发现 v<=300v<=300v<=300 , 这样我们就可以用 FloydFloydFloyd 算法来 O(n3 ...
- Luogu P1850 换教室(期望dp)
P1850 换教室 题意 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1\l ...
随机推荐
- uva 11488 - Hyper Prefix Sets(字典树)
H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...
- vs 总结
1.可以通过 视图--->属性管理器 来直接配置opencv,一键搞定 2.按住shift键不放,然后移动方向键,可以选中一路数据点. 3.调试程序的利器,调用堆栈,可以定位到程序死的那一刻. ...
- [leetcode] database解题记录
175 Combine Two Tables 题目:左连接Person表和Address表. select FirstName,LastName,City,State from Person p le ...
- Android逆向利器和smali代码修改出错举例-入参类型
当smali修改代码出错举例1,log如下: 虚拟机层次: 1.本身做出了预测,寄存器v2是符合要求入参,暗示你这个也许是你想要的.VFY: register1 v2 type 17, wanted ...
- Domino函件收集器的配置及使用方法
[背景] 今天一个朋友问我这样一个问题,他们OA的应用数据库和接口数据库部署在两台不同的server. 接口server主要负责和第三方系统进行集成,第三方系统调接口创建OA单据,OA系统进行审 ...
- xamarin.android searchview的一些用法
前言 searchview是安卓常用的搜索控件,网上有很多关于searchview都是java的,所以我参看xamaroin官网的一些demo总结一些方法. 导读 1.如何创建一个searchview ...
- Mac OS安装Scrapy
个人觉得掌握简单的爬虫知识非常有用,特别是想要从一些特定网站自动地下载一些资源或者统计一些数据,非常的有用.对于产品经理来说,如果要了解竞争产品.替代产品的价格,可以写一个爬虫脚本从各大电商网站爬取相 ...
- JSON与localStorage的爱恨情仇
在使用localStorage时,我们会给一个key存取一个value,这个value可以是一个普通的字符串,也可以是一个对象,如果是一个字符串,我们就需要通过JSON.stringify来转化为JS ...
- Codeforces Round #352 (Div. 2) C. Recycling Bottles
C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 高cpu分析
http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html http://www.open-open.com/lib/view/op ...