洛谷P1850 [noip2016]换教室——期望DP
题目:https://www.luogu.org/problemnew/show/P1850
注释掉了一堆愚蠢,自己还是太嫩了...
首先要注意选或不选是取 min 而不是 /2 ,因为这里的选或不选不是随机的而是取最优的;
然后注意 double 类型不能 memset ,还是要手动赋值;
其实也不算很难,却调了很久...
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const maxn=;
int n,m,v,e,dis[][],c[maxn],d[maxn];
double p[maxn],f[maxn][maxn][],ans;
int rd()
{
int ret=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-; ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return ret*f;
}
int main()
{
n=rd(); m=rd(); v=rd(); e=rd();
for(int i=;i<=n;i++)c[i]=rd();
for(int i=;i<=n;i++)d[i]=rd();
for(int i=;i<=n;i++)scanf("%lf",&p[i]);
memset(dis,0x3f,sizeof dis);
for(int i=,x,y,z;i<=e;i++)
{
x=rd(); y=rd(); z=rd();
dis[x][y]=min(dis[x][y],z); dis[y][x]=dis[x][y];//
}
for(int i=;i<=v;i++)dis[i][i]=;//!!!
for(int k=;k<=v;k++)
for(int i=;i<=v;i++)
for(int j=;j<=v;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
// memset(f,1,sizeof f);//!!!
// for(int j=0;j<=m;j++)
// {
// f[n][j][0]=0; f[n][j][1]=0;
// }
// for(int i=n-1;i;i--)
// for(int j=0;j<=m;j++)
// {
// f[i][j][0]=(f[i+1][j][0]+f[i+1][j][1])/2+(p[i-1]*dis[d[i]][c[i+1]]+(1-p[i-1])*dis[c[i]][c[i+1]]);
// if(j)f[i][j][1]=(f[i+1][j-1][0]+f[i+1][j-1][1])/2+
// p[i]*(p[i-1]*dis[d[i]][d[i+1]] + (1-p[i-1])*dis[c[i]][d[i+1]])/2
// +(1-p[i])*dis[c[i]][c[i+1]]/2;
// }
// printf("%lf",f[1][m][0]+f[1][m][1]);
for(int i=;i<=n;i++)//手动memset
for(int j=;j<=m;j++)
for(int k=;k<=;k++)f[i][j][k]=0x3f3f3f3f;
f[][][]=; f[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<=m&&j<=i;j++)
{
f[i][j][]=min(f[i-][j][] + dis[c[i-]][c[i]],
f[i-][j][] + (-p[i-])*dis[c[i-]][c[i]] + p[i-]*dis[d[i-]][c[i]]);
if(j)
f[i][j][]=min(f[i-][j-][] + (-p[i])*dis[c[i-]][c[i]] + p[i]*dis[c[i-]][d[i]],
f[i-][j-][] + (-p[i-])*(-p[i])*dis[c[i-]][c[i]] + p[i-]*p[i]*dis[d[i-]][d[i]] +
(-p[i-])*p[i]*dis[c[i-]][d[i]] + p[i-]*(-p[i])*dis[d[i-]][c[i]]);
}
ans=0x3f3f3f3f;
for(int j=;j<=m;j++)
ans=min(ans,min(f[n][j][],f[n][j][]));
printf("%.2lf",ans);
return ;
}
洛谷P1850 [noip2016]换教室——期望DP的更多相关文章
- 洛谷1850(NOIp2016) 换教室——期望dp
题目:https://www.luogu.org/problemnew/show/P1850 状态里记录的是”上一回有没有申请“,而不是”上一回申请成功否“,不然“申请 j 次”就没法转移了. dou ...
- 【洛谷P1850】换教室[2016NOIP提高组]
换教室 期望DP 状态: f[i][j][0/1]表示前i节课 提交j个申请 第i个教室不申请/申请(为了确定当前教室,方便转移) 的最小期望 方程: f[i][j][0]=min(f[i-1][j] ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- 【bzoj4720】[NOIP2016]换教室 期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- 【bzoj4720】[Noip2016]换教室 期望dp+最短路
Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的 ...
- JZYZOJ1457 [NOIP2016]换教室 期望dp 动态规划 floyd算法 最短路
http://172.20.6.3/Problem_Show.asp?id=1457 我不知道为什么我倒着推期望只有80分,所以我妥协了,我对着题解写了个正的,我有罪. #include<cst ...
- [NOIP2016]换教室 期望dp
先弗洛伊德,然后把状态拆分遗传 #include<iostream> #include<cstdio> #include<cstring> #include< ...
- 换教室(期望+DP)
换教室(期望+DP) \(dp(i,j,1/0)\)表示第\(i\)节课,申请了\(j\)次调换,这节课\(1/0\)调换. 换教室 转移的时候考虑: 上次没申请 这次也没申请 加上\(dis(fr[ ...
- Luogu P1850 [NOIp2016提高组]换教室 | 期望dp
题目链接 思路: <1>概率与期望期望=情况①的值*情况①的概率+情况②的值*情况②的概率+--+情况n的值*情况n的概率举个例子,抛一个骰子,每一面朝上的概率都是1/6,则这一个骰子落地 ...
随机推荐
- 11.Spring通过工厂方法配置Bean
通过工厂方法配置Bean暴扣静态工厂方法和实例工厂方法. 1.静态工厂方法 调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户端需要对象时,只需要简单的调用静态方法,而不去关心创建 ...
- selenium--driver.switchTo()-----转
https://www.cnblogs.com/clairejing/p/9499223.html 在自动化测试中,会遇到多窗口.多iframe.多alert的情况.此时,会使用driver.swit ...
- LeetCode(53) Maximum Subarray
题目 Find the contiguous subarray within an array (containing at least one number) which has the large ...
- Notepad++ 连接远程 FTP 进行文件编辑
一.下载安装 Notepad++ 1.下载 Notepad++ : https://pan.baidu.com/s/1o7VrS4y 密码 : ck8a 2.安装 Notepad++ 2.1.勾选所有 ...
- 九度oj 题目1074:对称平方数
题目1074:对称平方数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6422 解决:2912 题目描述: 打印所有不超过n(n<256)的,其平方具有对称性质的数. 如11*11 ...
- Layui图标
layui 图标 layui 的所有图标全部采用字体形式,取材于阿里巴巴矢量图标库(iconfont).因此你可以把一个 icon 看作是一个普通的文字,这意味着你直接用 css 控制文字属性,如 c ...
- springboot + mybatis 完成图片上传并保存到数据库
添加依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons- ...
- 洛谷 P4181 [USACO18JAN]Rental Service
P4181 [USACO18JAN]Rental Service 题意翻译 farmer john有N(1≤N≤100,000)头牛,他想赚跟多的钱,所以他准备买牛奶和出租牛.有M(1≤M≤100,0 ...
- Android GIS开发系列-- 入门季(14)FeatureLayer之范围查询
Android GIS开发系列-- 入门季(5),这篇文章中,我们知道如何去查找要素.现在有一个需求,查找某点5000米范围的要素,那如何来做呢?首先我们需要在地图上画个5000米半径的圆,然后根据Q ...
- CentOS 7 es搭建测试
搭建本地yum repo pass 指定特定repo 安装,比如安装wget.(指定特定repo 是为了从最快的repo安装) yum --disablerepo=\* --enablerepo=os ...