P5956-[POI2017]Podzielno【数学】
正题
题目链接:https://www.luogu.com.cn/problem/P5956
题目大意
\(B\)进制下,给出序列\(a\),\(a_i\)表示数字\(i\)有多少个。求一个最大的\(X\)在\(B\)进制下,由给出的数字组成(不一定要用完),且其是\(B-1\)的倍数。
\(q\)次询问\(X\)的第\(k\)位是几。
\(2\leq B\leq 10^6,1\leq q\leq 10^5,1\leq a_i\leq 10^6,0\leq k\leq 10^{18}\)
解题思路
设\(x_i\)表示第\(i\)位的话就是
\]
拆开单独的一个来看
\]
\]
所以其实就是各位数字的和为\(B-1\)的倍数就好了。
然后再回头看题目发现有限制\(a_i\geq 1\)。这样如果用上所有数字的和对\(B-1\)取模为\(t\)的话,若\(t\)不为\(0\),我们就让\(a_t\)减去一个\(1\)就好了。
然后对于询问求一个前缀和然后二分
时间复杂度\(O(B+q\log B)\)
code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e6+10;
ll B,q,a[N];
signed main()
{
scanf("%lld%lld",&B,&q);
ll t=0;
for(ll i=0;i<B;i++){
scanf("%lld",&a[i]);
(t+=a[i]*i)%=B-1;
}
if(t)a[t]--;
for(ll i=0;i<B;i++)a[i]+=a[i-1];
while(q--){
ll x;scanf("%lld",&x);x++;
if(x>a[B-1])puts("-1");
else printf("%lld\n",lower_bound(a,a+B,x)-a);
}
return 0;
}
P5956-[POI2017]Podzielno【数学】的更多相关文章
- 【BZOJ4724】[POI2017]Podzielno 数学+二分
[BZOJ4724][POI2017]Podzielno Description B进制数,每个数字i(i=0,1,...,B-1)有a[i]个.你要用这些数字组成一个最大的B进制数X(不能有前导零, ...
- BZOJ4724 [POI2017]Podzielno
4724: [POI2017]Podzielno Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 77 Solved: 37[Submit][Stat ...
- bzoj 4724 [POI2017]Podzielno 二分+模拟
[POI2017]Podzielno Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 364 Solved: 160[Submit][Status][ ...
- BZOJ 4724: [POI2017]Podzielno
Description 由\([0,B-1]\)的数字构造一个 \(B\) 进制数字,使得他是 \(B-1\) 的倍数. Sol 贪心+二分. 首先 \(X\) 是 \(B-1\) 的倍数,那么有 \ ...
- 【bzoj4724】[POI2017]Podzielno 二分
题目描述 B进制数,每个数字i(i=0,1,...,B-1)有a[i]个.你要用这些数字组成一个最大的B进制数X(不能有前导零,不需要用完所有数字),使得X是B-1的倍数.q次询问,每次询问X在B进制 ...
- 数学思想:为何我们把 x²读作x平方
要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x²读作x平方呢? 古希腊时代,越来越多的 ...
- 速算1/Sqrt(x)背后的数学原理
概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...
- MarkDown+LaTex 数学内容编辑样例收集
$\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...
- BZOJ 4726: [POI2017]Sabota?
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 301 Solved ...
随机推荐
- shell检查文件内容是否变化
# 先记录文件的md5 md5sum ip.list >ip.md5 # 记录新的md5与之前的比较 #!/bin/bash md5sum ip.list > .ip.md5 diff i ...
- vue引入zTree入门
参考1:https://blog.csdn.net/tg928600774/article/details/80911589 参考2:https://blog.csdn.net/ylhsuper/ar ...
- 微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...
- MediaWiki定制化改动
Linux下面安装MediaWiki环境的方法,可以参照我上一篇文章linux使用xampp安装MediaWiki环境 重置用户密码 使用维护脚本 可以使用maintenance/changePass ...
- css写法
id选择器 > 类选择器 > 标签选择器 @charset "utf-8"; charset=utf-8 表示当前文档的字符集是采用utf-8的字符,也就是我们常说 ...
- linux centos7 read 命令
2021-08-24 1. 命令简介 read 命令就是读取控制台输入,会将从键盘输入的数据分割成一个个字段依次存储在 parameter[0] .parameter[1] ......,若是没有指定 ...
- 过WAF的小思路
过WAF的小思路 前言 最近在学习了一波CMS漏洞,尝试看了几个菠菜站,有宝塔WAF...向WHOAMI大佬取经回来后,绕过了一个WAF.觉得是时候要认真总结一下了:) 前期的过程 菠菜采用的是Thi ...
- MongoDB(1)- 入门介绍
MongoDB 数据库 MongoDB 是一个文档数据库,旨在简化开发和扩展 MongoDB 中的记录是一个文档 Document,是由字段和值对组成的数据结构 MongoDB 文档类似于 JSON ...
- 乐肴2.0环境改名后,需要删除原来的软链接(public/storage)
rm -rf public/storage php artisan storage:link
- session案例之验证码
一.需求分析 其中,一张图片就是一个单独的请求: 一个验证验证码的Servlet,还有一个验证用户名和密码的Servlet,两次都可能有错误信息返回到前端页面,所以前面页面要从request域中获取返 ...