• 有线电视网


    洛咕

    题意:某收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。从转播站到转播站以及从转播站到所有用户终端的信号传输费用都是已知的,一场转播的总费用等于传输信号的费用总和。现在每个用户都准备了一笔费用想观看这场精彩的足球比赛,有线电视网有权决定给哪些用户提供信号而不给哪些用户提供信号。写一个程序找出一个方案使得有线电视网在不亏本的情况下使观看转播的用户尽可能多。

    分析:设(size[i])表示以i为根的子树中所包含的叶节点(用户终端)的数量,(f[i][j])表示以(i)为根的子树中满足(j)个用户的最大收益.则(f[i][j]=max_{f[i->son][k]+f[i][j-k]-w[i][i->son]}),其中(1<=j<=size[i],1<=k<=size[i->son]).因为(j=0,k=0)的讨论没有意义,所以从1开始分析.

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<queue>
    #include<map>
    #include<set>
    #define ll long long
    using namespace std;
    inline int read(){
        int x=0,o=1;char ch=getchar();
        while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
        if(ch=='-')o=-1,ch=getchar();
        while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
        return x*o;
    }
    const int N=3005;
    int a[N],size[N],f[N][N];
    int tot,head[N],to[N],nxt[N],w[N];
    inline void add(int a,int b,int c){
    	nxt[++tot]=head[a];head[a]=tot;
    	to[tot]=b;w[tot]=c;
    }
    inline void dfs(int u){
    	for(int i=head[u];i;i=nxt[i]){
    		int v=to[i];
    		dfs(v);
    		size[u]+=size[v];
    		for(int j=size[u];j>=1;--j){
    			for(int k=1;k<=size[v];++k){
    				if(j-k>=0)f[u][j]=max(f[u][j],f[v][k]+f[u][j-k]-w[i]);
    			}
    		}
    	}
    }
    int main(){
    	int n=read(),m=read();
    	for(int i=1;i<=n-m;++i){
    		int sum=read();
    		for(int j=1;j<=sum;++j){
    			int num=read(),val=read();
    			add(i,num,val);
    		}
    	}
    	memset(f,-0x3f,sizeof(f));
    	for(int i=n-m+1;i<=n;++i){
    		a[i]=read();size[i]=1;
    		f[i][1]=a[i];
    	}
    	for(int i=1;i<=n;++i)f[i][0]=0;
    	dfs(1);
    	for(int i=m;i>=0;--i)
    		if(f[1][i]>=0){
    			printf("%d
    ",i);
    			break;
    		}
        return 0;
    }
    
    
  • 相关阅读:
    游戏中转轮抽奖的算法实现[转]
    前端的一份配置(备份)
    [转]Jquery通用开源框架之【ejq.js】
    【完整靠谱版】结合公司项目,仔细总结自己使用百度编辑器实现FTP上传的完整过程
    用Putty连接Linux
    使用Nginx的proxy_cache缓存功能取代Squid
    nginx for windows 配置多域名反向代理
    详细解析用Squid实现反向代理的方法
    用Squid和DNSPod打造自己的CDN详细教程
    WINDOWS下的squid
  • 原文地址:https://www.cnblogs.com/PPXppx/p/11347962.html
Copyright © 2020-2023  润新知