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 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数, ...
随机推荐
- 4. sudo,PATH环境变量,修改字符集,ntpserver,加大文件描述符,隐藏内核版本,锁定关键系统文件
1 命令: visudo 98gg 98行 yy 复制当前行 p ...
- Parcel:常见技术栈的集成方式
前言 Parcel 是什么 Parcel 是一个前端构建工具,Parcel 官网 将它定义为极速零配置的Web应用打包工具.没错,又是一个构建工具,你一定会想,为什么前端的构建工具层出不穷,搞那么多工 ...
- iOS 控制器的跳转、页面四个方向的跳转
指定滑动方向的跳转 CATransition *transition = [CATransition animation]; transition.duration = 0.3f; transitio ...
- 小白的 MySQL 笔记(一)
来自 stackoverflow 的内容居多. 1- MySQL VARCHAR size? 2- 数据库设计范式 3- What is InnoDB and MyISAM in MySQL ? 4- ...
- bzoj 5016: [Snoi2017]一个简单的询问
Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. Input 第 ...
- js功能代码大全
1.日期格式化 //化为2017-08-14 function formatDate (date) { var y = date.getFullYear(); var m = date.getMont ...
- 【深度学习系列】一起来参加百度 PaddlePaddle AI 大赛吧!
写这个系列写了两个月了,对paddlepaddle的使用和越来越熟悉,不过一直没找到合适的应用场景.最近百度搞了个AI大赛,据说有四个赛题,现在是第一个----综艺节目精彩片段预测 ,大家可以去检测一 ...
- linux部署solr服务--小记
1.将solr压缩包上传到web项目-solr文件夹下 2.解压solr-5.5.4.zip到当前文件夹下 linux 解压zip文件到当前目录 unzip filename.zip 提示没有unzi ...
- 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现
基于MATLAB的中值滤波均值滤波以及高斯滤波的实现 作者:lee神 1. 背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤 ...
- js写基础insertAfter()方法
//DOM没有提供insertAfter()方法 function insertAfter(newElement, targetElement){ var parent = targetElement ...