BZOJ4377 Kurs szybkiego czytania \ Luogu 3589[POI2015]KUR - 数学思维题
Solution
我又双叒叕去看题解啦$QAQ$, 真的想不到鸭
输入 $a$ 和 $n$ 互质, 所以满足 $a \times i \ mod \ n$ $(0<=i<n)$ 肯定是不重复的
根据这一个性质 , 设 满足条件的子串的开头位置为 $s$
先不考虑$01$, 仅考虑开头位置上的值 $a*s+b$, 设它为$x$, 则它接下来第 $i$ 位的值为 $x+(i-1)*a$
若那个位置上的字符为 $0$, 则 $0<=x+(i-1)*a<p$, 反之 $p<=x+(i-1)*a<n$
就可以列出$m$个不等式, 根据这$m$个不等式, 可以解出满足条件的$x$的范围和个数, 而 $x$ 与 开头位置$s$ 一 一对应, $x$的个数即为答案
但是实现解不等式的交集会比较麻烦, 所以先解出不满足条件的 $x$, 取并集
最后$m-1$个位置需要特别加入并集
Code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1000005
#define R register
#define ll long long
using namespace std; int n, a, b, p, m, tot, cnt;
char s[N]; struct qj {
int s, t; bool operator < (const qj &b) const {
return s < b.s;
} }bt[N << ]; inline int cmax(int A, int B) {
return A > B ? A : B;
} int main()
{
scanf("%d%d%d%d%d", &n, &a, &b, &p, &m);
char ch = getchar();
while (ch != '' && ch != '') ch = getchar();
while (ch == '' || ch == '') s[++cnt] = ch, ch = getchar();
for (R int i = , j = ; i <= m; ++i, j = (j + a) % n) {
ll x, y;
if (s[i] == '') {
x = (p - j + n) % n;
y = (- - j + n) % n;
}
else {
x = ( - j + n) % n;
y = (p - - j + n) % n;
}
if (x <= y) {
bt[++tot].s = x;
bt[tot].t = y;
}
else {
bt[++tot].s = ; bt[tot].t = y;
bt[++tot].s = x; bt[tot].t = n - ;
}
}
for (R int i = n - m + , j = 1ll * i * a % n; i < n; ++i, j = (j + a) % n)
bt[++tot].s = (j + b) % n,
bt[tot].t = bt[tot].s;
sort(bt + , bt + + tot);
int ans = , maxn = -;
for (R int i = ; i <= tot; ++i) {
if (bt[i].s > maxn) ans += bt[i].s - maxn - ;
maxn = cmax(maxn, (int)bt[i].t);
}
if (maxn < n) ans += n - maxn - ;
printf("%d\n", ans);
}
BZOJ4377 Kurs szybkiego czytania \ Luogu 3589[POI2015]KUR - 数学思维题的更多相关文章
- BZOJ4377 : [POI2015]Kurs szybkiego czytania
因为$a$与$n$互质,所以对于$0$到$n-1$里每个$i$,$ai\bmod n$的值互不相同. 设匹配成功的起点为$i$,那么可以得到$3m$段$ai\bmod n$的值不能取的禁区,每段都是连 ...
- BZOJ4377[POI2015]Kurs szybkiego czytania——数学思维题
题目描述 给定n,a,b,p,其中n,a互质.定义一个长度为n的01串c[0..n-1],其中c[i]==0当且仅当(ai+b) mod n < p.给定一个长为m的小01串,求出小串在大串中出 ...
- @bzoj - 4377@ [POI2015] Kurs szybkiego czytania
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n, a, b, p,其中 n, a 互质.定义一个长度为 ...
- luogu P3592 [POI2015]MYJ
题目链接 luogu P3592 [POI2015]MYJ 题解 区间dp 设f[l][r][k]表示区间l到r内最小值>=k的最大收益 枚举为k的位置p,那么包含p的区间答案全部是k 设h[i ...
- BZOJ 4386 Luogu P3597 [POI2015]Wycieczki (矩阵乘法)
题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4386 (luogu) https://www.luogu.org/pro ...
- Luogu 3594 [POI2015]WIL-Wilcze doły
简单题. 考虑没有修改数字的条件的限制,我们直接用双指针扫描就可以计算出答案了. 然后考虑加入修改数字的条件,只要用单调队列维护出当前两个指针表示的区间中长度为$d$的一段区间的最大值,用总和减掉这个 ...
- Luogu 3586 [POI2015]LOG
考虑离散化后开权值线段树. 设序列中不小于$s$的数有$cnt$个,小于$s$的数的和为$sum$. 那么操作Z能成功的充要条件是$sum \geq (c - cnt) * s$. 如果序列中不小于$ ...
- Luogu 1031 - 均分纸牌 - [有意思的思维题]
题目链接:https://www.luogu.org/problemnew/show/P1031 题目描述有 $N$ 堆纸牌,编号分别为 $1,2,…,N$.每堆上有若干张,但纸牌总数必为 $N$ 的 ...
- Luogu 1583 - 魔法照片 - [简单排序题]
题目链接:https://www.luogu.org/problemnew/show/P1583 题目描述一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人. ...
随机推荐
- python import引入不同路径下的模块
转载 python 包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径. 下面将具体介绍几种常用情况: (1)主程序与模块程序在同一目录下: 如下面程序结构: `- ...
- Ubuntu16.04配置Eclipse开发OpenCV
系统环境 Ubuntu 16.04; OpenCV2.4.13; Eclipse neon for C++ 配置步骤 1.配置JDK,此处配置的是JDK1.8,详见<Ubuntu 16.04 ...
- CSS存在形式的引用
撰写个css文件 直接引用css文件样式的内容.本质是将css文件拿过来
- greendao3.2.0使用
源代码地址 https://github.com/greenrobot/greenDAO buildscript { repositories { jcenter() mavenCentral() } ...
- numpy学习笔记(三)
(1)numpy的位操作 序号 操作及描述 1. bitwise_and 对数组元素执行位与操作 2. bitwise_or 对数组元素执行位或操作 3. ...
- linux服务之ntp与dns篇
ntp复习: 简介:对于计算机时间的同步管理操作服务器 部署:(服务端和客户端或者说集群) 1.服务端下载ntp 2.打开配置文件/etc/ntp.conf: server 127.127.1.0 ...
- OpenStack Q版本新功能以及各核心组件功能对比
OpenStack Q版本已经发布了一段时间了.今天, 小编来总结一下OpenStack Q版本核心组件的各项主要新功能, 再来汇总一下最近2年来OpenStack N.O.P.Q各版本核心组件的主要 ...
- html 设置input框的记忆功能(联想内容)
autocomplete=“on/off” 1.默认情况下,autocomplete的值是on.你可以将其设置为off. 2.autocomplete属性可以放在input 元素上,也可以放在form ...
- java实现pdf按页切分成图片
package com.ces.component.pictrueCut.entity; import java.awt.Image; import java.awt.Rectangle; impor ...
- filter in Servlet
Servlet过滤器: Servlet过滤器是用于执行某些过滤任务的对象.过滤器可以应用于servlet,jsp或html. Servlet过滤器主要用于以下任务: 预处理: Servlet过滤器用于 ...