【ICPC济南区域赛】签到题题解

M Cook Pancakes!

对于N个饼,显然需要fry 2N次;
考虑最优的情况,显然在每次都同时fry K次
即答案为 【2N/K】

#include<bits/stdc++.h>
using namespace std;
 
int main(){
    int N,K;
    cin>>N>>K;
    if(N<=K)cout<<2<<endl;
    else{
        cout<<ceil(2.0*N/K);
    }
}

G Xor Transformation

显然 X xor X=0 、 Y xor 0=Y 则 X xor X xor Y=Y;
由于X只能在[0,x)范围内异或,所以考虑两种情况
1: X xor Y > X
则 (X xor Y) xor X =Y
2: X xor Y < X
则 X xor (X xor Y) =Y

#include<bits/stdc++.h>
using namespace std;
 
int main(){
    long long x,y;cin>>x>>y;
    if((x^y)>x){
        cout<<2<<endl;
        cout<<y<<' '<<x;
    }
    else{
        cout<<1<<endl;
        cout<<(x^y);
    }
}

C Stone Game

a[1]表示有一个石头的堆,以此类推。
则a[3]具有以下性质:1:和其他堆合并不花费coins;2:和其他堆合并不改变 (c mod 3)的值; 因此,不考虑有a[3]。

#include<bits/stdc++.h>
using namespace std;
 
int main(){
    vector<long long > a(4);
    cin>>a[1]>>a[2]>>a[3];
    if(a[1]>=a[2])
    {
        cout<<(a[1]-a[2])/3*3+2*a[2]+(((a[1]-a[2])%3==2)?1:0);
    }
    else{
      cout<<2*a[1]+(a[2]-a[1])/3*6+(((a[2]-a[1])%3==2)?(int)4:0);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值