bzoj 4918: 回文数对
Description
Input
Output
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std; ll n,m,T,f[][];
ll min(ll a,ll b){return a<b?a:b;}
ll work(ll n,ll a,ll b){
ll MMH=;
memset(f,,sizeof(f));
f[][]=;
for (ll i=;i<=(n>>);i++)
for (ll qa=;qa<;qa++)
for (ll qb=;qb<;qb++)
for (ll ha=;ha<;ha++)
for (ll hb=;hb<;hb++)
if ((qa^qb)==(ha^hb)&&(i!=||qa!=qb)){
ll QA=(a>>n-i)&,QB=(b>>n-i)&;
ll HA=(a>>i-)&,HB=(b>>i-)&; for (ll k=;k<;k++){
ll K=k;
if (QA<qa&&!(k&)) continue;
if (QB<qb&&!(k&)) continue; if (QA>qa) K|=;
if (QB>qb) K|=; if (HA>ha) K|=;else if (HA<ha) K&=;
if (HB>hb) K|=;else if (HB<hb) K&=;
f[i][K]+=f[i-][k];
}
} if (n&){
ll i=n+>>;
for (ll _a=;_a<;_a++)
for (ll _b=;_b<;_b++)
if (n!=||_a!=_b){
ll A=(a>>i-)&,B=(b>>i-)&; for (ll k=;k<;k++){
ll K=k;
if (A<_a&&!(k&)) continue;
if (B<_b&&!(k&)) continue; if (A>_a) K|=;
if (B>_b) K|=;
f[i][K]+=f[i-][k];
}
}
}
ll i=n+>>;
for (ll k=;k<;k++)
if (((k&)||(k&))&&((k&)||(k&))) MMH+=f[i][k];
return MMH;
}
ll Mavis(ll a,ll b){
if (b<) return ;
ll i,j,k,mmh=;
for (i=,j=,k=;i;i--){
j<<=;k<<=;j|=(a>>i)&;k|=(b>>i)&;
if (j==k) mmh+=j*work(i,(1ll<<i)-,(1ll<<i)-)+work(i,a&((1ll<<i)-),b&((1ll<<i)-));else mmh+=k*work(i,(1ll<<i)-,(1ll<<i)-)+work(i,(1ll<<i)-,b&((1ll<<i)-));
}
return mmh+b+;
}
int main(){
scanf("%lld",&T);
while(T--){
scanf("%lld%lld",&n,&m);
printf("%lld\n",Mavis(m,m)-*Mavis(m,n-)+Mavis(n-,n-));
}
}
bzoj 4918: 回文数对的更多相关文章
- 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 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数, ...
随机推荐
- 修改文件系统属性chattr,查看文件系统属性lsattr
chattr chattr +i 文件或目录 , chattr +a 文件或目录,chattr -i 文件或目录,chattr -a 文件或目录,chattr =i 文件或目录,chattr =a 文 ...
- jemeter——badboy导入的jmx文件自带元件解析
线程组设置与解析 含义:1秒启动100个线程,每个线程循环调用20次请求 (包括FTP请求.Java请求.http请求,根据你提交的请求而定) delay thread creation until ...
- SSH远程登录密码尝试
import threading #创建一个登陆日志,记录登陆信息 paramiko.util.log_to_file('paramiko.log') client = paramiko.SSHCli ...
- BeanShell Sample与控制台交互
应用的场景:业务当中涉及到一些敏感信息,如验证码,银行卡密码等或是动态变化的,不能直接写在脚本中,就需要通过控制台手动输入 如密码已键盘的方式输入,在控制台中以密码的方式显示 处理方法:添加 bean ...
- 视觉SLAM的方案总结
MoNoSLAM:https://github.com/hanmekim/SceneLib2 以扩展卡尔曼滤波为后端,追踪前端非常稀疏的特征点,以相机的当前状态和所有路标点为状态量,更新其均值和协方差 ...
- Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python)
Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...
- ubuntu12.04 安装中文输入法
1. 安装输入法的第一步,是安装语言包.我们选择System Settings-->Language Support-->Install/Remove Languages 选择中文 2. ...
- sql sever[基本] ''增删改'' 随笔
结构语言分类 DDL(数据定义语言) create drop alter 创建删除以及修改数据库,表,存储过程,触发器,索引.... DML(数据操作语言) insert delete ...
- 执行PHP脚本时遇到 mysql_connect(): Headers and client library minor version mismatch的解决方法
把服务器从Windows迁移到了centos7.2,配置好PHP运行环境后,项目运行正常. 但在命令行中运行一个PHP脚本时,遇到了标题中显示的错误 使用 php -i | grep Client 得 ...
- Android与javascript中事件分发机制的简单比较
在前面两篇博客中,我们讨论了Android中的事件分发的相关内容,那么在本篇博客当中,我们就简单探讨一下html或javascript中的事件分发机制,并进行简单的对比. 在前端中,对事件进行绑定有三 ...