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 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数, ...
随机推荐
- 二叉树Binary_Tree(1):二叉树及其数组实现
定义 二叉树: 二叉树是一种特殊的树.二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树.更加严格的递归定义是:二叉树要么为空,要么由根结点.左子树 ...
- 王者齐聚!Unite 2017 Shanghai 日程讲师全揭晓
汇聚了来自全球的 Unity开发者.发行商.培训家及爱好者的 Unite 2017 Shanghai 即将于于 5 月 11 日-13日在上海·国际会议中心隆重举行.Unite 大会是由 Unity ...
- Python模块之pickle(列表,字典等复杂数据类型与二进制文件的转化)
1.pickle模块简介 The pickle module implements binary protocols for serializing and de-serializing a Pyth ...
- CSS篇(上)
紧接着HTML篇的CSS篇开啦,老铁们快来围观... 1.介绍一下标准的CSS盒子模型?低版本IE的盒子模型有什么不同? 1>有两种:IE盒子模型 W3C盒子模型 2>盒模型:内 ...
- headfirst设计模式(4)—工厂模式
开篇 天天逛博客园,就是狠不下心来写篇博客,忙是一方面,但是说忙能有多忙呢,都有时间逛博客园,写篇博客的时间都没有?(这还真不好说) 每次想到写一篇新的设计模式,我总会问自己: 1,自己理解了吗? 2 ...
- lesson - 6 课程笔记
一.df 作用: 显示磁盘分区上的可使用的磁盘空间, 默认显示单位为kb . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间的等信息. 选项: -a :包含全部的文件系统 -h :以 ...
- vue基础入门
Hello World <body> <!-- 在angularJS中用ng-model --> <!-- {{mseeage?message:11}}支持三元表达式 ...
- .NET使用存储过程实现对数据库的增删改查
一.整体思路 先建立存储过程,再通过.net 调用存储过程,来实现对表的增删改查. 二.新建数据库及存储过程 打开SqlServer2008,新建数据库orm1,及表Student. 数据库和表建立好 ...
- php运行C++程序
linux命令:gcc hello.cpp -lstdc++ -o hello.o php代码: <?php $command="./hello.o "; passthru( ...
- 初学ssm框架的信息
ssm框架,就是Spring ,SpringMVC ,mybstis 的简称,我们是从mybstis 开始学起的,mybatis的作用作为一个连接数据库的框架,可以很好配置连接好数据库, 有mybat ...