【BZOJ4720】【NOIP2016】换教室
我当年真是naive……
原题:
f[i][j][k],i是时间,j是用了多少次机会,k=0/1表示用了/没用
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int rd(){int z=,mk=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mk=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mk;
}
int n,m,nn,mm,a[],b[]; double p[];
int e[][];
double f[][][];
void floyd(){
for(int k=;k<=nn;++k)for(int i=;i<=nn;++i)for(int j=;j<=nn;++j)
if(e[i][k]+e[k][j]<e[i][j]) e[i][j]=e[i][k]+e[k][j];
}
int main(){//freopen("ddd.in","r",stdin);
memset(e,,sizeof(e));
cin>>n>>m>>nn>>mm;
for(int i=;i<=n;++i) a[i]=rd();
for(int i=;i<=n;++i) b[i]=rd();
for(int i=;i<=n;++i) scanf("%lf",&p[i]);
int l,r,v;
while(mm--){ l=rd(),r=rd(),v=rd(); e[l][r]=e[r][l]=min(v,e[l][r]);}
for(int i=;i<=nn;++i) e[i][i]=;
floyd();
for(int i=;i<=n;++i)for(int j=;j<=m;++j) f[i][j][]=f[i][j][]=1e30;
f[][][]=f[][][]=;
for(int i=;i<=n;++i)for(int j=;j<=m;++j){
f[i][j][]=min(f[i-][j][]+e[a[i-]][a[i]],f[i-][j][]+e[a[i-]][a[i]]*(-p[i-])+e[b[i-]][a[i]]*p[i-]);
if(j>=){
f[i][j][]=min(f[i][j][],f[i-][j-][]+e[a[i-]][a[i]]*(-p[i])+e[a[i-]][b[i]]*p[i]);
f[i][j][]=min(f[i][j][],f[i-][j-][]+e[a[i-]][a[i]]*(-p[i-])*(-p[i])+e[a[i-]][b[i]]*(-p[i-])*p[i]
+e[b[i-]][a[i]]*p[i-]*(-p[i])+e[b[i-]][b[i]]*p[i-]*p[i]);
}
}
double ans=1e30;
for(int i=;i<=m;++i) ans=min(ans,min(f[n][i][],f[n][i][]));
printf("%.2lf\n",ans);
return ;
}
【BZOJ4720】【NOIP2016】换教室的更多相关文章
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- BZOJ4720 [Noip2016]换教室
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- 2018.08.30 bzoj4720: [Noip2016]换教室(期望dp)
传送门 一道无脑的期望dp. 用f[i][j][0/1]表示前i堂课提出了j次申请且第i堂课没有(有)提出申请. 这样就可以状态转移了. 然而这题状态转移方程有点长... (主要是情况多... 代码: ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- BZOJ 4720 [Noip2016]换教室
4720: [Noip2016]换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i( ...
- 【BZOJ】4720: [Noip2016]换教室
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1690 Solved: 979[Submit][Status ...
- [NOIP2016]换教室 题解(奇怪的三种状态)
2558. [NOIP2016]换教室 [题目描述] 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1< ...
- 【bzoj4720】[NOIP2016]换教室
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- 【bzoj4720】[NOIP2016]换教室 期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- [NOIp2016] 换教室
题目类型:期望\(DP\) 传送门:>Here< 题意:现有\(N\)个时间段,每个时间段上一节课.如果不申请换教室,那么时间段\(i\)必须去教室\(c[i]\)上课,如果申请换课成功, ...
随机推荐
- js的event.preventDefault()与event.stopPropagation()
event.preventDefault()用法介绍 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "submit" ...
- 怎样在Ubuntu 14.04中安装Java(转)
想知道如何在Ubuntu 14.04中安装Java?安装Java肯定是安装Ubuntu 14.04后首先要做的几件事情之一(见http://www.linuxidc.com/Linux/2014-04 ...
- http协议相关
HTTP请求方法 HTTP消息头 HTTP请求头 HTTP响应头 HTTP cookie机制和实现原理 HTTP请求方法 超文本传输协议(HTTP, HyperText Transfer Protoc ...
- <Hadoop重装><centos><NameNode失效>
Overview 记一次真真切切的NameNode单点故障. 学校机房着火之后,刀片机上的四台服务器,唯独就NameNode彻底宕掉了,去机房看了下硬盘都坏了.. 所以只能换一个master咯.基本上 ...
- 《RECURRENT BATCH NORMALIZATION》
原文链接 https://arxiv.org/pdf/1603.09025.pdf Covariate 协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响实验结果. ...
- nodejs .http模块, cheerio模块 实现 小爬虫.
代码: var http = require("http"); var cheerio = require("cheerio"); var url = 'htt ...
- kbmMW SmartService控制返回类型
- Python 数据处理库 pandas 入门教程
Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...
- 2017MySQL中文索引解决办法 自然语言处理(N-gram parser)
问题:长期以来MYSQL搜索对于中文来说不太理想,InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,但是用“初级”一词在“我是一名初级开发者”搜索时是无法出现结果的,原因在于 ...
- ubuntu 安装php ,apache 问题总结
1.apache没有权限 修改log cd /var/www chmod -R 777 html/ 2. The bootstrap/cache directory must be presen ...