分析

 代码

#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 ;
}

p5342 [TJOI2019]甲苯先生的线段树的更多相关文章

  1. luogu P5342 [TJOI2019]甲苯先生的线段树

    传送门 你个好好的省选怎么可以出CF原题啊,你们这个题害人不浅啊,这样子出题像极了cxk,说到cxk,我又想起了他是NBA形象大使,跟我是西游文化大使一样一样的,今年下半年... 别说了,jinsai ...

  2. 【题解】Luogu P5342 [TJOI2019]甲苯先生的线段树

    原题传送门 挺有趣的一道题 \(c=1\),暴力求出点权和n即可 \(c=2\),先像\(c=1\)一样暴力求出点权和n,考虑有多少路径点权和也为n 考虑设x为路径的转折点,\(L\)为\(x\)向左 ...

  3. [TJOI2019] 甲苯先生的线段树

    臭名昭著的巧合:CF750G 题意:在无限深度的一颗线段树中询问编号和为S的简单路径条数. 题解传送门 这道题相当于在原来基础上多了询问两点间简单路径的编号的的问题. 直觉告诉我们只需要求出两点在线段 ...

  4. [LOJ3109][TJOI2019]甲苯先生的线段树:DP

    分析 首先,请允许我 orz HN队长zsy.链接 我们发现树上的链有两种类,一类是直上直下的,一类不是直上直下的(废话).并且,如果我们确定了左侧和右侧的链的长度和整条链上所有节点的编号之和,那么这 ...

  5. 【LOJ】#3109. 「TJOI2019」甲苯先生的线段树

    LOJ#3109. 「TJOI2019」甲苯先生的线段树 发现如果枚举路径两边的长度的话,如果根节点的值是$x$,左边走了$l$,右边走了$r$ 肯定答案会是$(2^{l + 1} + 2^{r + ...

  6. 洛谷P5338 [TJOI2019]甲苯先生的滚榜

    原题链接洛谷P5338 [TJOI2019]甲苯先生的滚榜 题目描述 甲苯先生在制作一个online judge,他发现做比赛的人们很关心自己的排名(显而易见),在acm赛制的比赛中,如果通过题目数量 ...

  7. 洛谷P5341 [TJOI2019]甲苯先生和大中锋的字符串

    原题链接P5341 [TJOI2019]甲苯先生和大中锋的字符串 题目描述 大中锋有一个长度为 n 的字符串,他只知道其中的一个子串是祖上传下来的宝藏的密码.但是由于字符串很长,大中锋很难将这些子串一 ...

  8. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

  9. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

随机推荐

  1. Python3的基本数据类型

    2.1. Python3中六个标准的基本数据类型: Number(数字) String(字符串) Sets(集合) Tuple(元组) List(列表) Dictionary(字典) 2.2. Pyt ...

  2. python-IDE的使用(小白先看)

    一.定义 IDE:集成开发环境(Integrated Development Environment) 二.常见的IDE工具: 1.VIM,经典的Linux下的文本编辑器 2.Emacs,LInux的 ...

  3. Java中 Json的使用

    转自:http://huyan.couplecoders.tech/%E5%BC%80%E5%8F%91%E8%80%85%E6%89%8B%E5%86%8C/2018/11/02/Java%E4%B ...

  4. [2019杭电多校第二场][hdu6602]Longest Subarray(线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6602 题目大意为求最长的区间,满足C种数字在区间内要么不出现,要么出现的次数都不小于K. 大致的分析一 ...

  5. Python 中的 os 模块常见方法?

    os.remove() 删除文件 os.rename() 重命名文件 os.walk() 生成目录树下的所有文件名 os.chdir() 改变目录 os.mkdir/makedirs 创建目录/多层目 ...

  6. ZPL文件打印

    ZPL:全称是Zebra Printer Language,目前能够直接打印zpl文件的打印机只有斑马打印机 如何打印zpl文件呢? 软件类: 一.Print Conductor(桌面打印软件) ht ...

  7. LeetCode Lect7 堆及其应用

    概述 堆是一颗完全二叉树.分为大根堆(父节点>=所有的子节点)和小根堆(父节点<=所有的子节点). 插入.删除堆顶都是O(logN),查询最值是O(1). 完全二叉树(Complete B ...

  8. CSS文字,文本,背景,盒模型等记录

    文字: font-family:" "; /*设置字体*/ font-size:6px;/*设置文字字号*/ color:red;/*设置文字颜色*/ font-weight:bo ...

  9. 全局解释锁GIL

    ''' 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native th ...

  10. 机器学习-K-means聚类及算法实现(基于R语言)

    K-means聚类 将n个观测点,按一定标准(数据点的相似度),划归到k个聚类(用户划分.产品类别划分等)中. 重要概念:质心 K-means聚类要求的变量是数值变量,方便计算距离. 算法实现 R语言 ...