首页 > 其他分享 >A. Build a Computer

A. Build a Computer

时间:2024-10-28 15:47:25浏览次数:5  
标签:cur int mid dep add Computer Build id

  • 独立做出了银牌题~
  • 线段树划分区间其实无须左闭右开
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int tot,id;
vector<int>a[1005],c[1005];
int t[1005][2];
void add(int u,int v,int w)
{
    a[u].push_back(v);
    c[u].push_back(w);
}
void ask(int l,int r,int u,int v,int dep)
{
    if(u<=l&&v>=r-1)
    {
        bool f=false;
        int cur=1;
        for(int i=19;i>dep;i--)
        {
            if((l>>i)&1)
            {
                f=true;
            }
            if(f==true)
            {
                if(!t[cur][(l>>i)&1])
                {
                    add(cur,++tot,(l>>i)&1);
                    t[cur][(l>>i)&1]=tot;
                }
                cur=t[cur][(l>>i)&1];
            }
        }
        add(cur,21-dep,(l>>dep)&1);
        id=min(id,21-dep);
        return;
    }
    int mid=(l+r)>>1;
    if(u<mid)
    {
        ask(l,mid,u,v,dep-1);
    }
    if(v>=mid)
    {
        ask(mid,r,u,v,dep-1);
    }
}
int main()
{
    int l,r;
    cin>>l>>r;
    for(int i=2;i<21;i++)
    {
        add(i,i+1,0);
        add(i,i+1,1);
    }
    tot=21;
    id=21;
    ask(0,(1<<20),l,r,20);
    cout<<tot-(id-2)<<endl;
    for(int i=1;i<=tot;i++)
    {
        if(i!=1&&i<id)
        {
            continue;
        }
        cout<<a[i].size();
        for(int j=0;j<a[i].size();j++)
        {
            cout<<' '<<a[i][j]-(id-2)<<' '<<c[i][j];
        }
        cout<<endl;
    }
    return 0;
}

标签:cur,int,mid,dep,add,Computer,Build,id
From: https://www.cnblogs.com/watersail/p/18510822

相关文章

  • Tips5 - 在头文件申明库后在Build时显示找不到文件实例
    问题介绍:当使用GetStringNameFromGuid时,它会显示在ShellPkg的Library下,但是当我们使用#include<Library/UefiHandleParsingLib.h>,会说找不到它的实例涉及知识点:这里会牵扯出LibraryClass和LibraryClassInstance的问题:LibraryClass是一组标准的API定义,用于提供某些......
  • 字符串谁更快?String vs StringBuilder大比拼
    在Java中处理字符串,String和StringBuilder都是常用的类,它们的区别有点像在厨房里选择不同的工具:String就像是一把只能用一次的纸杯,改一次就得换新的;而StringBuilder就像一只可以反复使用的水杯,随时可以修改。这两个类各有优缺点,咱们一起来看看它们的区别和用法吧。String......
  • BuildCTF 2024 Writeup - by 涉海蜉蝣
    BuildCTF2024Writeup-by涉海蜉蝣MiscEZ_ZIP-bysorin010查找分析发现压缩包,使用foremost分离疑似套娃压缩包,使用开源软件extractnow或者脚本都可以批量压缩,这里使用extractnow得到flagHEX的秘密-bysorin16进制每两位截取一次转10进制,对比Build的前几个字符......
  • BuildCTF2024-Crypto
    差一题古典不想看了,其他方向就不献丑了CryptoOVO开门爽!开到南天门了兄弟fromCrypto.Util.numberimport*flag=b'BuildCTF{******}'#随机生成p,qp=getPrime(1024)q=getPrime(1024)#计算模数nn=p*qe=65537m=bytes_to_long(flag)#c=m^e%nc=pow(......
  • BuildCTFwp
    自己本次比赛负责reverse,misc,crypto方向,web和pwn就不写了MiscFindYourWindows告诉了key文件,应该是磁盘类的题,用veracrypt解决提示桌面有问题,改成zip文件看看BuildCTF{I2t_s0_e5sy!!!}四妹?还是萍萍呢?fromPILimportImageimportqrcodedefstitch_images(image_pat......
  • COMP3811 Computer GraphicsModule code
    SchoolofComputing:assessmentbriefModuletitleComputerGraphicsModulecodeCOMP3811AssignmenttitleCoursework1AssignmenttypeanddescriptionProgrammingassignment:GraphicsfundamentalsRationaleThecourseworkrevolvesaroundfundamentalgraphi......
  • 使用RazorGenerator.MsBuild自定义razor页
    创建控制台项目使用类库项目,.netstandard.2.0nuget安装RazorGenerator.MsBuild这样在项目的packages目录能看到RazorGenerator.MsBuild.2.5.0razor页类定义namespaceRazorLib{publicabstractclassRazorPage{publicvirtualvoidExecute()......
  • Nuxt.js 应用中的 builder:watch 事件钩子详解
    title:Nuxt.js应用中的builder:watch事件钩子详解date:2024/10/24updated:2024/10/24author:cmdragonexcerpt:builder:watch是Nuxt.js中的一个生命周期钩子,在开发环境的构建过程期间被调用。它允许开发者在监视到项目中的文件或目录发生变化时,执行特定的操作。这......
  • 2024年计算机科学与智能算法国际论坛(CSIA 2024) 2024 International Symposium on C
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍2024年计算机科学与智能算法国际论坛(CSIA2024)将作为主会议第六届智能控制、测......
  • 探索 Python 构建新维度:Buildout 库全解析
    探索Python构建新维度:Buildout库全解析背景:为什么选择Buildout?在复杂的软件开发过程中,依赖管理和环境配置常常成为开发效率的瓶颈。Buildout,作为一个自动化构建工具,能够帮助我们解决这些问题。它不仅可以管理项目依赖,还能生成可重复的开发环境,简化部署流程。Buildout......