CodeForces
来源:互联网 发布:广场舞软件下载 编辑:程序博客网 时间:2024/05/23 13:59
题目链接
思路:用数组来存储超时,学习了用map<int,int>的用法,可以直接比较
#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <map>using namespace std; const int N = 2e5+10;map<int,int> mchp,findp;int cnt,n,m,p; int ans[N]; int num[N]; void solve( int pos ) {int count=0;queue<int> q; findp.clear();for ( int i=pos ; i<=n; i+=p ) {findp[num[i]]++; ++count; q.push(i); if ( count==m ) {if ( findp==mchp ) {ans[cnt++] = q.front(); }--findp[ num[ q.front()]]; if ( findp[num[ q.front()]]==0 )findp.erase(num[q.front()]);//!!!!q.pop(); --count; } }}int main(){int temp; scanf("%d %d %d",&n,&m,&p); for ( int i=1; i<=n; i++ ) scanf("%d",&num[i]); for ( int i=1; i<=m; i++ ) {scanf("%d",&temp); mchp[temp]++; }for ( int i=1; i<=p; i++ ) solve( i ) ;sort(ans,ans+cnt); cout<<cnt<<endl; for ( int i=0; i<cnt; i++ ) if ( i==cnt-1 ) printf("%d\n",ans[i]); else printf("%d ",ans[i]); return 0; }
间隔是p,即从1到p开始枚举,若长度超过了m,则剪掉最前面的数字
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Unity 小项目:模拟太阳系
- 华为oj初级 合法IP
- int abs(int number)函数有感: 求补码和通过补码求对应的整数 C++(增加:数字的二进制表示中1的个数)
- Linux20条基础命令
- java中的网络编程1
- CodeForces
- combobox之下拉宽度自适应
- java的FileOutputStream写出数据到文件
- sizeof()来求一个类的大小
- 关于spring
- Solidworks 如何在曲面添加文字
- 第十三周:112. Path Sum
- Unixls命令(不是自己写得,但有可以借鉴的地方)
- chrome原生态抓包工具