BZOJ 4724: [POI2017]Podzielno
Description
由\([0,B-1]\)的数字构造一个 \(B\) 进制数字,使得他是 \(B-1\) 的倍数.
Sol
贪心+二分.
首先 \(X\) 是 \(B-1\) 的倍数,那么有 \(X \equiv 0 (mod B-1)\)
设 \(X\) 的第 \(i\) 位,为\(X_i\)
那么则有 \(\sum_{i=0}^{n-1}x_iB^i \equiv 0(mod B-1)\)
因为 \(B^i \equiv 1(mod B-1)\)
所以就是 \(\sum_{i=0}^{n-1}x_i \equiv 0(mod B-1)\)
数据保证了 \(a_i \geqslant 1\)
所以直接去掉这一位就可以了...
询问直接二分.
PS:一开始一直在想将 \(X\) 表示成 \(tB-t\) 的形式...就是在末尾加个 \(0\) 减去 \(t\),计算每一位的贡献...后来失败了...
Code
/**************************************************************
Problem: 4724
User: BeiYu
Language: C++
Result: Accepted
Time:2740 ms
Memory:9104 kb
****************************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std; typedef long long LL;
const int N = 1000005; LL n,t,m,p;
LL a[N]; inline LL in(LL x=0,char ch=getchar()){ while(ch>'9' || ch<'0') ch=getchar();
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return x; }
int main(){
n=in(),t=in();m=n-1;
for(int i=0;i<n;i++) a[i]=in(),p=(p+(i*a[i]%m))%m;
if(p) a[p]--;
for(int i=1;i<n;i++) a[i]+=a[i-1];
for(LL k,ans;t--;){
k=in();ans=upper_bound(a,a+n,k)-a;
if(ans>m) puts("-1");else printf("%lld\n",ans);
}return 0;
}
BZOJ 4724: [POI2017]Podzielno的更多相关文章
- bzoj 4724 [POI2017]Podzielno 二分+模拟
		
[POI2017]Podzielno Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 364 Solved: 160[Submit][Status][ ...
 - BZOJ4724 [POI2017]Podzielno
		
4724: [POI2017]Podzielno Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 77 Solved: 37[Submit][Stat ...
 - 【BZOJ4724】[POI2017]Podzielno 数学+二分
		
[BZOJ4724][POI2017]Podzielno Description B进制数,每个数字i(i=0,1,...,B-1)有a[i]个.你要用这些数字组成一个最大的B进制数X(不能有前导零, ...
 - BZOJ 4726: [POI2017]Sabota?
		
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 301 Solved ...
 - BZOJ 4726: [POI2017]Sabota? 树形dp
		
4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...
 - BZOJ 4727: [POI2017]Turysta
		
4727: [POI2017]Turysta Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 117 Solved ...
 - bzoj 4725  [POI2017]Reprezentacje ró?nicowe 暴力
		
[POI2017]Reprezentacje ró?nicowe Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 141 Solved: 67[Sub ...
 - bzoj 4723  [POI2017]Flappy Bird 模拟
		
[POI2017]Flappy Bird Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 482 Solved: 196[Submit][Status ...
 - BZOJ 4725: [POI2017]Reprezentacje ró?nicowe
		
Description 一个数列. \(a_1=1,a_2=2\) 当 \(n>2\) 时 \[a_n = \{ \begin {matrix} 2a_{n-1},\text{n is an ...
 
随机推荐
- IT行业的技术类岗位分为许多种,如何判断自己适合哪种?
			
A.硬件工程师B.软件工程师C.UI设计师D.仿真工程师E.ERP工程师F.集成工程师G.系统架构设计师H.数据库工程师I.网络管理员J.网络安全工程师K.网站架构设计师L.网页设计M.Flash设计 ...
 - JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示
			
前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
 - 动画的使用—Drawable Animation
			
Drawable Animation可以称为帧动画,因为它是通过每次播放一帧Drawable资源实现的. Drawable Animation算不上真正意义上的动画,因为它的内部实现是通过定时发送消息 ...
 - 移动web开发—页面头部 META 总结
			
meta指元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 标签位于文档的头部,不包含任何内容. 标签的属性定义了与文档相关联的名称/值对. ...
 - sublime编辑器插件
			
sublime---插件 http://www.cnblogs.com/dudumao/p/4054086.html sublime--- Emmet插件 使用方法 http://docs.emme ...
 - 如何完全卸载(Mac&Windows)office 365 ProPlus
			
Q: 如何完全卸载office 365 ProPlus,如果用户使用之前的office版本没有卸载干净(配置文件中保持了原有的Key)会造成新安装的office 365 ProPlus 或者最新版的o ...
 - 解决:MIUI 8应用商店下载不了软件 APP
			
MIUI 8应用商店下载不了软件,是什么原因呢? 原因是:刷了国际版的MIUI,然后又刷回国内的MIUI,刷机时数据没有清理干净. 解决办法:使用RE管理器或者其他第三方可以编辑系统文件的文件管理器, ...
 - nginx平滑升级
			
1.查询原来安装配置信息 [root@t-scrmap1-v-szzb local]# netstat -unlatp | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0: ...
 - MYSQL之基本操作
			
数据库操作 一.查看所有的数据库 show databases; 二.创建数据库 create database userinfo; 说明: 创建了一个名为userinfo的数据库 三.使用数据库 u ...
 - python 下 tinker、matplotlib 混合编程示例一个
			
该例是实现了 Tinker 嵌入 matplotlib 所绘制的蜡烛图(k 线),数据是从 csv 读入的.花一下午做的,还很粗糙,仅供参考.python 代码如下: import matplotli ...