Sum of Log
题目链接:Sum of Log
因为 i & j == 0 ,所以考虑 i 或者 j 的最高位即可。
然后我们枚举每个当前位为最高位,就需要知道当前位的高位全为 0 ,然后后面合法的方案数。
最后统计即可。
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7,N=40;
int dp[N][2][2],X,Y,res,a[N],b[N],pos1,pos2;
int dfs(int pos,int l1,int l2,int ok){if(!pos) return 1;if(dp[pos][l1][l2]!=-1) return dp[pos][l1][l2];int up1=l1?a[pos]:1,up2=l2?b[pos]:1,ans=0,cnt=0;for(int i=0;i<=up1;i++){for(int j=0;j<=up2;j++){if(i&&j) continue;int tmp=dfs(pos-1,l1&&i==up1,l2&&j==up2,ok||i||j);ans=(ans+tmp)%mod;if(!ok&&(i+j)) cnt=(cnt+tmp)%mod;}}res=(res+cnt*pos)%mod;return dp[pos][l1][l2]=ans;
}
void solve(){scanf("%lld %lld",&X,&Y); pos1=pos2=res=0;memset(a,0,sizeof a),memset(b,0,sizeof b);while(X) a[++pos1]=X%2,X/=2;while(Y) b[++pos2]=Y%2,Y/=2;memset(dp,-1,sizeof dp);dfs(max(pos1,pos2),1,1,0);printf("%lld\n",res);
}
signed main(){int T; cin>>T; while(T--) solve();return 0;
}
Sum of Log相关推荐
- 2020 ICPC 上海 Sum of Log 数位dp + 状态剪枝
传送门 文章目录 题意: 思路: 题意: 思路: 观察可以发现,由于i&j=0i \And j=0i&j=0,所以log2(i+j)log_2(i+j)log2(i+j)表示的应该是 ...
- Sum of Log(2020上海C)
Sum of Log 题意: 求∑i=0X∑j=[i=0]Y[i&j=0]⌊log2(i+j)+1⌋\sum_{i=0}^{X}\sum_{j=[i=0]}^{Y}[i\&j=0]\l ...
- C. Sum of Log(数位dp)
C. Sum of Log Code1 暴力记的状态 TLE #include<bits/stdc++.h> using namespace std; using ll=long long ...
- 2020ICPC(上海) - Sum of Log(数位dp)
题目链接:点击查看 题目大意:给出 X 和 Y,求 题目分析:因为涉及到了位运算且看似可以递推,所以考虑数位dp,因为统计答案时的 i 和 j 的与为 0,所以 i + j = i & j, ...
- 2020ICPC上海 C.Sum of Log
题目链接 题目描述 Given two non-negative integers X{X}X and Y{Y}Y, determine the value of ∑i=0X∑j=[i=0]Y[i&a ...
- 数位dp ---- 2020 icpc 上海 Sum of Log(枚举高位的二进制数位dp)
题目链接 题目大意 : 解题思路: 这里有个很核心的地方就是log2(i+j)\text{log2(i+j)}log2(i+j)本质上就是看看i+j\text{i+j}i+j的二进制高位在哪里? 那么 ...
- 2020上海ICPC现场赛 C Sum of Log
https://ac.nowcoder.com/acm/contest/9925/C 今天我们队配合问题极大...这道前期数位DP给数学队友在看他半天不会写,然后我这个数学辣鸡wa了一年D...交换一 ...
- 20190829王老师发的面试题1、有一个日志文件access.log,内容如下
1.有一个日志文件access.log,内容如下 09:28:59 404 2003356554 09:29:00 200 2003232321 09:30:00 300 2003232321 09: ...
- android log机制 输出log,Android log 机制 - logd 如何接收 log 数据(下)
写入 log 数据时,我们先通过 socket 读取客户端 log,然后调用 logBuffer->log 函数写入 log 缓冲并唤醒读 log 的客户端.由于每种类型的 log 数据都有总量 ...
最新文章
- python的class的__str__()和__repr__()函数
- mysql数据库的F5_windows下mysql每天定时备份数据库几种方法
- django_rest_framework—路由器机制
- μC/OS-II软件定时器的分析与测试
- android js 弹窗,Android WebView 不能弹出alert的对话框
- 使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境
- Python zip() 函数--多个迭代器取元素组合成一个新的迭代器
- 探索 Python + HyperLPR 进行车牌识别
- 烂泥:perl中CPAN的安装
- 转载(面向对象设计的原则)
- python中args是什么意思_理解Python中的*,*args
- ios设计规范(下)
- 在win7物理机,使用vmware,3台centos7系统,分别部署httpd,php-fpm,mariadb
- VS C# string 字符查找 寻找指定字符
- j2me模拟器自动退出的原因
- 用python做爬虫看图软件-RandomPicture
- 丽博版魔都家居图鉴:如何住进《三十而已》的精致家
- excel服务器 微信设置密码,如何用vba给excel工作簿批量设置添加打开密码? - EXCEL VBA - ExcelOffice【微信公众号:水星Excel】...
- 学计算机段子,段子手要失业了,计算机也懂幽默
- ftrack出免费软件了--cineSync Paly