zoukankan      html  css  js  c++  java
  • AT4168 [ARC100C] Or Plus Max

    (whk)回来了。

    考虑我们需要维护一个子集的信息。
    对于二进制的子集信息维护有一个很经典的操作:
    高维前缀和。

    AT4168 [ARC100C] Or Plus Max
    // Problem: AT4168 [ARC100C] Or Plus Max
    // Contest: Luogu
    // URL: https://www.luogu.com.cn/problem/AT4168
    // Memory Limit: 1000 MB
    // Time Limit: 2000 ms
    // 
    // Powered by CP Editor (https://cpeditor.org)
    
    #include<iostream>
    #include<cstdio>
    #define ll long long
    #define N 1000005
    
    struct P{
    	int mx1,mx2;
    }f[N];
    
    ll n;
    
    int main(){
    	scanf("%lld",&n);
    	for(int i = 0;i <= (1 << n) - 1;++i){
    		ll x;
    		scanf("%lld",&x);
    		f[i].mx1 = x;
    		f[i].mx2 = 0;
    	}
    	for(int i = 0;i <= n - 1;++i){
    		for(int j = 0;j <= (1 << n) - 1;++j){
    			if(j & (1 << i)){
    				int to = j ^ (1 << i);
    				P k;
    				if(f[j].mx1 > f[to].mx1){
    					k.mx1 = f[j].mx1;
    					k.mx2 = std::max(f[to].mx1,f[j].mx2);
    				}
    				else{
    					k.mx1 = f[to].mx1;
    					k.mx2 = std::max(f[to].mx2,f[j].mx1);
    				}
    				f[j] = k;
    			}
    			
    		}
    	}
    	ll ans = 0;
    	for(int i = 1;i <= (1 << n) - 1;++i)
    	std::cout<<(ans = std::max(ans,(ll)f[i].mx1 + f[i].mx2))<<std::endl;
    }
    
  • 相关阅读:
    性能测试之数据准备
    工作笔记
    Ruby on Rails 模型关联(多对多关系)
    oracle 分页查询优化
    mysql命令学习
    mysql 导入导出
    aix 管理网卡
    dataguard没成功创建数据文件
    aix删除网卡
    oracle rac 随笔
  • 原文地址:https://www.cnblogs.com/dixiao/p/14985698.html
Copyright © 2011-2022 走看看