首页 > 其他分享 >Trip to the Olympiad

Trip to the Olympiad

时间:2025-01-10 14:43:36浏览次数:1  
标签:-- bi tp int ai Olympiad bit Trip

题目链接与大意

  https://codeforces.com/contest/2057/problem/C

  本题大意是给给你两个数,用来构造第三个数,要求这三个数互相进行Bitwise XOR得出的新的三个数的相加最大。

思路

  将给出的两个数进行二进制转换,根据题意,得出三个数的二进制中的每一位不能全为0或1,因此对于第三个数由以下规则构建:

  1. 若ai=ci, 则令bi = ai Bitwise XOR 1
  2. 若ai!=ci,则令bi = 1。若当前值大于最大值,则为0。

  不过此处若ai!=ci,则令bi = 0。若当前值大于最大值,则为1。就不通过,暂时不知道原因,若有网友知道,请私信。

void test() {
    ll a,c;
    std::cin>>a>>c;
    std::bitset<max>bit_a(a), bit_c(c), bit_b;
    int tp = max-1;
    for(;;tp--){
        if(bit_a[tp]!=bit_c[tp]) {
            break;
        }
    }
    for(int i=max;i>tp;i--){
        bit_b[i] = bit_a[i];
    }
    for(int i=tp;i>=0;i--) {
        if (bit_a[i] == bit_c[i]) {
            bit_b[i] = !bit_a[i];
        }
    }
    for(int i=tp;i>=0;i--) {
        if (bit_a[i] != bit_c[i]) {
            bit_b[i] = true;
            if(bit_b.to_ullong()>=c){
                bit_b[i] = false;
            }
        }
    }
    ll b;
    b = bit_b.to_ullong();
    std::cout<<a<<" "<<b<<" "<<c<<'\n';
}

收获与思考

在一开始的时候,我使用如下代码

for(int i=tp;i>=0;i--) {
    if (bit_a[i] == bit_c[i]) {
        bit_b[i] = !bit_a[i];
    }
    else {
        bit_b[i] = true;
        if(bit_b.to_ullong()<=a){
            bit_b[i] = false;
        }
    }
}

很显然出现了问题,经过分析,发现我的两个规则条件是出现if else的对抗关系,但是两个条件之后的操作不是完全对立的,而是出现先后联系(若当前值大于最大值,则为0这一条件应该是最后执行)。所以错误代码有时候的输出的b会大于上限,但是正确代码识别出这一层因果联系,先是进行规则1,再进行规则2,保证了条件的对立与操作的有序。

标签:--,bi,tp,int,ai,Olympiad,bit,Trip
From: https://www.cnblogs.com/freeman271828/p/18663885

相关文章

  • 关于此题CF[Hello 2025] 2057C - Trip to the Olympiad的一些总结
    传送门题目大意:给定两个数l,r,试求l~r中选三个数a,b,c,使得\((axorb)+(bxorc)+(axorc)\)的值最大。有关此类异或最大的题目,首先想到的是确定最高位,因为假如说异或后二进制下k位置为1,那么此时答案就已经比k位置不为1,而k以后的位置都是1的情况要大了。而观察l,r这两个数,我......
  • 使用Stripe API加载数据到LangChain进行向量化处理
    老铁们,今天我们来探讨一下如何通过StripeAPI加载数据到LangChain中进行向量化处理。这波操作可以说是相当丝滑,特别是对于需要处理支付数据的项目来说,简直就是福音。##技术背景介绍Stripe是一个爱尔兰-美国的金融服务和SaaS公司,提供支付处理的软件和API接口,广泛应用于......
  • 2024-12-18 17 55 记录 Cambly trip`s summary and wher 1607b517085581159d14fe77503
    2024-12-1817:55记录Camblytrip`ssummaryandwhereisthenext?https://tingwu.aliyun.com/doc/transcripts/g2y8qevxaayxnbeo?sl=1#《2024-12-1817:55记录Camblytrip`ssummaryandwhereisthenext?》1.全文摘要对话讲述了一个人通过使用美好的旅行来学......
  • 题解:AT_abc368_c [ABC368C] Triple Attack
    思路$N$很大,导致$T$可能也会很大,所以一遍一遍的模拟就会超时。我们发现,题中有一个要求:每次必须打离自己最近的活着的敌人。我们就只用枚举每个敌人即可,在枚举的过程中计算答案。细节处理这道题有点难度,因为$T$是$3$的倍数时能量会变成$3$。这是个周期问题,自然会想到除......
  • Pandas测试Excel文件:fillna()与strip()相互作用的影响
    遇见的问题np.nan被strip之后仍为nan,但是此nan无法被.fillna()处理,处理后仍然为nanget_address_local_mail['CountryID_mail']=get_address_local_mail['CountryID_mail'].apply(lambdax:np.nanifx=="00000000-0000-0000-0000-000000000000"orx==&......
  • webGL入门对于LINES_STRIP与LINE_STRIP绘制连线的不同之处
    图片对比:上图为LINE_STRIP 上图为LINES_STRIPLINE_STRIP代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0&q......
  • 上传失败报错 UNKNOW: Code: 8192; Desc: stripos()
    错误提示和您的解决方案提到了将 $ext 传递给 chr() 函数,这在大多数情况下是不合适的,因为 chr() 是用来从ASCII值转换为对应的字符,而 $ext 作为文件扩展名应该是直接的字符串形式。正确的做法应该是确认 $ext 是否为字符串类型,并且检查报错是否源于其他原因,比如误报或者......
  • ReactJS + Stripe:试用期天数未按预期工作
    :试用期天数未按预期工作一、问题描述(一)预期的试用期天数该应用程序使用ReactJS和Stripe进行支付处理。试用期天数应设置为14天,但实际试用期天数并未按预期工作。用户在注册后,试用期仅持续了7天,而不是预期的14天。这导致用户在试用期结束前就被要求支付订阅费用,给用户带来......
  • Python 中的 strip() 和 split() 方法详解
    目录一、strip()方法1.什么是strip()?2.基本语法3.基本用法示例1)去除空白字符2)移除指定字符4.lstrip()和rstrip()5.注意事项二、split()方法1.什么是split()?2.基本语法3.基本用法示例1)按空格分割字符串2)指定分隔符3)限制分割次数4.rsplit()方法......
  • 【Python报错已解决】AttributeError: ‘WindowsPath‘ object has no attribute ‘rs
    ......