BZOJ4377 : [POI2015]Kurs szybkiego czytania

时间:2022-10-01 12:39:57

因为$a$与$n$互质,所以对于$0$到$n-1$里每个$i$,$ai\bmod n$的值互不相同。

设匹配成功的起点为$i$,那么可以得到$3m$段$ai\bmod n$的值不能取的禁区,每段都是连续区间。

再枚举$n-m+1$到$n-1$的起点,这些单点也是禁区。

找出所有禁区后,答案就是这些禁区的并的补集,扫描线即可。

时间复杂度$O(m\log m)$。

#include<cstdio>
#include<algorithm>
using namespace std;
int n,A,B,P,m,i,v,cnt,r,ans;char w[1000010];
struct E{int x,y;E(){}E(int _x,int _y){x=_x,y=_y;}}e[4000010];
inline bool cmp(const E&a,const E&b){return a.x<b.x;}
inline void add(int a,int b,int c,int d){
if(a)e[++cnt]=E(0,a);
if(b<c)e[++cnt]=E(b,c);
if(d<n)e[++cnt]=E(d,n);
}
int main(){
scanf("%d%d%d%d%d%s",&n,&A,&B,&P,&m,w);
for(i=0;i<m;B=(B+A)%n,i++)if(w[i]=='0')add(0,max(P-B,0),n-B,min(P-B+n,n));
else add(max(P-B,0),n-B,min(P-B+n,n),n);
for(i=n-1,B=n-A;i>n-m;B=(B-A+n)%n,i--)e[++cnt]=E(B,B+1);
e[++cnt]=E(n,n+1);
sort(e+1,e+cnt+1,cmp);
for(i=1;i<=cnt;i++){
if(e[i].x>r)ans+=e[i].x-r;
if(e[i].y>r)r=e[i].y;
}
return printf("%d",ans),0;
}

  

BZOJ4377 : [POI2015]Kurs szybkiego czytania的更多相关文章

  1. BZOJ4377&lbrack;POI2015&rsqb;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串,求出小串在大串中出 ...

  2. &commat;bzoj - 4377&commat; &lbrack;POI2015&rsqb; Kurs szybkiego czytania

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n, a, b, p,其中 n, a 互质.定义一个长度为 ...

  3. BZOJ4377 Kurs szybkiego czytania &bsol; Luogu 3589&lbrack;POI2015&rsqb;KUR - 数学思维题

    Solution 我又双叒叕去看题解啦$QAQ$, 真的想不到鸭 输入 $a$ 和 $n$ 互质, 所以满足 $a \times i \ mod \ n$ $(0<=i<n)$ 肯定是不重 ...

  4. POI2015题解

    POI2015题解 吐槽一下为什么POI2015开始就成了破烂波兰文题目名了啊... 咕了一道3748没写打表题没什么意思,还剩\(BZOJ\)上的\(14\)道题. [BZOJ3746][POI20 ...

  5. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  6. poi2015 bzoj4377-4386训练

    就按时间顺序写吧 完成度:10/10 3.30 bzoj4385 首先一定是删去连续d个数,然后枚举终点,起点显然有单调性,用单调队列乱搞搞就可以啦 bzoj4378 首先才结论:可行当且仅当把所有大 ...

  7. BZOJ 4385&colon; &lbrack;POI2015&rsqb;Wilcze do&lstrok;y

    4385: [POI2015]Wilcze doły Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 648  Solved: 263[Submit][ ...

  8. BZOJ 4384&colon; &lbrack;POI2015&rsqb;Trzy wie&zdot;e

    4384: [POI2015]Trzy wieże Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 217  Solved: 61[Submit][St ...

  9. Bzoj 3747&colon; &lbrack;POI2015&rsqb;Kinoman 线段树

    3747: [POI2015]Kinoman Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 553  Solved: 222[Submit][Stat ...

随机推荐

  1. CentOS下crontab执行java程序

    阿里云CentOS收不到邮件 在crontab里配置执行脚本,脚本用来执行java程序,死活不执行.单独执行脚本可以运行. 查看crontab的日志文件,/var/log/cron,发现没有收到cro ...

  2. CentOS 学习笔记

    整理基础的CentOS常用命令 http://os.51cto.com/art/201003/190801.htm 在Hyper-V中的CentOS虚拟机中使用网络 http://blog.earth ...

  3. 用DAEMON TOOLS打开rational ross 的bin文件并安装过程梳理

    最近要开始准备毕业设计了,学习熟悉了一些UML用例图.类图之类的,开始准备用自家PC电脑画图的时候发现Rational Ross没安装. 本以为简单,却碰上bin文件.琢磨好久,终于把Ross安上了. ...

  4. javascript widget ui mvc

    MVC只是javascript的一个UI模式 JavaScript UI----UI, Template, MVC(View)----Backbone, Angular RequireJS------ ...

  5. 【十一年】注入框架RoboGuice采用&colon;&lpar;Your First Injection into a Custom View class&rpar;

    上一篇我们简单的介绍了一下RoboGuice的使用([十]注入框架RoboGuice使用:(Your First Testcase)),今天我们来看下自己定义View的注入(Custom View). ...

  6. python之路5-函数

    定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 def hello(): print(& ...

  7. Idea使用Maven创建Java Web项目

    最近学到了Java Web项目,使用Idea和Maven创建Java Web的时候遇到了诸多问题,最多的还是404问题.现在记录一下解决方案. 一.使用maven创建一个web项目,这一步网上都有,下 ...

  8. Spring-boot之 rabbitmq

    今天学习了下spring-boot接入rabbitmq. windows下的安装:https://www.cnblogs.com/ericli-ericli/p/5902270.html 使用博客:h ...

  9. CF1006C 【Three Parts of the Array】

    二分查找水题 记$sum[i]$为$d[i]$的前缀和数组 枚举第一段区间的结尾$i$ 然后二分出$lower$_$bound(sum[n]-sum[i])$的位置$x$,如果$sum[x]$与$su ...

  10. Resin任意文件读取漏洞

    Resin是什么 虽然看不上但是还是原因下百度百科: Resin是CAUCHO公司的产品,是一个非常流行的支持servlets和jsp的引擎,速度非常快.Resin本身包含了一个支持HTTP/1.1的 ...