洛谷 1850 NOIP2016提高组 换教室


【题解】
先用floyed处理出两点间的最短路。
设f[i][j][k]表示走到第i个教室,总共换了j次,当前换或者不换,期望的最小移动距离。
分情况讨论来转移即可。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define rg register
#define N 2010
using namespace std;
int n,m,v,e,dis[][],c[N],d[N];
double f[N][N][],k[N],ans=2e9;
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
int main(){
n=read(); m=read(); v=read(); e=read();
for(rg int i=;i<=n;i++)
for(rg int j=;j<=m;j++) f[i][j][]=f[i][j][]=1e9;
f[][][]=f[][][]=;
for(rg int i=;i<=v;i++)
for(rg int j=;j<=v;j++) if(i!=j)dis[i][j]=1e9;
for(rg int i=;i<=n;i++) c[i]=read();
for(rg int i=;i<=n;i++) d[i]=read();
for(rg int i=;i<=n;i++) scanf("%lf",&k[i]);
for(rg int i=;i<=e;i++){
int u=read(),v=read();
dis[u][v]=dis[v][u]=min(dis[u][v],read());
}
for(rg int mid=;mid<=v;mid++)
for(rg int i=;i<=v;i++)
for(rg int j=;j<=v;j++) dis[i][j]=dis[j][i]=min(dis[i][j],dis[i][mid]+dis[mid][j]);
for(rg int i=;i<=n;i++){
int num=min(i,m);
for(rg int j=;j<=num;j++){
f[i][j][]=min(f[i][j][],f[i-][j][]+dis[c[i-]][c[i]]);
if(j>=)
f[i][j][]=min(f[i][j][],f[i-][j][]+k[i-]*dis[d[i-]][c[i]]+(-k[i-])*dis[c[i-]][c[i]]);
if(j>=)
f[i][j][]=min(f[i][j][],f[i-][j-][]+k[i]*dis[c[i-]][d[i]]+(-k[i])*dis[c[i-]][c[i]]);
if(j>=){
double tmp=;
tmp+=k[i-]*k[i]*dis[d[i-]][d[i]] + k[i-]*(-k[i])*dis[d[i-]][c[i]];
tmp+=(-k[i-])*k[i]*dis[c[i-]][d[i]] + (-k[i-])*(-k[i])*dis[c[i-]][c[i]];
f[i][j][]=min(f[i][j][],f[i-][j-][]+tmp);
}
}
}
for(rg int i=;i<=m;i++) ans=min(ans,min(f[n][i][],f[n][i][]));
printf("%.2lf\n",ans);
return ;
}
洛谷 1850 NOIP2016提高组 换教室的更多相关文章
- [NOIp2016提高组]换教室
题目大意: 有n节课,第i节课在c[i]上课,同时d[i]也有一节课d[i]. 你有权利向教务处发出m次申请把自己的教室改到d[i],相应的批准概率是k[i]. 教室是图上的一些点,其中每条边都有边权 ...
- Luogu P1850 [NOIp2016提高组]换教室 | 期望dp
题目链接 思路: <1>概率与期望期望=情况①的值*情况①的概率+情况②的值*情况②的概率+--+情况n的值*情况n的概率举个例子,抛一个骰子,每一面朝上的概率都是1/6,则这一个骰子落地 ...
- 【分块】【常数优化】【Orz faebdc】洛谷 P1083 NOIP2012提高组 借教室
分块90分. By AutSky_JadeK [重点在下面] #include<cstdio> #include<cmath> using namespace std; #de ...
- 题解 P1850 [NOIP2016 提高组] 换教室
做完这道题才略微感觉自己懂了一点关于概率与期望的知识QAQ... 一:关于概率与期望的定义 转载节选于blog 1.什么是数学期望? 数学期望亦称期望.期望值等.在概率论和统计学中,一个离散型随机变量 ...
- 洛谷P1563 [NOIP2016 提高组] 玩具谜题
题目链接:https://www.luogu.com.cn/problem/P1563 哈哈哈,这个题拿来一读是不是很吃惊hahaha,我刚开始读的时候吓了我一跳,这么长的题干,这么绕的题意,还有下面 ...
- 洛谷P2827 [NOIP2016 提高组] 蚯蚓 (二叉堆/队列)
容易想到的是用二叉堆来解决,切断一条蚯蚓,其他的都要加上一个值,不妨用一个表示偏移量的delta. 1.取出最大的x,x+=delta: 2.算出切断后的两个新长度,都减去delta和q: 3.del ...
- 洛谷P1083 [NOIP2012提高组Day2T2]借教室
P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...
- 洛谷 P2678 & [NOIP2015提高组] 跳石头
题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...
- 洛谷 P1025 & [NOIP2001提高组] 数的划分(搜索剪枝)
题目链接 https://www.luogu.org/problemnew/show/P1025 解题思路 一道简单的dfs题,但是需要剪枝,否则会TLE. 我们用dfs(a,u,num)来表示上一个 ...
随机推荐
- flask框架路由系统
flask框架的url系统: flask框架的路由系统: flask框架的路由系统使用实例化的route方法来指定: 如: @app.route('/') route函数装饰器可以把一个函数绑定到对应 ...
- python的Debug调试
先打开Shell的Debug-->Debugger调试, 然后点击程序的运行 点击Debug的step按钮查看每一步的结果
- ROS学习笔记十一:创建URDF 文件并在RVIZ中查看模型
Unified Robot Description Format,简称为URDF(标准化机器人描述格式),是一种用于描述机器人及其部分结构.关节.自由度等的XML格式文件. 一.创建第一个URDF文件 ...
- ROS学习笔记四:用C++编写ROS发布与订阅
1 创建并编译功能包 1.1 创建功能包 在工作空间的 src 目录下创建功能包: $ cd ~/dev/catkin_ws/src $ catkin_create_pkg chapter2_tuto ...
- 洛谷 P2056 [ZJOI2007]捉迷藏 || bzoj 1095: [ZJOI2007]Hide 捉迷藏 || 洛谷 P4115 Qtree4 || SP2666 QTREE4 - Query on a tree IV
意识到一点:在进行点分治时,每一个点都会作为某一级重心出现,且任意一点只作为重心恰好一次.因此原树上任意一个节点都会出现在点分树上,且是恰好一次 https://www.cnblogs.com/zzq ...
- 贪心 Codeforces Round #109 (Div. 2) B. Combination
题目传送门 /* 贪心:按照能选的个数和点数降序排序,当条件不符合就break,水题啊! */ #include <cstdio> #include <algorithm> # ...
- 转】Neo4j集群安装实践
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! Posted: Oct 29, 2013 Ta ...
- Java基础教程(24)--集合
一.Java集合框架 集合,有时也称为容器,是一个用来存储和管理多个元素的对象.Java中的集合框架定义了一套规范,用来表示和操作集合,使具体操作与实现细节解耦.集合框架都包含下列内容: 接口:这 ...
- scala打印error,debug,info
1.以wordcount为例 package org.apache.spark.examples import org.apache.spark.examples.SparkPi.logger imp ...
- iOS programming UITableView and UITableViewController
iOS programming UITableView and UITableViewController A UITableView displays a single column of dat ...