51nod1495 中国好区间
双指针扫一遍
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define clr(x,c) memset(x,c,sizeof(x))
#define ll long long
int read(){
int x=0;char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) x=x*10+c-'0',c=getchar();
return x;
}
char sh[15];
void print(int x){
int cnt=0;
while(x) sh[++cnt]=x%10,x/=10;
dwn(i,cnt,1) putchar(sh[i]+48);
putchar(32);
}
const int nmax=1e7+5;
bool a[nmax];
int main(){
int n=read(),k=read(),T=read(),a0=read(),b=read(),c=read(),p=read();
rep(i,1,n) if((a0=((ll)a0*b+c)%p)>=T) a[i]=1;
int l=0,r=0,cnt=0;ll ans=0;
while(1){
if(a[l]) --cnt;++l;
while(cnt<k&&r<=n) cnt+=a[r++];
if(cnt==k) ans+=n-r+2;
else break;
}
printf("%lld\n",ans);
return 0;
}
阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是>=k的,且该区间的第k大的那个数,一定大于等于T。那么问题来了,阿尔法想知道有多少好的区间。
由于阿尔法的序列长度实在是太大了,无法在规定时间内读入。
他想了一个绝妙的方法。
读入a[0],b,c,p,则a[i]=(a[i-1]*b+c)mod p。
样例解释:
a1~a5分别为47,135,247,35,147
对应的7个区间分别为[1,3],[2,3],[1,4],[2,4],[1,5],[2,5],[3,5]
读入一行,7个数字,表示n(n<=10000000),k(k<=n),T,a[0],b,c,p。
所有数字均为正整数且小于等于10^9。
输出一行表示好区间的个数。
5 2 100 10 124 7 300
7
51nod1495 中国好区间的更多相关文章
- 51 nod 1495 中国好区间 奇葩卡时间题 700ms   卡O(n*log(n)),  思路:O(n)尺取法
		
题目: 这个题目竟然叫中国好区间,要不要脸.欸,不得不说还蛮顺口的,哈哈哈. 首先我们有一个数组a.可以递推得来,O(n)时间复杂度. 定义left(有效区间的左端点),bigger(有效区间中大于等 ...
 - 51 nod 1495 中国好区间
		
1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是& ...
 - 51nod 1495 中国好区间
		
阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是>=k的,且该区间的第k大的那个数,一定大于等于T.那么问题来了,阿尔法想知道有多少好的区间. 由于阿尔法的序 ...
 - 胡小兔的OI日志3 完结版
		
胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采 ...
 - 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】
		
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...
 - 2016年中国大学生程序设计竞赛(合肥)-重现赛1008 HDU 5968
		
异或密码 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
 - 【BZOJ-2962】序列操作       线段树 + 区间卷积
		
2962: 序列操作 Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 678 Solved: 246[Submit][Status][Discuss] ...
 - 2016年中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969
		
最大的位或 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
 - 杨佩昌:中国官员去德国考察看什么两眼发光 z
		
令中国人诧异的德国物价 只要是花费大量人工的行业,就很贵 □杨佩昌 德国是欧洲商品价格的洼地,连精明的瑞士人也开车到德国加油购物 一 2012年凤凰网组织十大著名博主前往澳洲考察并与前总理陆克文对话, ...
 
随机推荐
- javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例
			
1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(fr ...
 - javascript实现数据结构:串--堆分配存储表示
			
堆分配存储表示 这种存储表示的特点是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得. 结构图: 实现: function HString(){ this. ...
 - 3[doses]  ------一种诡异的写法
			
在 head first c 的第60页,有这么一道题: 一个富翁因为服药过度而死亡. 下面是自动服药器的代码: #include <stdio.h> int main(void) { , ...
 - django转义safe
			
“何谓转义?就是把html语言的关键字过滤掉.例如,<div>就是html的关键字,如果要在html页面上呈现<div>,其源代码就必须是<div> 默认情况下,d ...
 - CamShift算法
			
拟采用的方法,CamShift算法,即"Continuously Apative Mean-Shift"算法,是一种运动跟踪算法.它主要通过视频图像中运动物体的颜色信息来达到跟踪的 ...
 - strrchr函数
			
C语言函数 函数简介 函数名称: strrchr 函数原型:char *strrchr(char *str, char c); 所属库: string.h 函数功能:查找一个字符c在另一个字符串str ...
 - tomcat下context.xml中JNDI数据源配置
			
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...
 - 两个奇葩的C/C++问题
			
今天为大家介绍几个奇葩的C/C++问题. 1 大家看看下面的输出结果是什么呢? #include <stdio.h> #include <stdlib.h> void ma ...
 - iOS开发--即时通讯常用第三方库
			
前言 自毕业到现在,从事iOS即时通讯开发已经1年半之久.主要负责Allure开发,目前已上架,可以在苹果商店搜素Allure.Allure模仿微信的交互和设计效果,已经实现微信的大部分功能. 在这里 ...
 - JavaWeb项目开发案例精粹-第4章博客网站系统-004Service层
			
1. package com.sanqing.service; import java.util.List; import com.sanqing.fenye.Page; import com.san ...