题目链接

题意还是比较清楚的,给你q个询问,对每组询问的模数和初始值不同,求满足条件\(a_j~\textrm{mod}~m_i < a_{j + 1}~\textrm{mod}~m_i,(0 \leq j < n_i - 1)\)的j的个数

正向不好求解,那我们可以反着找,也就是找满足条件\(a_j~\textrm{mod}~m_i \geq a_{j + 1}~\textrm{mod}~m_i,(0 \leq j < n_i - 1)\)的个数

\(a_j~\textrm{mod}~m_i = a_{j + 1}~\textrm{mod}~m_i\)时,只有当\(d_i=0\)的时候满足条件,统计个数即可

\(a_j~\textrm{mod}~m_i > a_{j + 1}~\textrm{mod}~m_i\)时,由于\(a_i\)是递增的,那么他只有在\(a_{i+1}>m, a_i<m\)的时候满足这个条件,因为对m取模,也就是说,每满足一次这个条件,\(\sum d_i\)除以m的商都会增加1

因为n远大于k,那我们可以只求一次k,然后找有几次循环,最后再加上不足k的那一次就行了

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ((x)&(-x))
typedef long long LL; int d[5005]; void run_case() {
int k, q;
cin >> k >> q;
for(int i = 0; i < k; ++i) cin >> d[i];
while(q--) {
int n, x, m;
cin >> n >> x >> m;
x %= m;
LL sum = 0, zero = 0;
for(int i = 0; i < k; ++i) {
sum += (d[i] % m);
zero += (d[i] % m == 0);
}
LL large = 1LL*((n-1)/k)*sum;
zero = zero*((n-1)/k);
for(int i = 0; i < n-1-((n-1)/k)*k; ++i) {
large += (d[i] % m);
zero += (d[i] % m == 0);
}
cout << n-1-(large+x)/m-zero << "\n";
} } int main() {
ios::sync_with_stdio(false), cin.tie(0);
cout.flags(ios::fixed);cout.precision(10);
run_case();
cout.flush();
return 0;
}

最新文章

  1. Adobe Flash builder 4的序列号
  2. JMeter基础之一 一个简单的性能测试
  3. Linux设计准则
  4. HTML-a
  5. python: 命令选项及归类
  6. 小技巧--字符串输入从a[1]开始
  7. java 求取某一段时间内的每一天、每一月、每一年
  8. 从 ALAsset 中取出属性
  9. zepto自定义事件
  10. 观《Terminal》之感
  11. Windows下文件或文件夹不能删除时的解决办法
  12. -协同IResult
  13. iOS开发UITableView基本使用方法总结 分类: ios技术 2015-04-03 17:51 68人阅读 评论(0) 收藏
  14. 老李分享:接电话扩展之uiautomator 1
  15. git逻辑和基本命令
  16. jvm详情——7、jvm调优基本配置、方案
  17. OpenCV 入门
  18. 【python深入】获取对象类型及属性
  19. java特殊字符分隔符
  20. Docker(十九)-Docker监控容器资源的占用情况

热门文章

  1. HTML的创建
  2. 16day 重定向符号:
  3. 10day 系统的selinux服务程序优化
  4. CentOS安装docker,及其基本操作
  5. Linux jpeglib库的安装
  6. Redis的安装与用法
  7. 利用Xshell5从本机上向Linux(虚拟机中)上传文件
  8. java: -source 1.5 中不支持 diamond 运算符 ,lambadas表达式 2018-03-13 22:43:47 eleven十一 阅读数 876更多
  9. sublime3使用技巧
  10. git 本地回滚与远程库回滚