首页 > 其他分享 >D. Bank Security Unification

D. Bank Security Unification

时间:2022-10-03 22:13:35浏览次数:82  
标签:int 二进制位 Unification Bank Security dp

D. Bank Security Unification

https://codeforces.ml/group/MKpYqfAQQQ/contest/401639/problem/D

题意

给你一个数列 你可以选择一个子序列(可以不连续) 这个序列的贡献就是选出的子序列中每相邻两个数的按位与和\(/sum_i=1^k f[i]^f[i+1]\)

思路

容易想到一个\(n^2\)的dp做法 \(dp[i] = max(dp[j] + a[j]&a[i], dp[i])\) dp[i]代表前选第i个的最优解
对于i j k 相邻的三个数 如果\(f[i]&f[k]\)的最高位是p 而\(f[i]&f[j]\)和\(f[j]&f[k]\)该位上都是1 那么选择i j k比只选择i j更优
所以我们可以在dp转移时记录一下每个二进制位上离当前位置最近的1的位置序号 然后当前位置只要那几个相应二进制位为1的位置转移过来就好了
时间复杂度为 \(O(n^2)\) 到\(O(nlgn)\)

#include<bits/stdc++.h>
#define ll long long
#define all(a) a.begin(),a.end()
using namespace std;

const int N = 1e6 + 5;
ll n, a[N], dp[N], g[N];

void solve() {
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];

    for (int i = 1; i <= n; i++) {
        //dp[i] = a[i];
        for (ll j = 40; j >= 0; j--) {
            dp[i] = max(dp[i], dp[g[j]] + (a[g[j]] & a[i]));
            if ((1ll << j) & a[i]) g[j] = i;//更新第i位为1的位置
        }
    }
    ll mx = 0;
    for (int i = 0; i <= n; i++) mx = max(dp[i], mx);
    cout << mx << "\n";
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int _t = 1;
    //cin >> _t;
    while (_t--)
        solve();
    return 0;
}

标签:int,二进制位,Unification,Bank,Security,dp
From: https://www.cnblogs.com/yaqu-qxyq/p/16751404.html

相关文章

  • SpringSecurity异常处理器
    原理在SpringSecurity中,在认证或者授权的过程中出现的异常会被ExceptionTranslationFilter捕获到,在ExceptionTranslationFilter中会去判断这异常是认证失败还是授权失败产......
  • 【Spring】SpringSecurity的使用
    4SpringSecurity只需要协助SpringSecurity创建好用户对应的角色和权限组,同时把各个资源所要求的权限信息设定好,剩下的像“登录验证”、"权限验证"等等工作都交给Spring......
  • security + cloud模板
    前言​​案例地址​​​​镜像地址​​部署当前项目为cloud+security案例模板,要部署cloud项目,将每个模块打成jar包上传到服务器,之后打成镜像打成镜像后启动容器报错:​​no......
  • security单点登录案例
    案例简介前端发送登录请求,登录成功后,将用户信息及该用户所拥有的权限保存到redis数据库中,同时生成token,将token放到cookie中返回给前端;之后前端每次向后端发送请求时,将token......
  • 整合security跨域问题
    publicclassSecurityConfigextendsWebSecurityConfigurerAdapter{@AutowiredprivateUserDetailsServiceuserDetailsService;//动态认证@Override......
  • 启动 Hello Spring Security Boot 应用
    本文章对如何快速启动一个启动HelloSpringSecurityBoot应用进行说明。下载代码在这个项目中,使用的是 spring.io 的项目生成程序,生成的地址为:https://start.sprin......
  • Spring Security 在 Servlet 的作用区域
    SpringSecurity使用标准的Servlet 过滤器(Filter) 并与Servlet容器集成。这个意味着SpringSecurity可以在任何运行运行在Servlet容器(ServletContainer)中的应用......
  • 万字长文,SpringSecurity
    权限系统躲不开的概念,在Shiro和SpringSecurity之间,你一般选啥?在前后端分离的项目中,你知道怎么Springsecurity整合JWT么,来看看这篇文章哈!思维导图如下:RBAC全称为基于......
  • Spring Security 介绍中的 servlet 和 reactive
    最近在看看SpringSecurity中的内容。看到了下面一段话,还挺拗口的。SpringSecurity提供了一个验证(authentication),授权(authorization),和保护常见攻击的框架。Sprin......
  • Oauth2.0 用Spring-security-oauth2 来实现
    前言:要准备再次研究下统一认证的功能了,我还是觉得实现统一认证用Oauth2最好了,所以,现在再次收集资料和记笔记。正文:一、概念理解    OAuth2,是个授权协议,......