zoukankan      html  css  js  c++  java
  • 【BZOJ4007】[JLOI2015]战争调度(动态规划)

    【BZOJ4007】[JLOI2015]战争调度(动态规划)

    题面

    BZOJ
    洛谷

    题解

    神仙题,我是做不来。
    一个想法是设(f[i][j])表示当前考虑到(i)节点,其子树内有(j)个人选择了打仗的最大贡献。
    但是我们发现直接做我们并不会转移,因为我们不知道每个儿子的选择情况。
    那么我们直接爆搜这条链上的每个点的情况,这样子到了叶子节点就可以直接转移上去。
    而这样子爆搜的条件下,显然一个点的左右两个儿子是独立的,即转移是互不影响的,所以这样子并没有问题。
    那么复杂度是什么呢?
    我们理解为每个叶子节点都要对应的爆搜一次所有父亲的答案,这样子复杂度就是(O(2^{2n})),然后对于每一个点考虑,然后对于每一种爆搜情况,还要(O(n))的转移。
    所以复杂度就是(O(2^{2n}n))

    #include<iostream>
    #include<cstdio>
    using namespace std;
    #define MAX 1100
    inline int read()
    {
    	int x=0;bool t=false;char ch=getchar();
    	while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
    	if(ch=='-')t=true,ch=getchar();
    	while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    	return t?-x:x;
    }
    int w1[MAX][MAX],w2[MAX][MAX];
    int n,m,f[MAX][MAX],ans;
    bool vis[MAX];
    void dfs(int u,int d)
    {
    	for(int i=0;i<=(1<<d);++i)f[u][i]=0;
    	if(!d)
    	{
    		for(int i=1;i<=n;++i)
    			if(vis[i])f[u][1]+=w1[u][i];
    			else f[u][0]+=w2[u][i];
    		return;
    	}
    	vis[d]=false;dfs(u<<1,d-1);dfs(u<<1|1,d-1);
    	for(int i=0;i<=(1<<(d-1));++i)
    		for(int j=0;j<=(1<<(d-1));++j)
    			f[u][i+j]=max(f[u][i+j],f[u<<1][i]+f[u<<1|1][j]);
    	vis[d]=true;dfs(u<<1,d-1);dfs(u<<1|1,d-1);
    	for(int i=0;i<=(1<<(d-1));++i)
    		for(int j=0;j<=(1<<(d-1));++j)
    			f[u][i+j]=max(f[u][i+j],f[u<<1][i]+f[u<<1|1][j]);
    }
    int main()
    {
    	n=read();m=read();
    	for(int i=0;i<(1<<(n-1));++i)
    		for(int j=1;j<n;++j)w1[i+(1<<(n-1))][j]=read();
    	for(int i=0;i<(1<<(n-1));++i)
    		for(int j=1;j<n;++j)w2[i+(1<<(n-1))][j]=read();
    	dfs(1,n-1);
    	for(int i=0;i<=m;++i)ans=max(ans,f[1][i]);
    	printf("%d
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    程序命名规则
    CSS样式常用命名参考
    转:数据挖掘资料收集
    javascript占位符
    网站目录,文件夹命名规范
    IIS HTTP 500 内部服务器错误完美解决 IIS 服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别
    人事工资合同管理系统菜单截图
    Vs 正则表达式 查找替换 微软权威参考
    什么是DNS,A记录,子域名,CNAME别名,MX记录,TXT记录,SRV 记录,TTL值
    MT主机控制面板Plesk 使用指南
  • 原文地址:https://www.cnblogs.com/cjyyb/p/10766876.html
Copyright © 2011-2022 走看看