[校内模拟]binary(状压DP)

67. Add Binary [easy] (Python) 题目链接 https://leetcode.com/problems/add-binary/ 题目原文 题目翻译 思路方法 思路一 代码 说明 思路二 代码 说明 思路三 代码 说明 PS: 新手刷LeetCode,新手写博客,写错了或者写的不清楚还请帮忙指出,谢谢! 转载请注明: 阅读详情

=== ===

这里写图片描述

=== ===

题解

学姐那次胡策的三道题全用的zyf当题面2333@zyf2000
(Update-两分钟后:zyf2000想要打击报复差点把上面那句话删掉!!!)
一开始还想用字典树搞来着。。但是字典树的话只是处理异或运算比较方便啊。。并且a的范围来讲O(n2)的复杂度也不大科学是吧。
然后就有了一个非常厉害的做法:把数字分成两部分去DP!
用f[i][j]表示出现过的前8位为i的数和某个后8位为j的数做题目中给定的位运算能得到的后8位的最大值,同时用g[i][j]记录方案数。
设当前操作数的前8位是a,后8位是b,插入数的时候枚举所有的j,用j和b的运算结果来更新f[a][j];计算答案的时候枚举所有出现过的i,用i和a的运算结果拼上f[i][b]来更新答案。这样的话因为28非常小啊所以时间复杂度也相当科学。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int Max=256;
int n,type,f[510][510],g[510][510],a[100010];
char opt[10];
bool ext[500];
int calc(int x,int y){
    switch (opt[0]){
        case 'a':return x&y;
        case 'o':return x|y;
        case 'x':return x^y;
    }
}
void update(int k){
    int a,b;
    a=k>>8;b=k-(a<<8);
    for (int i=0;i<=Max;i++){
        int dlt=calc(i,b);
        if (dlt>f[a][i]){
            f[a][i]=dlt;g[a][i]=1;
        }else
          if (dlt==f[a][i])
            ++g[a][i];
    }
    ext[a]=true;
}
void getans(int k){
    int a,b,ans1,ans2;
    a=k>>8;b=k-(a<<8);
    ans1=ans2=0;
    for (int i=0;i<=Max;i++)
      if (ext[i]==true){
          int dlt=(calc(i,a))<<8;
          dlt=dlt|f[i][b];
          if (dlt>ans1){ans1=dlt;ans2=g[i][b];}
          else if (dlt==ans1) ans2+=g[i][b];
      }
    if (type==0) printf("%d\n",ans1);
    else printf("%d %d\n",ans1,ans2);
}
int main()
{
    freopen("binary.in","r",stdin);
    freopen("binary.out","w",stdout);
    scanf("%d%s%d",&n,&opt,&type);
    for (int i=1;i<=n;i++) scanf("%d",&a[i]);
    update(a[1]);
    for (int i=2;i<=n;i++){
        getans(a[i]);
        update(a[i]);
    }
    return 0;
}

偏偏在最后出现的补充说明

如果直接把所有数字存在状态里的话65536*65536肯定卡飞对吧但是这样把它分成两部分来搞的话就非常科学了。关键在于利用位运算各位之间的独立性。

PX4无人机-Gazebo仿真实现动态目标追踪的视觉控制方案 本文详细介绍了PX4无人机在Gazebo仿真环境中实现动态目标追踪的视觉控制方案。从PX4与Gazebo仿真环境搭建、动态目标追踪核心技术栈、仿真环境深度定制技巧到追踪算法的优化实践,提供了全面的技术指导和常见问题排查方法,帮助开发者高效实现无人机视觉追踪功能。 阅读详情

相关推荐

【G4基础08】GPS-2-Macro Commands宏命令

GPS-2

adelall的博客 3738

Binary Transformations 题解

问题 F: Binary Transformations 题目描述 There are n bits. Each bit i has a value ai (0 or 1) and an associated cost ci. We can change the value of bit i with a cost computed as the sum of all the costs cj o...

失踪人口的年更日常 578

Unity 接入HybridCLR的点点滴滴,亲测三平台(PC、Android、WebGL)妥妥的。-问题分享

一入热更深似海啊,没有热更是真恼火啊,干啥啥不方便,动不动就得重新发包;说实在的,也是工作之余研究这个,在原有框架基础上接入这个热更,既要保持原有功能,还要支持热更,实实在在、断断续续搞了这么久,终于是接入并测通了,这一路是坎坎坷坷,下面把走过的弯弯绕绕记录下,希望对后来想接入的小伙伴有帮助吧。

GarFe的博客 1万+

Codility经典算法题之一 :binary gap

Codility(code+ablity)是一个主要面向面试者的OJ (online judge)平台,(Codility OJ is a platform for preparing technical coding interviews)。目前coldility网站一共有63道经典算法题,网址:https://app.codility.com/programmers/lessons 本博将会把...

数据库 3575

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例 简介   这是一个回归预测的实例,数据集来自李宏毅的《机器学习》课程的第一次作业,可以用来训练一个线性回归模型或者其他的回归模型,动手实践学习到的理论知识,在实践中去发现问题。这篇文章主要包括数据集的解释、数据的预处理过程及线性回归模型的代码实现这三个部分。由于这个数据集并不能直接使用,还需进行一些重构,为了对初学者更友好一些,我会提供重构完的可以读取后就直接使用的数据集,我也会提供 Matlab\rm MatlabMatlab 可直接使用

qq_27309515的博客 3574

26届数字IC秋招笔试面试全攻略 - CPU基础架构-数字IC设计专家

本文介绍了CPU基础架构的三大关键技术:流水线、冒险处理和指令集设计。首先解析了经典五级流水线结构(取指、译码、执行、访存、写回)及其性能指标。其次详细阐述了三种流水线冒险(数据、控制、结构)及解决方案,如数据前递、分支预测等。最后对比了RISC与CISC指令集特点,并以RISC-V为例说明指令格式设计原则。全文系统梳理了CPU核心架构知识,为数字IC设计提供重要参考。

2301_79143213的博客 931

DP24 最优BST Optimal Binary Search Tree @geeksforgeeks

Given a sorted arraykeys[0.. n-1]of search keys and an arrayfreq[0.. n-1]of frequency counts, wherefreq[i]is the number of searches tokeys[i]. Construct a binary search tree of all keys such that th...

系统 运维 295

MIKE水动力笔记4_制作网格

建立水动力模型前的重要一步就是制作网格,本文所讲内容就是如何在MIKE中制作网格。

晏长街的博客 2万+

【JZ雅礼联考】Binary 题解

题目大意      ~~~~~~给定一个长度为n的整数数列a和q次操作:       ~~~~~~修改操作:形如 1 x y,表示将axa_x的值修改为y;       ~~~~~~询问操作:形如 2 x y,表示询问∑n1(ai+x) and y\sum_1^n(a_i+x)~and~y的值。【40%】n,q<=5000      ~~~~~~

Four's 1222

PyTorch实战:卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类

PyTorch可以说是三大主流框架中最适合初学者学习的了,相较于其他主流框架,PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是,框架可以类比为编程语言,仅为我们实现项目效果的工具,也就是我们造车使用的轮子,我们重点需要的是理解如何使用Torch去实现功能而不要过度在意轮子是要怎么做出来的,那样会牵扯我们太多学习时间。以后就出一系列专门细解深度学习框架的文章,但是那是较后期我们对深度学习的理论知识和实践操作都比较熟悉才好开始学习,现阶段我们最需要的是学会如何使用这些工具。

master_hunter的博客 8935

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4628

编程挑战赛offer直通攻略:算法、数据结构与备赛路线全解析

算法与数据结构是技术面试的基石,尤其在互联网大厂招聘中,动态规划、图论等考点决定着候选人能否脱颖而出。编程挑战赛正是将这一筛选逻辑压缩为高密度实战:通过限时算法题、团队协作与工程表达,综合评估代码能力与思维深度。掌握核心数据结构的应用原理、理解复杂度优化思路,并在模拟赛中锤炼临场策略,是获得offer直通资格的关键路径。从“刷题—笔试—面试”的漫长链路到一赛定结果,挑战赛不仅为企业降本增效,也为求职者提供了更高效的展示舞台。无论是备战校招还是冲刺实习,系统化备赛与规范化编码习惯,都能显著提升胜率。

weixin_34343000的博客 428

华为OD机试真题:明日之星选举 (Java/Py/C/ C++/JS/GO)

华为OD机试(机考)双机位C卷 【明日之星选举】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 明日之星选举。

qq_45776114的博客 919

[BZOJ1057][ZJOI2007]棋盘制作(极大子矩形)

发题解真是一种既颓废又有用的活动= =

ADP+Pi==ATP 1189

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[BZOJ2669][cqoi2012]局部极小值(状压DP+容斥原理)

ATP它们学校这次要连上三周课。。MD平常这个时候都该盼着放假了结果现在还离大周遥遥无期呢。。。(╯‵□′)╯︵┻━┻

ADP+Pi==ATP 1181

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[BZOJ4455][Zjoi2016]小星星(容斥原理+树形DP)

lx表示Loli可能要给ATP它们放高考假?嘎嘎嘎嘎嘎!!!!

ADP+Pi==ATP 1137

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[BZOJ2131]免费的馅饼(DP+树状数组)

ATP感觉今天晚上不想干啥正经事儿。。。

ADP+Pi==ATP 1136

[BZOJ3622]已经没有什么好害怕的了(容斥原理+DP)

今天下午放假!放两天喔!~除了寒暑假和机房维修从来没放过这么长的假!

ADP+Pi==ATP 914

[BZOJ1912][Apio2010]patrol 巡逻(树上最长链)

zyf2000说如果我搭博客她就把草稿箱里的题解发出来嘿嘿嘿嘿嘿嘿嘿嘿嘿

ADP+Pi==ATP 803

[Codeforces781D]Axel and Marston in Bitland(DP+bitset)

今天和cloverhxy一起看了一大波会考题。。。

ADP+Pi==ATP 759

[BZOJ2244][SDOI2011]拦截导弹(DP+CDQ分治)

ATP昨天达成了【在机房一天不吃零食】成就

ADP+Pi==ATP 737

[BZOJ3530][Sdoi2014]数数(AC自动机+数位DP)

今天中午去逛超市买明天吃的零食!

ADP+Pi==ATP 675

[BZOJ2461][BeiJing2011]符环(记忆化搜索)

还有二十分钟就要下课了诶。ATP马上就要回家收拾东西准备明天出发了!

ADP+Pi==ATP 595

[校内测试]宝藏(树形DP)

你说人类为什么要发明体育会考这种东西。。ATP停课的时候落了好多没考结果最后还得补上= =

ADP+Pi==ATP 588

[CodeVS3012]线段覆盖4(DP+二分)

ATP的老师不让在机房里吃零食可是ATP怎么会听他的呢

ADP+Pi==ATP 578

[校内模拟]最优得分(背包DP)

ATP的爸爸说到周末去日照的时候会特别冷最低温度到零下诶。

ADP+Pi==ATP 566
上一篇: [校内模拟]最小生成树(Tarjan)
下一篇: [校内模拟]One(递推)
FromATP
博客等级 码龄10年 75粉丝 163原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值