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串,求出小串在大串中出现了几次。
输入
第一行包含整数n,a,b,p,m(2<=n<=10^9,1<=p,a,b,m<n,1<=m<=10^6)。n和a互质。
第二行一个长度为m的01串。
输出
一个整数,表示小串在大串中出现了几次
样例输入
101
样例输出
提示

假设我们以长串中第i个作为匹配开头,(ai+b)%n=x,那么接下来长串中的字符的表达式就是x+a、x+2a、x+3a……。
如果以i为开头能匹配成功,那么假设短串是0110,就要满足0<=x<p;p<=x+a<n;p<=x+2a<n;0<=x+3a<p(不考虑取模)。
这样就能列出m个不等式,这m个不等式的交集就是以x为开头能成功匹配的x的取值范围。
因为n,a互质,所以不存在两个位置的表达式值相同,x取值范围的区间长度就是答案。
但取模之后就可能将每个不等式的一个取值范围变成开头和结尾的两个,不好求答案。
因此可以找到每个不等式不成立的取值范围,将这些范围取并集,他们的补集就是答案。
将所有不成立区间按左端点排个序,从左到右扫一遍即可。
注:代码中实际是以ai+b中的ai为未知变量,因为ai+b与ai的取值范围长度相同,所以不影响答案。
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<bitset>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct miku
{
int l;
int r;
}f[4000010];
int cnt;
int n,p,a,b,m;
char s[1000010];
int now;
int ans;
void add(int x,int y)
{
cnt++;
f[cnt].l=x;
f[cnt].r=y;
}
void updata(int a,int b,int c,int d)
{
if(a)
{
add(0,a);
}
if(b<c)
{
add(b,c);
}
if(d<n)
{
add(d,n);
}
}
bool cmp(miku a,miku b)
{
return a.l<b.l;
}
int main()
{
scanf("%d%d%d%d%d",&n,&a,&b,&p,&m);
scanf("%s",s);
for(int i=0;i<m;i++,b=(b+a)%n)
{
if(s[i]=='0')
{
updata(0,max(0,p-b),n-b,min(n,n+p-b));
}
else
{
updata(max(p-b,0),n-b,min(n,p+n-b),n);
}
}
for(int i=n-1,b=n-a;i>=n-m+1;b=(b-a+n)%n,i--)
{
add(b,b+1);
}
add(n,n+1);
sort(f+1,f+1+cnt,cmp);
for(int i=1;i<=cnt;i++)
{
if(f[i].l>now)
{
ans+=f[i].l-now;
}
if(f[i].r>now)
{
now=f[i].r;
}
}
printf("%d",ans);
}
BZOJ4377[POI2015]Kurs szybkiego czytania——数学思维题的更多相关文章
- BZOJ4377 : [POI2015]Kurs szybkiego czytania
因为$a$与$n$互质,所以对于$0$到$n-1$里每个$i$,$ai\bmod n$的值互不相同. 设匹配成功的起点为$i$,那么可以得到$3m$段$ai\bmod n$的值不能取的禁区,每段都是连 ...
- @bzoj - 4377@ [POI2015] Kurs szybkiego czytania
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n, a, b, p,其中 n, a 互质.定义一个长度为 ...
- PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...
- BZOJ4377 Kurs szybkiego czytania \ Luogu 3589[POI2015]KUR - 数学思维题
Solution 我又双叒叕去看题解啦$QAQ$, 真的想不到鸭 输入 $a$ 和 $n$ 互质, 所以满足 $a \times i \ mod \ n$ $(0<=i<n)$ 肯定是不重 ...
- 51Nod 1003 阶乘后面0的数量(数学,思维题)
1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720 ...
- Gym 100801D Distribution in Metagonia (数学思维题)
题目:传送门.(需要下载PDF) 题意:t组数据,每组数据给定一个数ni(1 ≤ ni ≤ 10^18),把ni拆成尽可能多的数,要求每个数的素因子只包含2和3,且这些数不能被彼此整除,输出一共能拆成 ...
- EOJ2018.10 月赛(B 数学+思维题)
传送门:Problem B https://www.cnblogs.com/violet-acmer/p/9739115.html 题意: 找到最小的包含子序列a的序列s,并且序列s是 p -莫干山序 ...
- EOJ2018.10 月赛(A 数学+思维题)
传送门:Problem A https://www.cnblogs.com/violet-acmer/p/9739115.html 题意: 能否通过横着排或竖着排将 1x p 的小姐姐填满 n x m ...
- zoj 2818 Root of the Problem(数学思维题)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2818 题目描述: Given positive integer ...
随机推荐
- [03] mapper.xml的基本元素概述
1.select 我们基于这个持久层接口 GirlDao: public interface GirlDao { List<Girl> findByAge(int age); Girl f ...
- java算法----排序----(2)选择排序
package log; public class Test4 { /** * java算法---选择排序 * * @param args */ public static void main(Str ...
- J-query extend()方法
1.如果没有冲突参数会弥在后面. 2.参数如果和前面的参数存在相同的名称,那么后面的会覆盖前面的参数值.
- SpringBoot日记——ElasticSearch全文检索
看到标题的那一串英文,对于新手来说一定比较陌生,而说起检索,应该都知道吧. 这个ElasticSearch目前我们的首选,他主要有可以提供快速的存储.搜索.分析海量数据的作用.他是一个分布式搜索服务, ...
- TDD、BDD、ATDD、DDD 软件开发模式
TDD.BDD.ATDD.DDD 软件开发模式 四个开发模式意思: TDD:测试驱动开发(Test-Driven Development) BDD:行为驱动开发(Behavior Driven Dev ...
- django通用权限控制框架
在web项目中根据不同的用户肯定会限制其不同的权限,利用以下模块可以满足日常几乎所有的权限控制 permission_hook.py # 自定义权限控制,必须返回True/false ,True表 ...
- ASS字幕制作
虽然不常做视频,但正因为是偶尔用到,所以总是记不牢,特此笔记. Name 字体名称?Fontname 字体名称(\fn冬青黑体简体中文 W3)(\fnVogueSans)(例:\N{\fn冬青黑体简体 ...
- Spring RPC 入门学习(2)-获取Map对象
Spring RPC传递Map用例编写 1. 新建RPC接口类 package com.cvicse.ump.rpc.interfaceDefine; import java.util.Map; pu ...
- C. Ehab and a 2-operation task
链接 [https://codeforces.com/contest/1088/problem/C] 题意 n个数,最多n+1操作,要么前i个数加x,要么前i个数对x取余,最后使得严格递增 分析 直接 ...
- 【CV】ICCV2015_Unsupervised Learning of Visual Representations using Videos
Unsupervised Learning of Visual Representations using Videos Note here: it's a learning note on Prof ...