社区讨论
求卡常
P15245[WC2026] 二进制参与者 5已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mlkygsrb
- 此快照首次捕获于
- 2026/02/13 22:00 6 天前
- 此快照最后确认于
- 2026/02/14 15:04 5 天前
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define lli long long
#define db long double
#define ull unsigned long long
#define F(i,k,n) for (int i=k;i<=n;i++)
#define R(i,k,n) for (int i=k;i>=n;i--)
#define pu push_back
#define mpr make_pair
#define ins insert
#define lowb(x) (x&(-x))
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define mes(a,b) memset(a,b,sizeof a)
const int N=2e5+10;
const int inf=1e18;
void init(signed c,signed t){
}
inline int solve(int x,int y){
if (x<y) swap(x,y);
int lenx=(int)log2(x)+1;
int leny=(int)log2(y)+1;
int mod=1ll<<(lenx-leny);
int ans=inf;
int up=x%mod;
F(i,1,lenx-leny){
int m=up-((up>>i)<<i);
int op=(1ll<<(i))-m+1+lenx-leny+__builtin_popcountll((up/(1ll<<i))*(1ll<<i));
ans=min(ans,op);
if (op>130) break;
}
ans=min(ans,lenx-leny+__builtin_popcountll(up));
return ans;
}
long long binary(long long x, long long y){
if (x<y) swap(x,y);
int lenx=(int)log2(x)+1;
int leny=(int)log2(y)+1;
int m=(x>>(lenx-leny));
if (m>y) return min(solve(y*(1ll<<(lenx-leny+1)),y)+y*(1ll<<(lenx-leny+1))-x,solve(x,m)+m-y);
else if (m==y) return solve(x,m);
else return min(solve(y*(1ll<<(lenx-leny)),y)+y*(1ll<<(lenx-leny))-x
,solve(m*2+((x>>(lenx-leny-1))&1),x)+m*2+((x>>(lenx-leny-1))&1)-y);
}
只有 84pts。
回复
共 6 条回复,欢迎继续交流。
正在加载回复...