p5342 [TJOI2019]甲苯先生的线段树
2024-09-05 06:17:49
分析
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
int xx[],yy[],cnt1,cnt2;
int dp[][][];
inline int work(int a,int b,int s,int c){
int i,j,k,d=max(max(a-,b),(int)log2(s)+1ll),x,y,z,g;
for(i=;i<=d;i++)
for(j=;j<=c;j++)
dp[i][j][]=dp[i][j][]=;
i=;
for(x=;x<=;x++)
for(y=;y<=;y++){
k=(x+y)>>,z=(x+y)&;
if(i==b-&&!y)continue;
if(z!=(s&))continue;
if(i>b-&&y)continue;
if(i>a-&&x)continue;
dp[i][x+y][k]++;
}
for(i=;i<=d;i++)
for(j=;j<=c;j++)
for(g=;g<=;g++)
if(dp[i-][j][g])
for(x=;x<=;x++)
for(y=;y<=;y++){
k=(x+y+g)>>,z=(x+y+g)&;
if(i==b-&&!y)continue;
if(z!=((s&(1ll<<i))?:))continue;
if(i>b-&&y)continue;
if(i>a-&&x)continue;
dp[i][j+x+y][k]+=dp[i-][j][g];
}
return dp[d][c][];
}
inline int sum(int x){
int res=x<<;
while(x)res-=(x&1ll),x>>=;
return res;
}
signed main(){
int x,y,z,d,c,i,j,k,t,x2,y2,s,a,b;
scanf("%lld",&t);
while(t--){
scanf("%lld%lld%lld%lld",&d,&x,&y,&c);
cnt1=cnt2=;
x2=x,y2=y;
while(x2)xx[++cnt1]=(x2&),x2>>=;
while(y2)yy[++cnt2]=(y2&),y2>>=;
reverse(xx+,xx+cnt1+);
reverse(yy+,yy+cnt2+);
z=;
for(i=;i<=min(cnt1,cnt2);i++)
if(xx[i]==yy[i])z=(z<<)+xx[i];
else break;
s=sum(x)+sum(y)-sum(z)-sum(z>>);
if(c==){
printf("%lld\n",s);
continue;
}
int Ans=;
for(a=;a<d;a++)
for(b=;b<d;b++){
int v=(1ll<<(a+))+(1ll<<(b+))-;
z=s/v;
if(!z)continue;
if((int)log2(z)+max(a,b)+>d)continue;
k=s-z*v;
for(i=;i<=a+b;i++)
if((i+k)%==)Ans+=work(a,b,(i+k)>>,i);
}
printf("%lld\n",Ans-);
}
return ;
}
最新文章
- Window memcache 使用
- Xformode的坑
- java JDK8 学习笔记——第18章 自定义泛型、枚举与注释
- MySQL数据库加密与解密
- Swift --- 面向对象中类和对象的属性
- 【转】如何在CentOS/RHEL中安装基于Web的监控系统 linux-das
- VB6之HTTP服务器的实现(二)
- cmd+任务管理器解决端口被占用的问题
- Angular记录(4)
- echarts 图表重新加载,原来的数据依然存在图表上
- (网页)thinkpad 笔记本开机看看坏了没?
- FFT 【JSOI2012】bzoj4332 分零食 (未解决)
- Linux内核同步 - sleepable RCU的实现
- js for form
- tornado多路由示例
- 使用sublime text3手动安装插件
- 【8086汇编-Day1】预备知识
- [ python ] 各种推导式
- jQuery实现18位身份证输入隔位添加空格及格式验证
- java.lang.UnsupportedOperationException:This parser does not support specification ";null"; version ";null";
热门文章
- Django报错[WinError 123] 文件名、目录名或卷标语法不正确。: &#39;<;frozen importlib._bootstrap
- PS把一张白色背景的图片设为透明
- 用js代码打开新场口 关于window.open()方法的参数
- 初学css display
- 广告URL
- 前端开发HTML&;css入门——盒子模型以及部分CSS样式
- Scrapy抓取jobbole数据
- 如何在SVN服务器上创建项目
- Maya2014下载安装与激活
- NTP时间服务器构建