【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]\)上课,如果申请换课成功, ...
随机推荐
- Python标准库内置函数complex介绍
from:http://www.jb51.net/article/57798.htm 本函数可以使用参数real + imag*j方式创建一个复数.也可以转换一个字符串的数字为复数:或者转换一个数字为 ...
- Vue起步
Vue起步 Vue.js是什么 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式javascript框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用. ...
- Java基础82 jsp中的EL表达式(网页知识)
1.EL表达式的作用 EL表达式的作用:向浏览器输出域对象中的变量值或者表达式计算结果.语法:${变量或者表达式} 注: Jsp的核心语法:jsp的表达式<%= %>和jsp的脚本< ...
- java基础23 Math类和Random类
一.Math数学类 主要是提供很多数学的公式 1.1.Math类的常用方法 abs(int a):绝对值 ceil(double a):向上取整 floor(double a):向下取整 ...
- Codeforces 734C Anton and Making Potions(枚举+二分)
题目链接:http://codeforces.com/problemset/problem/734/C 题目大意:要制作n个药,初始制作一个药的时间为x,魔力值为s,有两类咒语,第一类周瑜有m种,每种 ...
- Graham求凸包模板
struct P { double x, y; P(, ):x(x), y(y) {} double add(double a, double b){ ; return a+b; } P operat ...
- CVE-2010-2553 Microsoft Windows Cinepak 编码解码器解压缩漏洞 分析
Microsoft Windows是微软发布的非常流行的操作系统. Microsoft Windows XP SP2和SP3,Windows Vista SP1和SP2,以及Win ...
- 题解-python-CodeForces 1A
A. Theatre Square time limit per test 2 seconds memory limit per test 64 megabytes input standard in ...
- 《精通Python设计模式》学习结构型之享元模式
这个我日常当中也没有用到过, 真的是游戏行业用得多些? 学习一下, 有个印象. import random from enum import Enum TreeType = Enum('TreeTye ...
- ElasticSearch实战概要
最近中美关系越来越紧张,国内经济下滑,股市一片惨淡,互联网行业越来越不景气,动不动都是跌掉几千亿市值,来写一些文档来抚慰这颗受伤的心吧... 随着互联网的发展,数据越来越重要,每个公司保存的数据也是越 ...