【BZOJ】4720: [Noip2016]换教室
4720: [Noip2016]换教室
Time Limit: 20 Sec Memory Limit: 512 MB
Submit: 1690 Solved: 979
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
2 1 2
1 2 1
0.8 0.2 0.5
1 2 5
1 3 3
2 3 1
Sample Output
Solution
$dp[i][j][0] = min(dp[i-1][j][0] + G[c[i-1]][c[i]], dp[i-1][j][1] + G[c[i-1]][c[i]] * (1.0-p[i-1]) + G[d[i-1]][c[i]] * p[i-1]);$
$if(j >= 1) dp[i][j][1] = min(dp[i-1][j-1][0] + G[c[i-1]][c[i]] * (1.0 - p[i]) + G[c[i-1]][d[i]] * p[i], dp[i-1][j-1][1] + G[c[i-1]][c[i]] * (1.0 - p[i-1]) * (1.0 - p[i])+ G[c[i-1]][d[i]] * (1.0 - p[i-1]) * p[i] + G[d[i-1]][c[i]] * (1.0 - p[i]) * p[i-1] + G[d[i-1]][d[i]] * p[i-1] * p[i]);$
这里$G$表示预处理出来的最短路。
Code
#include<bits/stdc++.h>
using namespace std; double dp[][][], G[][], p[];
int c[], d[];
int main() {
int n, m, v, e;
scanf("%d%d%d%d", &n, &m, &v, &e);
for(int i = ; i <= n; i ++) scanf("%d", &c[i]);
for(int i = ; i <= n; i ++) scanf("%d", &d[i]);
for(int i = ; i <= n; i ++) scanf("%lf", &p[i]);
for(int i = ; i <= v; i ++)
for(int j = ; j <= v; j ++) G[i][j] = 0x3f3f3f3f;
for(int i = ; i <= e; i ++) {
int a, b; double c;
scanf("%d%d%lf", &a, &b, &c);
G[a][b] = min(G[a][b], c);
G[b][a] = G[a][b];
}
for(int i = ; i <= v; i ++) G[i][i] = ;
for(int k = ; k <= v; k ++)
for(int i = ; i <= v; i ++)
for(int j = ; j <= v; j ++)
G[i][j] = min(G[i][j], G[i][k] + G[k][j]);
for(int i = ; i <= n; i ++)
for(int j = ; j <= n; j ++)
for(int k = ; k <= ; k ++)
dp[i][j][k] = 0x3f3f3f3f;
dp[][][] = , dp[][][] = ;
for(int i = ; i <= n; i ++)
for(int j = ; j <= m && j <= i; j ++) {
dp[i][j][] = min(dp[i-][j][] + G[c[i-]][c[i]], dp[i-][j][] + G[c[i-]][c[i]] * (1.0-p[i-]) + G[d[i-]][c[i]] * p[i-]);
if(j >= ) {
dp[i][j][] = min(dp[i-][j-][] + G[c[i-]][c[i]] * (1.0 - p[i]) + G[c[i-]][d[i]] * p[i], dp[i-][j-][] + G[c[i-]][c[i]] * (1.0 - p[i-]) * (1.0 - p[i])
+ G[c[i-]][d[i]] * (1.0 - p[i-]) * p[i] + G[d[i-]][c[i]] * (1.0 - p[i]) * p[i-] + G[d[i-]][d[i]] * p[i-] * p[i]);
}
}
double ans = 0x3f3f3f3f;
for(int i = ; i <= m; i ++)
for(int j = ; j <= ; j ++)
ans = min(ans, dp[n][i][j]);
printf("%.2lf", ans);
}
【BZOJ】4720: [Noip2016]换教室的更多相关文章
- BZOJ 4720 [Noip2016]换教室
4720: [Noip2016]换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i( ...
- bzoj 4720: [Noip2016]换教室【期望dp】
状压dp,设f[i][j][0/1]为前i个时间段换了j间教室的期望体力消耗,转移很好想(但是写起来好长= =) #include<iostream> #include<cstdio ...
- BZOJ P4720[Noip2016]换教室____solution
题目太长不表 <--无形传送,最为致命 学习一点数学期望的基础,预处理最短路,然后加上DP即可.(废话) 理解决策和结果的差别: 在这里每阶段的决策有两个:申请|不申请 结果有两个:换|不换 然 ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- [NOIP2016]换教室 题解(奇怪的三种状态)
2558. [NOIP2016]换教室 [题目描述] 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1< ...
- NOIP2016换教室 BZOJ 4720
BZOJ 4720 换教室 题目描述: 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上 ...
- 【bzoj4720】[NOIP2016]换教室
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- [NOIp2016] 换教室
题目类型:期望\(DP\) 传送门:>Here< 题意:现有\(N\)个时间段,每个时间段上一节课.如果不申请换教室,那么时间段\(i\)必须去教室\(c[i]\)上课,如果申请换课成功, ...
随机推荐
- Hibernate5笔记9--Hibernate注解式开发
Hibernate注解式开发: (1)注解式开发的注意点: Hibernate中使用注解,主要是为了替代映射文件,完成“类到表,属性到字段”的映射. JPA提供了一套功能强大的注解.Hibernat ...
- java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)
最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...
- imperva 更改web界面的密码
通过SSH作为用户根登录到MX(或通过另一个用户并提升) 运行命令“su oracle” //首先切换到oracle用户 sqlplus secure/(密码) /用此命令登录到数据库 s ...
- aarch64_l3
librdmacm-utils-1.1.0-4.fc26.aarch64.rpm 2017-02-12 07:12 87K fedora Mirroring Project libreadline-j ...
- 关于分布式存储系统中-CAP原则(CAP定理)与BASE理论比较
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- python对象学习
python对象的介绍 python使用对象模型来存储数据,构造任何类型的值都是一个对象,尽管python被当成面向对象的编程语言,但是完全编写不使用任何类和实例的脚本.所有的python对象都拥有三 ...
- 涨姿势系列之——内核环境下花式获得CSRSS进程id
这个是翻别人的代码时看到的,所以叫涨姿势系列.作者写了一个获取CSRSS进程PID的函数,结果我看了好久才看懂是这么一个作用.先放上代码 HANDLE GetCsrPid() { HANDLE Pro ...
- 题解-python-CodeForces 1A
A. Theatre Square time limit per test 2 seconds memory limit per test 64 megabytes input standard in ...
- JS实现点击图片,在浏览器中查看。
工作中遇到要实现点击图片查看的功能,从网上找了一段js代码,可以用. <img src="/pic/${pictureCertificate}" alt="凭证&q ...