Sherlock and the Encrypted Data
题意:
对于16进制数字num,假定 $p_0,p_1,...,p_m$ 在该数字中出现过,如果有 $x = 2^{p_0} + 2^{p_1} + ... + 2^{p_m}$
且 $x \oplus num < num$ 则认为 $F(num) = 1$, 不然 $F(num) = 0$
求$\sum_{i=L}^R {F(i)}$
解法:
考虑 $F(num) = 1$ 的条件,注意到如果有 $x \oplus num < num$,相当于 $num$ 二进制的 $p_m$ 位为1。
这样考虑数位dp。
对于确定位,我们记一下最大值。
对于不确定位,我们枚举一下全局最大值 $p_m$,然后枚举一下 $p_m / 4 +1$ 位可以的16进制的值,然后快速幂+容斥算一下即可。
#include <iostream>
#include <cstdio>
#include <cstring> #define LL long long
#define N 110
#define bit(t) (1<<(t)) using namespace std; int q,num[N],dig[N]; LL qpow(LL x,int n)
{
LL ans=;
for(;n;n>>=,x=x*x) if(n&) ans=ans*x;
return ans;
} LL calc(int m,int tot,int maxnow)
{
LL ans=;
for(int t=;t>=maxnow;t--)
{
int x = t/+;
int tmp = t%;
if(x > tot) continue;
for(int S=;S<(<<);S++)
{
int now=bit(tmp);
for(int i=;i<;i++)
if(bit(i)&S) now|=bit((tmp+i+)%);
if(now > t || (dig[x]!=- && dig[x]!=now)) continue;
int cnt=m;
if(dig[x]==-) cnt--;
if(now == t || maxnow == t) ans += qpow(t+, cnt);
else ans += qpow(t+, cnt) - qpow(t, cnt);
}
}
return ans;
} LL calc(char *S,bool inc)
{
memset(num,,sizeof(num));
int tot=strlen(S);
for(int i=;i<tot;i++)
{
if(S[i]<='' && S[i]>='') num[tot-i] = S[i]-'';
else num[tot-i] = S[i]-'a'+;
}
if(inc)
{
num[]++;
for(int i=;i<=tot;i++)
if(num[i]>=) num[i]-=,num[i+]++;
if(num[tot+]) tot++;
}
for(int i=;i<=tot;i++) dig[i]=-;
LL ans = ;
int maxnow=;
for(int i=tot;i>=;i--)
{
for(int j=;j<num[i];j++)
dig[i]=j, ans += calc(i-, tot, max(maxnow,j));
dig[i]=num[i];
maxnow=max(maxnow,dig[i]);
}
return ans;
} char L[N],R[N]; int main()
{
int q;
cin>>q;
while(q--)
{
cin>>L>>R;
cout<<calc(R,)-calc(L,)<<endl;
}
return ;
}
Sherlock and the Encrypted Data的更多相关文章
- SQL ServerAlways Encrypted Data
SQL Server 提供了一个加密表上字段的功能, Encrypt Columns , 比如身份证号码,手机号码,银行账户等等敏感信息.
- TDE: Transparent Data Encryption brief introduction
1. What is TDE? Briefly speaking, TDE is used to encrypted data. 2. The benifits: Belows are come fr ...
- MSSQL-最佳实践-Always Encrypted
摘要 在SQL Server安全系列专题月报分享中,往期我们已经陆续分享了:如何使用对称密钥实现SQL Server列加密技术.使用非对称密钥实现SQL Server列加密.使用混合密钥实现SQL S ...
- Oracle 11g R2 Backup Data Pump(数据泵)之expdp/impdp工具
Oracle Data Pump(以下简称数据泵)是Oracle 10g开始提供的一种数据迁移工具,同时也被广大DBA用来作为数据库的逻辑备份工具和体量较小的数据迁移工具.与传统的数据导出/导入工具, ...
- encrypt and decrypt data
https://www.cyberciti.biz/tips/linux-how-to-encrypt-and-decrypt-files-with-a-password.html Encryptin ...
- Note: Transparent data deduplication in the cloud
What Design and implement ClearBox which allows a storage service provider to transparently attest t ...
- TENSEAL: A LIBRARY FOR ENCRYPTED TENSOR OP- ERATIONS USING HOMOMORPHIC ENCRYPTION 解读
本文记录阅读该paper的笔记,这篇论文是TenSeal库的原理介绍. 摘要 机器学习算法已经取得了显著的效果,并被广泛应用于各个领域.这些算法通常依赖于敏感和私有数据,如医疗和财务记录.因此,进一步 ...
- [MySQL Reference Manual]15. 其他存储引擎
15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...
- 【机器学习Machine Learning】资料大全
昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...
随机推荐
- Centos 安装Puppet
环境说明: OS:CentOS 5.4 i386puppetmaster 192.168.0.12 hostname: puppetmaster.info.comclient ...
- SpringMVC学习(一):搭建SpringMVC-注解-非注解
文章参考:http://www.cnblogs.com/Sinte-Beuve/p/5730553.html 一.环境搭建: 目录结构: 引用的JAR包: 如果是Maven搭建的话pom.xml配置依 ...
- JAVA虚拟机、Dalvik虚拟机和ART虚拟机简要对照
1.什么是JVM? JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才干够运行Java程序,JAVA在编译后会生成相似于汇编语言的JVM字节码,与C语言编译后产生的汇编语言不同的是,C编 ...
- 浏览器访问配置完成的ftp服务器
在浏览器的地址栏输入: ftp://testuser:testuser@192.168.10.4 testuser 是ftp的用户名和密码: 192.168.10.4 是ftp服务器的IP地址. 亲测 ...
- java验证码问题
AuthImageServlet.java package com.util.servlet; import java.awt.Color;import java.awt.Font;import ja ...
- (转)Android--UI之ImageView
前言 这篇博客聊一聊在Android下ImageView的使用,在此篇博客中,会讲解到ImageView的一些属性的使用,以及ImageView展示图片的放大.缩小.旋转等操作.最后再讲解一下Andr ...
- Android 6.0 如何默认打开user版本的root权限【转】
本文转载自:http://blog.csdn.net/wangjicong_215/article/details/77601638 1.system/core/adb/Android.mkdiff ...
- Android 如何永久性开启adb 的root权限【转】
本文转载自:https://www.2cto.com/kf/201702/593999.html adb 的root 权限是在system/core/adb/adb.c 中控制.主要根据ro.secu ...
- HDU2896 病毒侵袭 —— AC自动机
题目链接:https://vjudge.net/problem/HDU-2896 病毒侵袭 Time Limit: 2000/1000 MS (Java/Others) Memory Limit ...
- BZOJ 2002 Bounce 弹飞绵羊 —— 分块算法
题目链接:https://vjudge.net/problem/HYSBZ-2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Li ...