牛客周赛 Round 49(A~D):简单题

108 篇文章 0 订阅

嘤嘤不想做计几喵

代码

#include<iostream>
#include<algorithm>

using namespace std;

#define int long long

int a,b;

signed main(){
    cin>>a>>b;
    cout<<((a-b)-b*10);
    
    return 0;
}

嘤嘤不想打怪兽喵

思路

我们可以画个图发现,这就是二叉树,然后我们只要求二叉树的节点数就可以了。但别用 dfs 求,因为会超时,于是我们就找规律。

代码

#include<iostream>
#include<cmath>

using namespace std;

#define int long long

const int N = 1e5+10;

int n;
int l,r;
int ans;

// void dfs(int u){
//     if(u/2==0)return;
//     if(u/2!=0){
//         dfs(u/2);
//         dfs(u/2);
//         ans+=2;
//     }
// }

signed main(){
    cin>>n;
    
    //就是二叉树
    
//     dfs(n);
    
//     cout<<ans+1;
    
    while(n){
        ans++;
        n/=2;
    }
    
    int res=1;
    for(int i=2;i<=ans;i++){
        res+=pow(2,i-1);
    }
    
    cout<<res;
    
    
    return 0;
}

嘤嘤不想买东西喵

思路

这道题就是一道很典型的最大子段和的题目,只不过我们可以在最先的时候减去x就可以做这道题了。(也就是 w i − p w_i-p wip,此时就能满足题目的省钱的定义了)

代码

#include<iostream>

using namespace std;

#define int long long

const int N = 1e5+10;

int f[N];
int w[N];
int n,p;

signed main(){
    cin>>n>>p;
    
    for(int i=1;i<=n;i++){
        cin>>w[i];
        w[i]-=p;
    }
    
    for(int i=1;i<=n;i++){
        f[i]=max(f[i-1]+w[i],w[i]);
    }
    
    int res=0;
    
    for(int i=1;i<=n;i++){
        res=max(res,f[i]);
    }
    
    cout<<res;
    
    return 0;
}

嘤嘤不想求异或喵

思路

这道题就是打表找规律。

代码

#include<iostream>
#include<algorithm>

#define int unsigned long long
//性质1:奇数末尾为1
//性质2:
using namespace std;

const int N = 2e5+10;

int T,l,r;

int f(int x){
    if(x%4==0)return x;
    if(x%4==1)return 1;
    if(x%4==3)return 0;
    return x+1;
}

signed main(){
    cin>>T;
    
    while(T--){
        cin>>l>>r;
        cout<<(f(l-1)^f(r))<<endl;
    }
    
    return 0;
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

green qwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值