牛客练习赛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 ...
随机推荐
- vmware下虚拟机不能上网问题解决
这个问题困扰了好久,vmware下装的虚拟机可以通过DHCP获取单独IP,但当用到管控较严格的环境,需要它与主机共享IP时,就不好使了. 今天在一篇文章中找到答案,如下图,windows系统中要启动V ...
- Docker 仓库管理
仓库 ( registry ) 是一个用来存放镜像的地方,当我们执行 docker pull centos 去拉取 centos 镜像时,默认是从 Docker Hub 这个公共仓库来拉取的: 对于企 ...
- Expected BEGIN_ARRAY but was BEGIN_OBJECT
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3519 path $.data[1].inspector_user Gson 中 ...
- Python中字符串的intern机制
intern机制: 字符串类型作为Python中最常用的数据类型之一,Python解释器为了提高字符串使用的效率和使用性能,做了很多优化,例如:Python解释器中使用了 intern(字符串驻留)的 ...
- Flask中向前端传递或者接收Json文件的方法
1. 利用flask的request.form.get()方法 这一中方法主要利用flask的request.form.get方法,获得前端发送给后台的json文件 Python 端代码: @app. ...
- (转载)JVM实现synchronized的底层机制
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea.本文并不比较synchronized与Loc ...
- activity的启动模式有哪些?
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...
- Win8应用开发 入门篇(三) UX交互导航模式
导航模式(Windows 应用商店应用) 在本文中 分层模式 画布上导航 顶部应用栏 语义式缩放 相关主题 组织 Windows 应用商店应用中的内容,以便用户可以轻松而直观地进行导航.使用正确的 ...
- sencha touch 常见问题解答(1-25)
欢迎留言补充,持续更新中... 1.sencha touch 是什么? 答:Sencha touch框架是世界上第一个基于HTML 5的移动应用框架.它可以让你的Web应用看起来像网络应用.美丽的用户 ...
- Sencha Touch 实战开发培训 视频教程 第二期 第八节 (完结)
2014.4.23 晚上8:00左右开课. 本节课耗时超长,因为演示过程中出现了一些小错误,所以耗时接近2小时. 本期培训一共八节,前两节免费,后面的课程需要付费才可以观看. 本节内容: 开发cord ...