牛客练习赛16D K进制 数论(待理解QAQ)
正解:数论
解题报告:
行吧那就让我一点点推出来趴QAQ
先放张图quq这是我唯一一个找到了的有靠谱讲解的题解了QAQ(虽然我太弱了还是没看懂QAQ
首先最前面还是,能理解的
就是你考虑k进制的进位,因为进位之后我们会把所有再加起来,就相当于把一个k变成了一个1 这里是可以理解的
然后继续,尝试理解?
umm首先,如果B=0,显然的一点就是只有组成它的数都是0才行(因为相当于是所有数位之和=0那只能是全0咯.特判一波先特殊处理掉
然后,然后实在理解不了了太蠢了,,,,不行我决定再去找一波博客QAQ
因为每个x的最终价值都是1<=val<k的.
那么 知道[i,j-1]的价值x,可以容易知道[i+1,j]的价值y.
val=x+a[j] val最大为2*k-2 若val>=k 则进位,十位为1,个位为val-k.最后结果:1+val-k<=k-1.
首先想到 直接枚举计算O(n2) TLE.
(a[L]+a[L+1]+..a[R]) 每次若有两个数相加超过k,则会用一个1和余k部分来代替.
就是说 x→x%k+1 就可以转化成,x%(k-1) 唯一就是如果余数是0其实要变成k-1嘛
那么d[L,R]等价于(a[L]+a[L+1]+...+a[R]) %(k-1) 的值.
现在求出前缀p[i]%(k-1)的值.
枚举右端点r,要想知道有多少个左端点L,满足d[L,R]==b.
那么 b ≡d[r]-d[L-1] (mod k-1) .
变形得 d[L-1] ≡ d[r]-b (mod k-1)
然后我就开个数组 下标表示mod k-1的余数 数值表示有几个,每扫一个加一下然后把我扫到的这个也放进数组,over
哇这么整理一下还是感觉,勉强能理解的欸!
放,代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
;
ll k,b,n,pre[N],res=,z=,tt=;
map<ll,ll> cnt;
inline ll read()
{
;;
'))ch=getchar();
;
)+(x<<)+(ch^'),ch=getchar();
return y?x:-x;
}
int main()
{
k=read();b=read();n=read();
;i<=n;i++)
{
ll t=read();
pre[i]=(pre[i-]+t)%(k-);
t?tt=:z+=++tt;
}
);
cnt[]++;
;i<=n;i++)
{
ll val=(pre[i]-b+k-)%(k-);
res+=cnt[val];
cnt[pre[i]]++;
}
) res-=z;
;
}
我真的觉得,这题好难啊,,,真的只是进阶嘛,,,哭了TT
牛客练习赛16D K进制 数论(待理解QAQ)的更多相关文章
- 陕西师范大学第七届程序设计竞赛网络同步赛 F WWX的礼物【数学/k进制下x^n的位数/log】
链接:https://www.nowcoder.com/acm/contest/121/F来源:牛客网 题目描述 WWX的女朋友送给了他一个礼物,可是礼物却被一把K进制密码锁锁住了.在礼物盒上还有一张 ...
- K进制数
题目描述 考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0. 考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0. 例: 1010 ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
- 牛客练习赛50 D tokitsukaze and Event (最短路,思维)
牛客练习赛50 D tokitsukaze and Event 链接:https://ac.nowcoder.com/acm/contest/1080/D来源:牛客网 时间限制:C/C++ 1秒,其他 ...
- 牛客练习赛48 C 小w的糖果 (数学,多项式,差分)
牛客练习赛48 C 小w的糖果 (数学,多项式) 链接:https://ac.nowcoder.com/acm/contest/923/C来源:牛客网 题目描述 小w和他的两位队友teito.toki ...
- 求x!在k进制下后缀零的个数(洛谷月赛T1)
求x!在k进制下后缀和的个数 20分: 求十进制下的x!后缀和的个数 40分: 高精求阶乘,直接模拟过程 (我不管反正我不打,本蒟蒻最讨厌高精了) 60分 利用一个定理(网上有求x!在 ...
- 牛客练习赛64 D【容斥+背包】
牛客练习赛64 D.宝石装箱 Description \(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石.第\(i\)颗宝石不能装入第\(a_i\)个箱子.求合法的装箱方案对\(99824 ...
随机推荐
- 使用Bind搭建DNS服务
DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 正向解析:根据主机名(域名)查找对应的IP地址. 反向解析:根据I ...
- 分析JobInProgress中Map/Reduce任务分配
1.JobTracker能否决定给当前的TaskTracker节点分配一个Job的具体的哪一个任务? 2.什么是map本地任务? 3.nonRunningMapCache的作用是什么? 4.从Task ...
- WIN32编程经验总结
一 窗口和消息 1. 前缀: 2 WPARAM和LPARAM的意义在Windows是一种16位系统时,WndProc的第三个参数被定义为WORD,是一个16位的无符号整数,而第四个参数被定义为一个LO ...
- 《转载》Fiddler 抓包工具总结
阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). AutoResponder 允许拦截制 ...
- VC++进行窗口枚举
https://blog.csdn.net/u012372584/article/details/53735242 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- 利用pdb获取未导出符号
BOOL InitSymHandler(HANDLE hProc) { CHAR SymPath[MAX_PATH], CurDir[MAX_PATH]; GetCurrent ...
- 【.netcore基础】MVC制器Controller依赖注入
废话少说,直接上代码 首先我们得有一个接口类和一个实现类,方便后面注入MVC里 接口类 public interface IWeatherProvider { List<WeatherForec ...
- 【python3】爬取新浪的栏目分类
目标地址: http://www.sina.com.cn/ 查看源代码,分析: 1 整个分类 在 div main-nav 里边包含 2 分组情况:1,4一组 . 2,3一组 . 5 一组 .6一组 ...
- java框架---->lucene的使用(一)
Lucene是一个全文检索的框架,apache组织提供了一个用Java实现的全文搜索引擎的开源项目.这里我们对apache的lucene的框架做一个简单的介绍.心甘情愿这四个字,透着一股卑微,但也有藏 ...
- 如何在Computer下添加System Folder
1.创建一个GUID标识该系统目录,比如:{7854FF7A-470F-4D04-9FC5-4CFC7B2A0E89}.下面的操作步骤将全部使用这个示例GUID. 2.打开注册表编辑器(Registr ...