【LOJ】#3096. 「SNOI2019」数论
LOJ#3096. 「SNOI2019」数论
如果\(P > Q\)我们把\(P\)和\(Q\)换一下,现在默认\(P < Q\)
这个时候每个合法的\(a_i\)都可以直接落到\(Q\)中,因为\(a_{i} \equiv a_{i} \pmod Q\)这样避免了麻烦
然后呢我们发现每次把\((a_{i} + P) \% Q\)会走成一个圈,我们就要求从\(a_{i}\)开始数\(\lfloor \frac{T - 1- a_{i}}{P} \rfloor + 1\)个圈里\(b_{i}\)的总和
这样的话可以断圈为链,复制两份就可以快速查某一段开始走小于圈长步的总和了
这样的圈一共有\(gcd(P,Q)\)个
#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define eps 1e-10
#define ba 47
#define MAXN 1000005
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {
res = 0;T f = 1;char c = getchar();
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 +c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
int P,Q,n,m;
int A[MAXN],B[MAXN];
int sum[MAXN * 2],pos[MAXN * 2],tot;
bool vis[MAXN];
int64 ans,T;
int gcd(int a,int b) {
return b == 0 ? a : gcd(b,a % b);
}
void Solve() {
read(P);read(Q);read(n);read(m);read(T);
int x;
for(int i = 1 ; i <= n ; ++i) {
read(x);A[x] = 1;
}
for(int i = 1 ; i <= m ; ++i) {
read(x);B[x] = 1;
}
if(P > Q) {
swap(P,Q);
for(int i = 0 ; i <= 1000000 ; ++i) swap(A[i],B[i]);
}
int g = gcd(P,Q);
for(int i = 0 ; i < g ; ++i) {
for(int j = 1 ; j <= tot ; ++j) sum[j] = 0;
tot = 0;
int x = i;
while(!vis[x]) {
sum[tot + 1] = B[x] + sum[tot];
pos[tot + 1] = x;
++tot;
vis[x] = 1;
x = (x + P) % Q;
}
int t = tot;
for(int j = 1 ; j <= t ; ++j) {
if(pos[j] < P && A[pos[j]]) {
if(T - 1 - pos[j] >= 0) {
int64 all = (T - 1 - pos[j]) / P + 1;
int64 cnt = all / t;
ans += cnt * sum[t];
int rem = all % t;
if(rem) {
ans += sum[j + rem - 1] - sum[j - 1];
}
}
}
sum[tot + 1] = sum[tot] + B[x];++tot;
x = (x + P) % Q;
}
}
out(ans);enter;
}
int main(){
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
Solve();
}
【LOJ】#3096. 「SNOI2019」数论的更多相关文章
- Loj #3096. 「SNOI2019」数论
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...
- 【LOJ】#3098. 「SNOI2019」纸牌
LOJ#3098. 「SNOI2019」纸牌 显然选三个以上的连续牌可以把他们拆分成三个三张相等的 于是可以压\((j,k)\)为有\(j\)个连续两个的,有\(k\)个连续一个的 如果当前有\(i\ ...
- 【LOJ】#3097. 「SNOI2019」通信
LOJ#3097. 「SNOI2019」通信 费用流,有点玄妙 显然按照最小路径覆盖那题的建图思路,把一个点拆成两种点,一种是从这个点出去,标成\(x_{i}\),一种是输入到这个点,使得两条路径合成 ...
- 【LOJ】#3095. 「SNOI2019」字符串
LOJ#3095. 「SNOI2019」字符串 如果两个串\(i,j\)比较\(i < j\),如果离\(a_{i}\)最近的不同的数是\(a_{k}\),如果\(j < k\)那么\(i ...
- 【LOJ#3096】[SNOI2019]数论
[LOJ#3096][SNOI2019]数论 题面 LOJ 题解 考虑枚举一个\(A\),然后考虑有多少个合法的\(B\). 首先这个数可以写成\(a_i+kP\)的形式,那么它模\(Q\)的值成环. ...
- LOJ #2721. 「NOI2018」屠龙勇士(set + exgcd)
题意 LOJ #2721. 「NOI2018」屠龙勇士 题解 首先假设每条龙都可以打死,每次拿到的剑攻击力为 \(ATK\) . 这个需要支持每次插入一个数,查找比一个 \(\le\) 数最大的数(或 ...
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- Loj #3093. 「BJOI2019」光线
Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...
- Loj #3089. 「BJOI2019」奥术神杖
Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...
随机推荐
- allowMultiQueries=true mybatis 要多行sql执行,一定要注意
allowMultiQueries=true 这个配置已经出现多次问题了,这次由于切换时多数据源,搞配置的同志不知道从哪里copy的配置,只换了我们的链接,我们之前配置了好多配置都丢失了,我的代码中有 ...
- Python学习日记(七)——装饰器
1.必备知识 #### 一 #### def foo(): print 'foo' foo #表示是函数 foo() #表示执行foo函数 #### 二 #### def foo(): print ' ...
- 走进JavaWeb技术世界1:Web后端与J2EE的由来
转自:微信公众号 码农翻身 这个问题来自于QQ网友,一句两句说不清楚,索性写个文章. 我刚开始做Web开发的时候,根本没有前端,后端之说. 原因很简单,那个时候服务器端的代码就是一切:接受浏览器的请求 ...
- 冲刺阶段——Day3
[今日进展] 完善黄金点游戏的算法与代码架构. 将文字界面改编为图形界面 码云链接:https://gitee.com/jxxydwt1999/20175215-java/blob/master/Go ...
- plus.zip.compressImage 压缩报错{"code":-5,"message":"输出图片失败"}
var pathCompress = "_doc/" + getNowFormatDate(new Date()) + ' ' + Math.random() + ".c ...
- 分享一个自己做的SpringMVC的PPT,由于比较忙只写了一些重要的部分
- CentOS7下安装php-soap扩展
一.首先更新yum yum update 二.查看php-soap相关的安装包,查看php版本,安装对应php版本的php-soap版本 php -v yum search php | grep -i ...
- (翻译) Poor misunderstood 'var'
It seems most programmers coming to JavaScript from C, C++, Java, and the like equate the var statem ...
- php错误机制总结
转 http://www.cnblogs.com/yjf512/p/5314345.html
- 1-3 RHEL7操作系统的安装
RHEL7操作系统的安装 本节所讲内容: q RHEL7.2操作系统的安装 第1章 RHEL7系统安装 1.1 安装软件准备: 需要的软件如下: Vmware workstation 12(含注册码 ...