luogu 1850 换教室 概率+dp
非常好的dp,继续加油练习dp啊
#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++) using namespace std; const int N=2e3+;
const double inf=1e8+;
const int V=;
int n,m,v,e,c[N],d[N],g[V][V];
double k[N],f[N][N][],ans; inline int read(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;} int main(){
n=read(),m=read(),v=read(),e=read();
rep(i,,n) c[i]=read();
rep(i,,n) d[i]=read();
rep(i,,n) cin>>k[i];
memset(g,,sizeof g);
rep(i,,e){
int u=read(),v=read(),w=read();
g[u][v]=g[v][u]=min(g[u][v],w);}
rep(k,,v)rep(i,,v)rep(j,,v)
g[i][j]=min(g[i][k]+g[k][j],g[i][j]);
rep(i,,v) g[i][i]=g[i][]=g[][i]=;
rep(i,,n)rep(j,,m) f[i][j][]=f[i][j][]=inf;
f[][][]=f[][][]=;
rep(i,,n){
f[i][][]=f[i-][][]+g[c[i-]][c[i]];
rep(j,,min(i,m)){
int k1=c[i-],k2=d[i-],k3=c[i],k4=d[i];
f[i][j][]=min(f[i][j][],f[i-][j][]+g[k1][k3]);
f[i][j][]=min(f[i][j][],f[i-][j][]+g[k1][k3]*(-k[i-])+g[k2][k3]*k[i-]);
f[i][j][]=min(f[i][j][],f[i-][j-][]+g[k1][k3]*(-k[i])+g[k1][k4]*k[i]);
f[i][j][]=min(f[i][j][],f[i-][j-][]+g[k1][k3]*(-k[i-])*(-k[i])+g[k2][k3]*k[i-]*(-k[i])+g[k1][k4]*(-k[i-])*k[i]+g[k2][k4]*k[i-]*k[i]);
}
}ans=inf;
rep(i,,m)ans=min(ans,min(f[n][i][],f[n][i][]));
printf("%.2lf\n",ans);return ;
}
怀挺,下一个
luogu 1850 换教室 概率+dp的更多相关文章
- Luogu P1850 换教室(期望dp)
P1850 换教室 题意 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1\l ...
- P1850 换教室 概率dp
其实说是概率dp,本质上和dp没什么区别,就是把所有可能转移的情况全枚举一下就行了,不过dp方程确实有点长... ps:这个题的floyed我竟然之前写跪了... 题目: 题目描述 对于刚上大学的牛牛 ...
- 换教室(期望+DP)
换教室(期望+DP) \(dp(i,j,1/0)\)表示第\(i\)节课,申请了\(j\)次调换,这节课\(1/0\)调换. 换教室 转移的时候考虑: 上次没申请 这次也没申请 加上\(dis(fr[ ...
- Luogu P1850 [NOIp2016提高组]换教室 | 期望dp
题目链接 思路: <1>概率与期望期望=情况①的值*情况①的概率+情况②的值*情况②的概率+--+情况n的值*情况n的概率举个例子,抛一个骰子,每一面朝上的概率都是1/6,则这一个骰子落地 ...
- Bzoj 4720 换教室 (期望DP)
刚发现Bzoj有Noip的题目,只会换教室这道题..... Bzoj 题面:Bzoj 4720 Luogu题目:P1850 换教室 大概是期望DPNoip极其友好的一道题目,DP不怎么会的我想到了,大 ...
- 【bzoj4720】[NOIP2016]换教室 期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- 【BZOJ4720】【NOIP2016】换教室 [期望DP]
换教室 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description Input 第一行四个整数n,m,v ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- P1850 换教室 期望dp
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...
随机推荐
- [ZJOI2007]时态同步(dfs+贪心)
小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点,都存在且仅 ...
- mysql 替换字符中部分字符,替换使用指定字符
update table_name set name= replace(name,'我是','是');
- LOJ#2249 购票
解:转移方程写出来,发现是斜率优化.因为在树上,考虑CDQ分治 + 点分治的方法... 每次找到重心,然后先递归解决上面的子树.然后把上面子树的凸包搞出来,下面每个点在凸包上二分找最优决策. 重心自己 ...
- Luogu P1247 取火柴游戏
题目链接 \(Click\) \(Here\) 这个题目其实就是一个\(Nim\)游戏的简单模型.对于单个的\(Nim\)游戏(单独一堆的情况),数学归纳可证其\(SG\)函数值等于其石子个数.所以对 ...
- 深入理解JS函数中this指针的指向
函数在执行时,会在函数体内部自动生成一个this指针.谁直接调用产生这个this指针的函数,this就指向谁. 怎么理解指向呢,我认为指向就是等于.例如直接在js中输入下面的等式: console.l ...
- 9.Django Admin编写
##Admin功能添加 ##效果图 ##添加时间日期 添加新的字段后需要重新数据移值操作 修改models.py auto_now是自定设置日期为当前日期 修改日期:null=True
- angular 中如果表单有相同的name一般会出现如下错误
Unhandled Promise rejection Cannot assign to a reference or variable
- JavaMail发送邮箱
package utils; import java.security.GeneralSecurityException; import java.util.Properties; import ja ...
- springboot配置jsp
spring.mvc.view.prefix= /WEB-INF/jsp/ spring.mvc.view.suffix= .jsp pom.xml <!--jsp支持--> <!- ...
- social-auth-app-django集成第三方登录
GitHub:https://github.com/python-social-auth/social-app-django 官网文档:http://python-social-auth.readth ...