bzoj5043: 密码破译
Description
小Q发明了一个新的加密算法,对于一个长度为n的非负整数序列a_1,a_2,...,a_n,他会随机选择一个非负整数k,
Input
Output
输出一个非负整数k,若无解输出-1,若有多组解,输出最小的k。
从高位到低位dp确定k的值,状态表示为当前考虑完第i位,m已被凑出了j,此时k的最小值。观察到$j$是$2^i$的倍数,且当$\frac{j}{2^i}$在O(n)范围时才对最终答案有影响,因此总状态数可以接受,在O(nlogm)级别。
#include<bits/stdc++.h>
typedef long long i64;
const int N=2e5+;
const i64 inf=1ll<<;
char ib[N*],*ip=ib;
i64 _(){
i64 x=;
while(*ip<)++ip;
while(*ip>)x=x*+*ip++-;
return x;
}
int n,t[][];
i64 m,f[N],g[N];
void mins(i64&a,i64 b){if(a>b)a=b;}
int main(){
fread(ib,,sizeof(ib),stdin);
n=_(),m=_();
for(int i=;i<=n;++i){
i64 x=_();
for(int j=;j<;++j)++t[j][x>>j&];
}
n*=;
for(int i=;i<=n;++i)f[i]=inf;
for(int i=;i>=;--i){
for(int j=m>>i&;j<=n;j+=)g[j]=f[j>>];
for(int j=;j<=n;++j)f[j]=inf;
int c1=t[i][],c0=t[i][];
for(int j=m>>i&;j<=n;j+=)if(g[j]<inf){
if(j>=c0)mins(f[j-c0],g[j]);
if(j>=c1)mins(f[j-c1],g[j]|1ll<<i);
}
}
printf("%lld\n",f[]==inf?-1ll:f[]);
return ;
}
bzoj5043: 密码破译的更多相关文章
- [Bzoj5043][Lydsy1709月赛]密码破译(按位dp)
5043: [Lydsy1709月赛]密码破译 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 477 Solved: 125[Submit][Sta ...
- Machine Learning for hackers读书笔记(七)优化:密码破译
#凯撒密码:将每一个字母替换为字母表中下一位字母,比如a变成b. english.letters <- c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' ...
- Hydra密码破译工具
Hydra简介 Hydra是著名黑客组织thc开发的一款开源的暴力密码破解工具,可以在线破解多种密码,目前已经被Backtrack和kali等渗透平台收录.除了命令行下的Hydra外,还提供了Hydr ...
- red hat 7、centos7的root密码破译
一.在开机画面时按"E". 二.找到linux16开头的这段,在段尾添加空格"rd.break"然后按Ctrl+x进入系统紧急救援模式. 三.新的界面出现命令行 ...
- 长理ACM 7-密码破译(闫博钊)
/* //题目标题: *密码破译(闫博钊) //题目描述: *某组织欲破获一个外星人的密码,密码由一定长度的字串组成.此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度, ...
- shadow密码文件
登录Linux会要求输入用户名和密码.通常本地文件中会存储一份用户密码,并与用户输入对比,如果相同就允许用户登录.起初用户密码存储与/etc/passwd中,但由于/etc/passwd必须供所有用户 ...
- [CTF]维吉尼亚密码(维基利亚密码)
[CTF]维吉尼亚密码(维基利亚密码) ----------------------百度百科 https://baike.baidu.com/item/维吉尼亚密码/4905472?fr=aladdi ...
- 如何提高Linux操作系统的安全性 转自https://yq.aliyun.com/articles/24251?spm=5176.100239.blogcont24250.7.CfBYE9
摘要: Linux系统不论在功能上.价格上或性能上都有很多优点,但作为开放式操作系统,它不可避免地存在一些安全隐患.关于如何解决这些隐患,为应用提供一个安全的操作平台,本文会告诉你一些最基本.最常用, ...
- 转 15款免费WiFi(入侵破解)安全测试工具
转:http://www.ctocio.com/security/cloudsecurity/6594.html 一.Vistumbler扫描器 WiFi 扫描器能能发现附近AP的详细信息,例如信号强 ...
随机推荐
- SFM学习记录(二)
分析生成文件 在.nvm.cmvs/00/下有:(也可能是其他数字) models/option-0000.ply:是生成的密集点云模型 txt:文件夹下(还没弄明白ν_v) visualize:保存 ...
- iOS常用的代码块整理
strong @property (nonatomic,strong) <#Class#> *<#object#>; weak @property (nonatomic,wea ...
- cvtColor()学习
CvtColor Void cv::cvtColor(InputArray src, OutputArray dst, INT code, INT dstCn = ) 将图像从一个颜色空间转换为另一个 ...
- 实验吧—Web——WP之 Guess Next Session
打开链接,他有给出查看原码的按钮,那么我们打开看看 在这个里面,如果GET的值等于session的就会给出flag 那么我们进行抓包改包 在输入框内随意输入一个值然后抓包 将password的值删去, ...
- 《DSP using MATLAB》Problem 6.23
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- Redis源码剖析--列表t_list实现
Redis中的列表对象比较特殊,在版本3.2之前,列表底层的编码是 ziplist 和 linkedlist 实现的, 但是在版本3.2之后,重新引入了一个 quicklist 的数据结构,列表的底层 ...
- oracle服务器重启后无法进入系统,登录系统时提示model is unknow
这个是因为安装oracle时,修改了一些系统参数,导致开机异常 在选择系统列表那里直接按e,进入系统开机配置 大概在倒数第二行,也就是有utf8那行,添加init=/bin/sh 然后ctrl+x重启 ...
- xenserver开启虚拟机时提示找不到存储介质,强制关闭和重启都没用
具体报错内容为: this vm needs storage that cannot be seen from that host 该错误的原因是该虚拟机使用了外部存储介质,例如,我就是因为当初规划x ...
- linux怎么不输入路径直接运行程序脚本
有时候我们会遇到一些程序压缩包,已解压无需安装就可以直接运行的那种,例如sendemail,就是直接把程序压缩包下载下来,解压后直接跑sendemail那个脚本就可以实现发送邮件功能 其实很简单,只需 ...
- plsql快速入门
汉化plsql方法: 本来想直接使用英文版的,但是太多专业名词看不懂,只好先汉化熟悉一下先. 安装好plsq后,百度下载plsql汉化包 执行汉化包里面的安装程序,安装目标路径选择plsql的安装路径 ...