JZOJ 4744.同余
\(\text{Problem}\)
\(\text{Solution}\)
考虑 \(60\) 分
设 \(f_{i,j,k}\) 表示前 \(i\) 个数,模 \(j\) 同余 \(k\) 的个数
由于空间太大,离线后把询问 \(l,r\) 拆开,挂到相应的位置上
然后按位置顺着扫一遍即可
考虑更一般的做法,仍旧离线挂询问
对于 \(p,q\),需要的 \(a_i\) 一定是 \(px + q\) 形式的
枚举 \(x\) ,记录个数即可
两种做法都无法通过本题
那就平衡规划一番
在 \(p <= 100\) 是采取第一个做法,否则采取第二个做法
\(\text{Code}\)
#include<cstdio>
#include<cmath>
#define re register
using namespace std;
const int N = 1e5 + 5;
int n, m, mx, a[N], ans[N], h[N], buc[N], g[105][105];
struct edge{int nxt, r, fl, p, q, id;}e[N * 2];
inline void add(int r, int fl, int p, int q, int id)
{
static int tot = 0;
e[++tot] = edge{h[r], r, fl, p, q, id}, h[r] = tot;
}
inline void read(int &x)
{
x = 0; char ch = getchar();
while (ch < '0' || ch > '9') ch = getchar();
while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
}
int main()
{
read(n), read(m);
for(re int i = 1; i <= n; i++) read(a[i]), mx = mx < a[i] ? a[i] : mx;
int lim = 0;
for(re int i = 1, l, r, p, q; i <= m; i++)
{
read(l), read(r), read(p), read(q), lim = lim < p ? p : lim;
add(l - 1, -1, p, q, i), add(r, 1, p, q, i);
}
lim = sqrt(lim);
for(re int i = 0; i <= n; i++)
{
if (i)
{
++buc[a[i]];
for(re int p = 1; p <= lim; p++) g[p][a[i] % p]++;
}
for(re int j = h[i]; j; j = e[j].nxt)
{
if (e[j].p > lim)
for(re int k = 0; k + e[j].q <= mx; k += e[j].p)
ans[e[j].id] += e[j].fl * buc[k + e[j].q];
else ans[e[j].id] += e[j].fl * g[e[j].p][e[j].q];
}
}
for(re int i = 1; i <= m; i++) printf("%d\n", ans[i]);
}
JZOJ 4744.同余的更多相关文章
- [jzoj 4722] [NOIP2016提高A组模拟8.21] 跳楼机 解题报告 (spfa+同余)
题目链接: http://172.16.0.132/senior/#main/show/4722 题目: DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧.Srwudi的家是一幢h层的摩天 ...
- [jzoj]1115.【HNOI2008】GT考试
Link https://jzoj.net/senior/#main/show/1115 Description 申准备报名参加GT考试,准考证号为n位数X1X2X3...Xn-1Xn(0<=X ...
- float 对整形的取余运算
取余是针对整形的,但是有时候一些特殊需求,我们需要 float 型对整形取下余数.比如,将角度化到 0- 360 范围内. 今天看到 lua 的实现方式: a % b == a - math.floo ...
- JS利用取余实现toggle多函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- salesforce 零基础学习(四十三)运算取余
工作中遇到一个简单的小问题,判断两个数是否整除,如果不整除,获取相关的余数. 习惯java的我毫不犹豫的写下了代码 public Boolean isDivisibility(Integer divi ...
- poj1006Biorhythms(同余定理)
转自:http://blog.csdn.net/dongfengkuayue/article/details/6461298 本文转自head for better博客,版权归其所有,代码系本人自己编 ...
- PHP大数(浮点数)取余
一般我们进行取余运算第一个想到的就是用百分号%,但当除数是个很大的数值,超出了int范围时,这样取余就不准确了. php大数(浮点数)取余函数 /** * php大数取余 * * @param int ...
- NOIP2014 uoj20解方程 数论(同余)
又是数论题 Q&A Q:你TM做数论上瘾了吗 A:没办法我数论太差了,得多练(shui)啊 题意 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, ...
- JAVA中取余(%)规则和介绍
在java中%的含义为取余. java :a%b 数学公式a%b=a-(a/b)*b
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
随机推荐
- JavaScript合集(流程控制语句)
流程控制 条件判断语句 条件分支语句 循环语句 条件判断语句 if语句 语法: if(条件表达式){ 语句 } ------- if(a > 10){ alert('a比10大') } if-e ...
- Vue 打包报错UnhandledPromiseRejectionWarning: postcss-svgo: Error in parsing SVG
解决方案 检查下自己最新写的css 或者最新引入的样式库,把里面的base64的url替换成双引号形式的 PS:我这报错是因为引入的weui.min.css里面的loading样式的`backgrou ...
- Flutter和Rust如何优雅的交互
前言 文章的图片链接都是在github上,可能需要...你懂得:本文含有大量关键步骤配置图片,强烈建议在合适环境下阅读 Flutter直接调用C层还是蛮有魅力,想想你练习C++,然后直接能用flutt ...
- Jenkins&&gitlab2
Jenkins slave 添加jenkins slave节点: jenkins slave节点创建工作目录与基本环境配置,如果jenkins slave节点需要clone代码和执行java 代码编 ...
- input限制只能输入汉字
<el-form class="det_foot" :model="form" :rules="rules" ref="fo ...
- Java基础类String学习分析
目录 1 String不可变性 2 不可变的好处 3 String+和StringBuilder效率差异 4 String, StringBuffer and StringBuilder 5 Stri ...
- 网络监测工具之Zabbix的搭建与测试方法(一)
简介 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,它能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...
- [深度学习] imgaug库使用笔记
imgaug是一款非常有用的python图像增强库,非常值得推荐应用于深度学习图像增强.其包含许多增强技术,支持图像分类,目标检测,语义分割,热图.关键点检测等一系列任务的图像增强.本文主要介绍img ...
- [python]《Python编程快速上手:让繁琐工作自动化》学习笔记2
1. 读写文件笔记(第8章)(代码下载) 1.1 文件与文件路径 通过import os调用os模块操作目录,常用函数如下: 函数 用途 os.getcwd() 取得当前工作路径 os.chdir() ...
- Js/Jq 截图并上传
今天想做一个 Js + Jq 截取网页图并上传到后端,经过一番折腾最终达到了效果. 1·首先需要用到一个非常强大的外部依赖库 html2canvas html2canvas 官网:html2canva ...