题目链接

题目描述
Given two non-negative integers X{X}X and Y{Y}Y, determine the value of
∑i=0X∑j=[i=0]Y[i&j=0]⌊log⁡2(i+j)+1⌋\sum_{i=0}^{X}\sum_{j=[i=0]}^{Y}[i\&j=0]\lfloor\log_2(i+j)+1\rfloor∑i=0X​∑j=[i=0]Y​[i&j=0]⌊log2​(i+j)+1⌋
modulo 109+710^9+7109+7 where

  • &\&& denotes bitwise AND;
  • [A]{[A]}[A] equals 1 if A{A}A is true, otherwise 0{0}0;
  • ⌊x⌋\lfloor x\rfloor⌊x⌋ equals the maximum integer whose value is no more than x{x}x.

输入描述:
The first line contains one integer T(1≤T≤105)T\,(1\le T \le 10^5)T(1≤T≤105) denoting the number of test cases.

Each of the following T{T}T lines contains two integers X,Y(0≤X,Y≤109)X, Y\,(0\le X,Y \le 10^9)X,Y(0≤X,Y≤109) indicating a test case.

输出描述:
For each test case, print one line containing one integer, the answer to the test case.
示例1
输入

3
3 3
19 26
8 17

输出

14
814
278

中规中矩的数位dp,注意 i,ji,ji,j 不能同时为 000 ,因此在 i,ji,ji,j 第一次不同的位统计答案。

#include<bits/stdc++.h>using namespace std;
const int MOD = 1e9 + 7;
int dp[30][2][2];
int T, X, Y, ans;int dfs(int cur, bool fx, bool fy, bool g) {if (cur < 0)return 1;if (~dp[cur][fx][fy])return dp[cur][fx][fy];int mx = fx ? ((X >> cur) & 1) : 1;int my = fy ? ((Y >> cur) & 1) : 1;dp[cur][fx][fy] = 0;for (int i = 0; i <= mx; i++)for (int j = 0; j <= my; j++) {if (i & j)continue;int res = dfs(cur - 1, fx && (i == mx), fy && (j == my), g && (i == j));dp[cur][fx][fy] = (dp[cur][fx][fy] + res) % MOD;if (g && i != j)ans = (ans + 1ll * (cur + 1) * res % MOD) % MOD;}return dp[cur][fx][fy];
}int main() {scanf("%d", &T);while (T--) {scanf("%d%d", &X, &Y);memset(dp, -1, sizeof(dp));ans = 0;dfs(29, true, true, true);printf("%d\n", ans);}return 0;
}

2020ICPC上海 C.Sum of Log相关推荐

  1. 2020 ICPC 上海 Sum of Log 数位dp + 状态剪枝

    传送门 文章目录 题意: 思路: 题意: 思路: 观察可以发现,由于i&j=0i \And j=0i&j=0,所以log2(i+j)log_2(i+j)log2​(i+j)表示的应该是 ...

  2. 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 ...

  3. C. Sum of Log(数位dp)

    C. Sum of Log Code1 暴力记的状态 TLE #include<bits/stdc++.h> using namespace std; using ll=long long ...

  4. 2020icpc上海(重温经典)

    2020icpc上海(重温经典) 导语 涉及的知识点 题目 B D G H I M 参考文献 导语 涉及的知识点 思维,几何,搜索 链接:第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海 ...

  5. Sum of Log

    题目链接:Sum of Log 因为 i & j == 0 ,所以考虑 i 或者 j 的最高位即可. 然后我们枚举每个当前位为最高位,就需要知道当前位的高位全为 0 ,然后后面合法的方案数. ...

  6. 2020ICPC(上海) - Sum of Log(数位dp)

    题目链接:点击查看 题目大意:给出 X 和 Y,求  题目分析:因为涉及到了位运算且看似可以递推,所以考虑数位dp,因为统计答案时的 i 和 j 的与为 0,所以 i + j = i & j, ...

  7. 数位dp ---- 2020 icpc 上海 Sum of Log(枚举高位的二进制数位dp)

    题目链接 题目大意 : 解题思路: 这里有个很核心的地方就是log2(i+j)\text{log2(i+j)}log2(i+j)本质上就是看看i+j\text{i+j}i+j的二进制高位在哪里? 那么 ...

  8. 2020上海ICPC现场赛 C Sum of Log

    https://ac.nowcoder.com/acm/contest/9925/C 今天我们队配合问题极大...这道前期数位DP给数学队友在看他半天不会写,然后我这个数学辣鸡wa了一年D...交换一 ...

  9. 2020icpc上海赛G题 Fibonacci详解

    Fibonacci(icpc2020上海赛) 链接:icpc2020上海赛G题Fibonacci 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语 ...

最新文章

  1. java制作画布_java – 使用自定义方法绘制到画布?
  2. mysql 数据迁移java_使用jdk进行数据迁移(sqlite迁移mysql)
  3. iOS11 UITableViewCell滑动事件改动
  4. JS容易犯错的this和作用域
  5. ajax预加载html seo,前端性能优化 — JS预加载和懒加载
  6. hacktoberfest_我刚刚得到了免费的Hacktoberfest衬衫。 这是获取您的商品的快速方法。
  7. sessionstorage,localstorage和cookie
  8. Wings-让单元测试智能全自动生成
  9. 从DLL导出LIB文件
  10. html+css常用代码(前端必备)
  11. 用Excel利用RFM模型进行客户细分
  12. 拿中国互联网的两个航母说事(一)--腾讯战略
  13. 论文复现——CE-FPN: Enhancing Channel Information for Object Detection
  14. 使用Aspose Java在word中绘制插入表格
  15. 简洁风个人主页(1) html 静态布局
  16. ipv6笔记无状态地址自动配置及状态
  17. 牛人分析如何高效学习嵌入式
  18. 全部都是好听的DJ嗨曲
  19. 项目日志出现:syntax error, error in :‘it 5 LIMIT ? ‘, expect LIMIT, actual LIMIT pos 问题
  20. 删掉微信好友服务器还有吗,微信被删除的好友怎么找回来 在对方不知情的情况下找回已删除的微信好友教程...

热门文章

  1. U-Net: Convolutional Networks for Biomedical Image Segmentation 解析
  2. 优秀的计算机简历,计算机优秀简历范文
  3. java小程序体重监测,分享个可以记录体重的小程序,坚持才能瘦
  4. Linux 硬盘管理工具
  5. 微分中值定理及其应用——(不定式极限洛必达法则)
  6. 笔记本修改无线网卡MAC地址
  7. VCN中文编程平台的优势(三)——企业的社会责任
  8. 西门子1200plc两部六层电梯程序
  9. 北京市医疗保障的不用定点的可以医保的医院查询步骤
  10. Map map=new HashMap(); 为什么是这样