P6218 [USACO06NOV] Round Numbers S厌氧
  • 板块学术版
  • 楼主Rolen
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/1/24 09:12
  • 上次更新2025/1/24 12:29:38
查看原帖
P6218 [USACO06NOV] Round Numbers S厌氧
730113
Rolen楼主2025/1/24 09:12

This

请教一下厌氧的代码有没有什么特征

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
ll t,l,r,cnt,a[30],f[100][100],bo[100][100];
ll dfs(ll now,ll lim,ll lead,ll sum){
	if(!now) {
		return sum>=30;
	}
	if(!lim&&!lead&&bo[now][sum]) return f[now][sum];
	ll mx=(lim?a[now]:1),res=0;
	for(int i=0;i<=mx;i++){
		res=(res+dfs(now-1,(lim&&i==mx),(lead&&!i),sum+(!i?(lead?0:1):-1)));
	}
	if(!lim&&!lead)
	f[now][sum]=res,bo[now][sum]=1;;
	return res;
}
ll sol(ll x){
	cnt=0; 
	memset(a,0,sizeof(a));
	memset(f,0,sizeof(f));
	memset(bo,0,sizeof(bo));
	while(x){
		a[++cnt]=x&1;
		x>>=1;
	}
	return dfs(cnt,1,1,30);
}
int main(){
	cin>>l>>r;
	cout<<sol(r)-sol(l-1);
	return 0;
}
2025/1/24 09:12
加载中...