• LOJ_6178_景区路线规划


    LOJ_6178_景区路线规划

    题意:

    游乐园被描述成一张 n 个点,m 条边的无向图(无重边,无自环)。每个点代表一个娱乐项目,第 i 个娱乐项目需要耗费 ci​​ 分钟的时间,会让小 y 和妹子的开心度分别增加 h1ih1_ih1​i​​ , h2ih2_ih2​i​​ ,他们俩初始的开心度都是 000 。每条边代表一条路,第 iii 条边连接编号为 xix_ix​i​​ , yiy_iy​i​​ 的两个娱乐项目,从 xix_ix​i​​ 走到 yiy_iy​i​​ 或者从 yiy_iy​i​​ 走到 xix_ix​i​​ 耗费的时间都是 tit_it​i​​ 分钟。小 y 和妹子预计在游乐园里玩 kkk 分钟。最开始的时候,小 y 和妹子会等概率的随机选择一个娱乐项目开始玩,每玩完一个项目后,小 y 和妹子会等概率的随机选择一个可以从当前项目直达的且来得及玩的项目作为下一个项目。如果玩完一个项目后周围没有可以直达的且来得及玩的项目,小 y 和妹子就会提前结束游玩。 请你分别计算小 y 和妹子在游玩结束后开心度的期望。

    分析:

    我们来理解一下为什么期望反着推比较好
    定义f[i][j]表示时间为i,位置为j,这个点花时间玩了,到游玩结束的期望。
    如果我们定义f[i][j]表示时间为i,到j这个位置能获得的期望则会比较麻烦,
    因为这么推需要求一遍每个时刻到每个点的概率。
    而反着推到这个点的概率就是(1/这个点能到达的点的个数)。
    f[i][j] = ∑(f[i+1][k]+val[k to j])/tot  (tot为j能到达的点的个数)
    小y和妹子的期望分别计算
    ans = ∑(f[T-c[i]][i])

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    #define du double
    #define M 20050
    int head[110],to[M],nxt[M],val[M],cnt,n,m;
    du f[110][500],g[110][500];
    int h1[110],h2[110],T,c[110];
    inline void add(int u,int v,int w){
    	to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;val[cnt]=w;
    }
    int main(){
    	scanf("%d%d%d",&n,&m,&T);
    	for(int i=1;i<=n;i++){
    		scanf("%d%d%d",&c[i],&h1[i],&h2[i]);
    	}
    	int x,y,z;
    	for(int i=1;i<=m;i++){
    		scanf("%d%d%d",&x,&y,&z);
    		add(x,y,z);add(y,x,z);
    	}
    	for(int i=0;i<=T;i++){
    		for(int j=1;j<=n;j++){
    			int tot=0;
    			for(int k=head[j];k;k=nxt[k]){
    				int t=to[k];
    				if(i-val[k]-c[t]>=0){
    					tot++;
    					f[j][i]+=f[t][i-val[k]-c[t]];
    					g[j][i]+=g[t][i-val[k]-c[t]];
    				}
    			}
    			if(tot)f[j][i]/=tot,g[j][i]/=tot;
    			f[j][i]+=h1[j],g[j][i]+=h2[j];
    		}
    	}
    	du ans1=0,ans2=0;
    	for(int i=1;i<=n;i++){
    		ans1+=f[i][T-c[i]];
    		ans2+=g[i][T-c[i]];
    	}
    	printf("%.5lf %.5lf",ans1/n,ans2/n);
    }
    
  • 相关阅读:
    netstat命令查看服务器运行情况
    分布式架构进化之路
    显示器 Linux 性能 18 (一个命令行工具传递)
    _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0
    CMDeviceMotion使用
    Ubuntu 安装和配置minicom
    树阵
    HTML5在input背景提示文本(placeholder)的CSS美化
    PowerDesigner反projectM连接ySql没有mySql odbc驱动器
    Flume 1.5日志收集和存款mongodb安装结构
  • 原文地址:https://www.cnblogs.com/suika/p/8511841.html
Copyright © 2020-2023  润新知