【BZOJ4720】【NOIP2016】换教室
我当年真是naive……
原题:
f[i][j][k],i是时间,j是用了多少次机会,k=0/1表示用了/没用
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 using namespace std; 7 int rd(){int z=0,mk=1; char ch=getchar(); 8 while(ch<'0'||ch>'9'){if(ch=='-')mk=-1; ch=getchar();} 9 while(ch>='0'&&ch<='9'){z=(z<<3)+(z<<1)+ch-'0'; ch=getchar();} 10 return z*mk; 11 } 12 int n,m,nn,mm,a[2100],b[2100]; double p[2100]; 13 int e[310][310]; 14 double f[2100][2100][2]; 15 void floyd(){ 16 for(int k=1;k<=nn;++k)for(int i=1;i<=nn;++i)for(int j=1;j<=nn;++j) 17 if(e[i][k]+e[k][j]<e[i][j]) e[i][j]=e[i][k]+e[k][j]; 18 } 19 int main(){//freopen("ddd.in","r",stdin); 20 memset(e,10,sizeof(e)); 21 cin>>n>>m>>nn>>mm; 22 for(int i=1;i<=n;++i) a[i]=rd(); 23 for(int i=1;i<=n;++i) b[i]=rd(); 24 for(int i=1;i<=n;++i) scanf("%lf",&p[i]); 25 int l,r,v; 26 while(mm--){ l=rd(),r=rd(),v=rd(); e[l][r]=e[r][l]=min(v,e[l][r]);} 27 for(int i=1;i<=nn;++i) e[i][i]=0; 28 floyd(); 29 for(int i=1;i<=n;++i)for(int j=0;j<=m;++j) f[i][j][0]=f[i][j][1]=1e30; 30 f[1][0][0]=f[1][1][1]=0; 31 for(int i=2;i<=n;++i)for(int j=0;j<=m;++j){ 32 f[i][j][0]=min(f[i-1][j][0]+e[a[i-1]][a[i]],f[i-1][j][1]+e[a[i-1]][a[i]]*(1-p[i-1])+e[b[i-1]][a[i]]*p[i-1]); 33 if(j>=1){ 34 f[i][j][1]=min(f[i][j][1],f[i-1][j-1][0]+e[a[i-1]][a[i]]*(1-p[i])+e[a[i-1]][b[i]]*p[i]); 35 f[i][j][1]=min(f[i][j][1],f[i-1][j-1][1]+e[a[i-1]][a[i]]*(1-p[i-1])*(1-p[i])+e[a[i-1]][b[i]]*(1-p[i-1])*p[i] 36 +e[b[i-1]][a[i]]*p[i-1]*(1-p[i])+e[b[i-1]][b[i]]*p[i-1]*p[i]); 37 } 38 } 39 double ans=1e30; 40 for(int i=0;i<=m;++i) ans=min(ans,min(f[n][i][0],f[n][i][1])); 41 printf("%.2lf\n",ans); 42 return 0; 43 }
View Code
转载于:https://www.cnblogs.com/JSL2018/p/6550524.html
【BZOJ4720】【NOIP2016】换教室相关推荐
- BZOJ 4720 [Noip2016]换教室
4720: [Noip2016]换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i( ...
- [NOIP2016]换教室(概率期望$DP$)
其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...
- noip2016 换教室
题目描述 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课 ...
- Noip2016换教室
传送门! Simple Description: 牛牛有$n$节课要上,每个时段都有$2$个教室在上课(具体来说是第$c[i]$与第$d[i]$个教室),牛牛在其中的一个教室上课,牛牛起初每节课分别被 ...
- BZOJ 4720: [Noip2016]换教室
错是被学长挑出来的...QWQ@Monster_Yi f[i][j][0/1] 为 第i天,换j次,换1/没换0 然后大力DP #include<cstdio> #include<i ...
- luogu1850 [NOIp2016]换教室 (floyd+dp)
首先floyd求出每两点间的距离(注意自己到自己的距离要设成0) 然后就是dp了 一开始照着Lifeguards的样子,钦定了一下i这个点一定要选,然后发现复杂度不对,还想了好长时间优化 然后一翻题解 ...
- 洛谷1850(NOIp2016) 换教室——期望dp
题目:https://www.luogu.org/problemnew/show/P1850 状态里记录的是"上一回有没有申请",而不是"上一回申请成功否",不 ...
- P1850 [NOIP2016 提高组] 换教室
P1850 [NOIP2016 提高组] 换教室 题意: 有2n个课安排在n个时间段上,每个时间段上都有两个一样的课同时在不同地方上,起初牛牛被所有课都被安排在Ci上课,另一节课在Di上课.牛牛现在想 ...
- 【NOIp2016 day1t3】换教室
NOIP第一次考期望,着实吓一跳... 读入之后, 由于 n<=200 n <= 200 n,给我们建立了天然的 floyd f l o y d floyd的机会, 建完图之后,能够顺利的 ...
- 【DP】【期望】$P1850$换教室
[DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...
最新文章
- 屏显有啥硬科技可卷?让现在电视厂商这么拼
- 中序遍历的非递归算法
- redis主从配置 从而实现数据备份和读写分离
- 115天 起飞ing
- 直接在Dao层进行测试的问题
- VTK:IO之ExportPolyDataScene
- Java之品优购课程讲义_day20(5)
- JSP作业1--5!
- alter 用法集合(持续更新)
- Windows版JMeter下载安装
- PMP试题 | 每日一练,快速提分 9.3
- BOOST升压电路PCB布局布线
- 【android 高德地图出现定位失败key鉴权失败,获取 SHA1,对比是否正确】
- rockbox主题包安装_RockBox 安装使用参考
- 飞塔防火墙虚拟服务器,飞塔防火墙模拟(1):模拟器使用方法 | 网络之路博客(公众号同名)(其他平台网络之路Blog)...
- 【微信小程序】Java岗面试12家大厂成功跳槽
- unity3d俄罗斯方块源码教程+源码和程序下载
- vue3以及vue2自定义封装v-model
- 语义分割算法性能比较_语义分割江湖那些事儿
- 坐拥千万用户,覆盖百余行业,脉脉却挣扎在“塔西佗陷阱”