bzoj4918: 回文数对
Description
Input
Output
#include<cstdio>
#include<cstring>
#define F(i,n) for(int i=0;i<n;++i)
typedef long long i64;
const int M=;
int T;
i64 L,R;
i64 f[M+][][][][];
i64 min(i64 a,i64 b){return a<b?a:b;}
inline int tr(int a,int b){return a==?b:a;}
i64 cal(i64 m1,i64 m2){
if(m1<||m2<)return ;
i64 mn=min(m1,m2);
i64 ans=;
for(int p1=M;p1>=-;--p1){
memset(f,,sizeof(f));
f[p1+][(m1>>p1+)==(mn>>p1+)][][(m2>>p1+)==(mn>>p1+)][]=;
f[p1+][][][][]+=mn>>(p1+);
int l,r;
for(l=p1,r=;l>=r;--l,++r){
int xb1=(m1>>l&)-,xb2=(m1>>r&)-;
int yb1=(m2>>l&)-,yb2=(m2>>r&)-;
F(x1,)F(x2,)F(y1,)F(y2,)
for(int z=(l==p1);z<;++z)
F(t1,)F(t2,)if(l>r||t1==t2){
f[l][tr(x1,t1-xb1)][tr(t2-xb2,x2)][tr(y1,(t1^z)-yb1)][tr((t2^z)-yb2,y2)]+=f[l+][x1][x2][y1][y2];
}
}
F(x1,)F(x2,)F(y1,)F(y2,)if(tr(x1,x2)!=&&tr(y1,y2)!=)ans+=f[l+][x1][x2][y1][y2];
}
return ans;
}
int main(){
for(scanf("%d",&T);T;--T){
scanf("%lld%lld",&L,&R);
printf("%lld\n",cal(R,R)+cal(L-,L-)-cal(L-,R)-cal(R,L-));
}
return ;
}
bzoj4918: 回文数对的更多相关文章
- hdu1282回文数猜想
Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...
- C语言 · 特殊回文数
问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
- luogu1207双重回文数[usaco1.2]Dual Palindromes
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事实上 ...
- luogu10125回文数[noip1999 Day1 T1]
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...
- 洛谷 P1015 回文数 Label:续命模拟QAQ
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...
- 2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- 回文数 第N个回文数
判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3 ...
- 合工大OJ 1331 回文数
Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数, ...
随机推荐
- pyqt(二) 创建第一个程序(helloworld)解决object has no attribute 'setCentralWidget'
1.运行Qt Creator QtCreator主界面分为了6个模式:欢迎模式.编辑模式.设计模式.Debug调试模式.项目模式和帮助模式,分别由左侧的6个图标进行切换,对应的快捷键是Ctrl + 数 ...
- 用正则表达式输出rdf文档的三元组格式数据
占个位置 1.输出所有尖括号里的内容 package com.jena; import java.io.BufferedReader; import java.io.FileReader; impor ...
- Swift Tips笔记
“??”操作符可以判断输入并在当左侧的值是非 nil 的 Optional 值时返回其 value,当左侧是 nil 时返回右侧的值. 例: var level: Int? var startLeve ...
- linux下挂盘
1.首先,查看磁盘,fdisk -l Disk /dev/xvdf: bytes, sectors Units = sectors of * = bytes Sector size (logical/ ...
- 【设计模式】 模式PK:工厂模式VS建造者模式
1.概述 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象.我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方 ...
- Java平台标准版本
JDK Java Language Java Language Tools &Tool APIs java javac javadoc jar javap jdeps Script ...
- 一起来点React Native——常用组件之Touchable系列
在前面的登录界面中,我们发现所有的组件不会对用户的点击.触摸.拖拽做出合适的响应,这是十分不友好的.那么,在React Native中如何让视图对触发做出合适的响应呢? 一.高亮触摸 Touchab ...
- 转载: Linux 操作系统挂起、休眠、关机相关命令
最近每天的工作都难以在当天结束,而本人又不是那种善于熬夜的人,因此就需要将电脑中的工作文件全部保存,以往都是将所有工作文件保存关机,但是最近发现Linux系统有一个好神奇的命令: 休眠: sudo p ...
- CTF-练习平台-Misc之 这么多数据包
十一.这么多数据包 下载文件后解压,用wireshark打开CTF.pcapng,发现有很多包,快速浏览后发现前面都是攻击机(192.168.116.138)在向目标机(192.168.116.159 ...
- 树的遍历算法-只有一个变量T-递归和非递归
void PostOrderTraverse(BTNode *T) { //就用到了一个变量T if(T==NULL) return; PostOrderTraverse(T->lchild); ...