每一年都奔走在自己热爱里

没有人是一座孤岛,总有谁爱着你

Codeforces Round #769 (Div. 2) B,C

Codeforces Round #769 (Div. 2) B,C

B

B

这道题我在vp的时候一直没有想出来,一直不知道到底怎么写,只是想到和幂有关,wa了一发,后来看了大佬的题解,真是觉得自己太菜了,自愧不如

这里我还有一个误区,就是在vp的时候我一直想着把最大的n-1和1放在一起,其实是不对的,因为那时我觉得答案的max一定是n-2(我觉得n-1和1异或一定会减一,我也不知道我当时怎么想出来的,赛后自己仔细想了想,好像n-1和1异或不一定=n-2,只有当n-1是奇数的时候异或1才会减一,当时我应该是傻了吧)

#include <iostream>
using namespace std;
int n,t;
void solve()
{
    cin>>n;
    int mid=1;//mid是二进制中只有一个1且此时1的位置是最高位,把mid和0放在一起,那么这个一定是就是这个数,而其他的都和相邻的进行异或,那么这样
    //他们的值一定不会很大,不会超过mid,对于x,和x+1,只有其中x+1是1000式二进制的时候,异或值才是x+x+1(两个值相加),
    //而x+x+1一定不会等于mid,最大只能等于mid-1,其他的异或值不一定等于x+x+1哦
    for (int i=1;i<=n;i<<=1)
    {
        if ((i<<1)>n-1)
        {
            mid=i;
            break;
        }
    }
    for (int i=1;i<mid;i++)
    {
        cout<<i<<" ";
    }
    cout<<0<<" ";
    for (int i=mid;i<n;i++)
    {
        cout<<i<<" ";
    }
    cout<<'\n';
    return ;
}
int main ()
{
    cin>>t;
    while (t--)
    {
        solve();
    }
    system ("pause");
    return 0;
}

C

C

vp的时候看这道题就只有十多分钟了,脑子还是不清醒,以为总共只有两种操作方法

1,a+x(x次加法),然后在或运算,最后等于b

2,a先异或,然后再对b进行加法(因为或运算最后的值一定会大于等于max(a,b))

其实还有

3.b+x(先对b进行x次加法),然后再或

4,直接取差值

然后求取最小操作数

#include <iostream>
using namespace std;
int a,b,n;
void solve()
{
    cin>>a>>b;
    if (a>=b)
    {
        cout<<a-b<<'\n';
        return ;
    }
    //cout<<(a|b)<<'\n';
    int ans1=(a|b)-b;
    ans1++;
    //cout<<ans1<<" ";
    int ta=a,tb=b;
    int ans=0;
    while ((ta|tb)!=tb)
    {
        ta++;
        ans++;
    }
    ans1=min(ans1,ans+1);
    int tmpb=b*2+100;
    ta=a,tb=b;
    ans=0;
    while ((ta|tb)!=tb&&tb<tmpb)
    {
        tb++;
        ans++;
    }
    ans1=min(ans1,ans+1);
    ans1=min(ans1,b-a);
    cout<<ans1<<'\n';
    return ;
}
int main ()
{
    int t;
    cin>>t;
    while (t--)
    {
        solve();
    }
    system ("pause");
    return 0;
}
posted @   righting  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示