分析外星信号
2018-01-20 14:28
183 查看
题意:给出长度为N的信号纪录时,编写程序计算总和等于k的子序列个数
通过公式来生成输入值
通过在线算法来编程,代码如下:
#include <bits/stdc++.h>
using namespace std;
struct RNG
{
unsigned seed;
RNG():seed(1983) {}
unsigned next()
{
unsigned ret=seed;
seed=((seed*214013u)+2531011u);
return ret%10000+1;
}
};
int countRartialSums(int k,int n)
{
RNG rng;
int ret=0;
long long pusm=0;
queue<long long>pusms;
for(int i=0; i<n; i++)
{
pusm+=rng.next();
pusms.push(pusm);
while(pusms.front()+k<pusm)
pusms.pop();
if(pusms.front()+k==pusm)
++ret;
}
return ret;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int k,n;
scanf("%d %d",&k,&n);
int sum=countRartialSums(k,n);
printf("%d\n",sum);
}
return 0;
}
通过公式来生成输入值
通过在线算法来编程,代码如下:
#include <bits/stdc++.h>
using namespace std;
struct RNG
{
unsigned seed;
RNG():seed(1983) {}
unsigned next()
{
unsigned ret=seed;
seed=((seed*214013u)+2531011u);
return ret%10000+1;
}
};
int countRartialSums(int k,int n)
{
RNG rng;
int ret=0;
long long pusm=0;
queue<long long>pusms;
for(int i=0; i<n; i++)
{
pusm+=rng.next();
pusms.push(pusm);
while(pusms.front()+k<pusm)
pusms.pop();
if(pusms.front()+k==pusm)
++ret;
}
return ret;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int k,n;
scanf("%d %d",&k,&n);
int sum=countRartialSums(k,n);
printf("%d\n",sum);
}
return 0;
}
相关文章推荐
- Linux信号丢失问题分析
- Libev源码分析08:Libev中的信号监视器
- 语音信号的时域、频域特性和短时分析技术
- nginx源码分析--nginx外部信号 命令参数
- VTC Fsync_out信号分析
- 通信信号与系统分析(四 基于simulink仿真)
- Java 工具(jmap,jstack)在linux上的源码分析(二)信号处理
- libevent源码分析--libevent库对信号事件的处理
- 信号完整性分析二
- PQR无线信号分析软件 for Asset
- 数字信号分析——窗函数
- QT核心机制分析1——信号与槽<一>
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux信号机制分析
- GMII,RGMII,SGMII,TBI,RTBI接口信号、时序分析
- 2011年5月19日盘后分析:把握行情运行主线 静待大盘明确信号
- 统计信号分析与处理 2016 大作业选题
- 第21章 信号频谱分析
- Linux信号(signal) 机制分析
- Scrapy源码分析(三):信号管理器SignalManager
- 如何采用fft分析信号的频谱