首页 > 其他分享 >二进制凑数+路线规划构造题

二进制凑数+路线规划构造题

时间:2024-10-17 18:44:27浏览次数:6  
标签:凑数 二进制 ts pos 路线 int else mx

妙啊妙啊
https://ac.nowcoder.com/acm/contest/92687/K

#include<bits/stdc++.h>
#define endl '\n'
#define lowbit(x) (x&-x)
using namespace std;
const double pi=acos(-1);
int pre[30];
void solve(){
    int n;cin>>n;
    vector<int> a(n+1);
    int mx=-1;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        mx=max(mx,a[i]);
    }
    int cnt=0,t=1;
    while(t<=mx){
        t<<=1;cnt++;
    }
    
    t>>=1;
    cnt--;
    
    pre[0]=1;
    for(int i=1;i<=26;i++){
        pre[i]=pre[i-1]*2;
    }
    vector ans(cnt+2, vector<int>());
    for(int i=0;i<=cnt+1;i++){
        ans[i].resize(i+1, 0);
        ans[i][0]=0;
        for(int j=1;j<=i;j++){
            if(j%2==1) ans[i][j]=1;
            else ans[i][j]=0;
        }
    }
    cout<<cnt+2<<endl;
    for(int i=0;i<=cnt+1;i++){
        for(int j=0;j<=i;j++){
            if(ans[i][j]==0){
                cout<<0<<" ";
            }
            else cout<<pre[i-1]<<" ";
        }
        cout<<endl;
    }
    vector<string> anss;
    for(int i=1;i<=n;i++){
        int t=a[i];
        string ts;
        int pos=0;
        
        for(int j=0;j<cnt+1;j++){
            if((t>>j)&1){
                if(ans[j][pos]){
                    ts+="L";
                }
                else{
                    ts+="R";pos++;
                }
            }
            else{
                if(!ans[j][pos]){
                    ts+="L";
                }
                else{
                    ts+="R";pos++;
                }
            }
        }
        anss.emplace_back(ts);
    }
    for(int i=0;i<n;i++){
        cout<<anss[i]<<endl;
    }
}
signed main(){
	ios::sync_with_stdio(false); cin.tie(nullptr);
	int t=1;
	//cin>>t;
	while(t--) solve();
	return 0;
}

标签:凑数,二进制,ts,pos,路线,int,else,mx
From: https://www.cnblogs.com/TaopiTTT/p/18472878

相关文章

  • 为什么很多人自学黑客,没过多久就放弃了(掌握正确的学习路线,才不会半途而废)
     网络安全是一个不断发展和演变的领域,以下是一个网络安全学习路线规划,旨在帮助初学者快速入门和提高自己的技能:基础知识:网络安全的基础知识包括网络结构、操作系统、编程语言等方面的知识。学习这些基础知识对理解网络安全的原理和技术至关重要。网络协议:了解各种网络协议的......
  • C++学习路线(十六)
    void类型指针void->空类型void*->空类型指针,只存储地址的值,丢失类型,无法访问,要访问里面的值我们必须对指针进行正确的类型转换,然后再间接引用指针所有其它类型的指针都可以隐式自动转换成void类型指针,反之需要强制转换。intarr[]={1,2,3,4,5};charch......
  • C++学习路线(十四)
    指针的自增操作查看数组与指针的关系#include<iostream>usingnamespacestd;intmain(){ intages[]={18,20,22,25,28}; intlen=sizeof(ages)/sizeof(ages[0]); cout<<"使用数组的方式访问元素"<<endl; for(inti=0;i<len;i++){ co......
  • C++学习路线(十五)
    多级指针#include<iostream>usingnamespacestd;intmain(){ intblock1=888; int*block2=&block1; int**block3=&block2; int***block4=&block3; int****block5=&block4; cout<<"block2:"<<*block2......
  • 网络安全系统教程+渗透测试+学习路线(自学笔记)_渗透测试工程师怎么自学
    一、什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也......
  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业_网络安全自学路线
    很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产......
  • 网络安全学习路线及各类杂项汇总,零基础入门到精通,收藏这篇就够了
    1.安全法(笔者认为学习网络安全前首先得学这个)不是这个↑网络安全法律:了解网络安全相关的法律法规和伦理标准。合规性与标准:学习ISO27001、GDPR等安全标准和合规要求。2.基础知识计算机网络基础:了解网络的基本原理,如TCP/IP协议、OSI模型、路由和交换等。操作系......
  • 大模型AI产品经理学习路线,2024最新,从零基础入门到精通,非常详细收藏我这一篇
    随着人工智能技术的发展,尤其是大模型(LargeModel)的兴起,越来越多的企业开始重视这一领域的投入。作为大模型产品经理,你需要具备一系列跨学科的知识和技能,以便有效地推动产品的开发、优化和市场化。以下是一份详细的大模型产品经理学习路线,旨在帮助你构建所需的知识体系,从零基......
  • C语言实现将一个输入的十进制数转换为二进制输出
    一、意义  由于计算机是由一系列电子元件组成的,这些元件只能处理两种状态:开和关。这两种状态可以用二进制表示,其中0代表关闭状态,1代表开启状态。因此,计算机只能存储和处理二进制数。二、原理方法除二取余法是一种将十进制数转换为二进制数的方法。其原理如下:将待转换的......
  • 2024-10-13:用go语言,给定一个二进制数组 nums,长度为 n, 目标是让 Alice 通过最少的行动
    2024-10-13:用go语言,给定一个二进制数组nums,长度为n,目标是让Alice通过最少的行动次数从nums中拾取k个1。Alice可以选择任何索引aliceIndex,如果对应的nums[aliceIndex]是1,Alice会拾取一个1并将其设为0。之后,Alice可以选择以下两种行动之一:将一个0变为1(最多执行maxCh......