[COCI2013]DLAKAVAC

题目大意:

有一个长度为\(m(m\le1500)\)的\(01\)串\(A\),进行\(k(k\le10^{18})\)次操作。一次操作完的串中若\(A_i=1\),当且仅当在原串中存在\(jk\%m=i\),且\(A_j=A_k=1\)。求所有操作完成后哪些位置为\(1\)。

思路:

快速幂。时间复杂度\(\mathcal O(m^2\log k)\)。

源代码:

#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
typedef long long int64;
inline int64 getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int64 x=ch^'0';
while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
return x;
}
const int N=1500;
int64 k;
int m,n;
bool a[N],ans[N],tmp[N];
inline void mul(bool a[],bool b[]) {
memset(tmp,0,sizeof tmp);
for(register int i=0;i<m;i++) {
for(register int j=0;j<m;j++) {
tmp[(i*j)%m]|=a[i]&&b[j];
}
}
std::copy(&tmp[0],&tmp[m],a);
}
int main() {
k=getint(),m=getint(),n=getint();
for(register int i=0;i<n;i++) {
a[getint()]=true;
}
ans[1]=1;
for(;k;k>>=1) {
if(k&1) mul(ans,a);
mul(a,a);
}
for(register int i=0;i<m;i++) {
if(ans[i]) printf("%d ",i);
}
puts("");
return 0;
}

[COCI2013]DLAKAVAC的更多相关文章

  1. 【BZOJ 3482】 3482: [COCI2013]hiperprostor (dij+凸包)

    3482: [COCI2013]hiperprostor Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 277  Solved: 81 Descrip ...

  2. BZOJ3482 : [COCI2013]hiperprostor

    对于每组询问,spfa求出f[i][j]表示从S出发,经过j条x边到达i的最短路. 若f[T][i]都为inf,则无解. 若f[T][0]为inf,则有无穷个解. 否则可以看作若干条直线,$O(n)$ ...

  3. bzoj AC倒序

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

随机推荐

  1. C++ Primer 笔记——智能指针

    1.新的标准库提供了两种智能指针类型,shared_ptr允许多个指针指向同一个对象,unique_ptr则独占所指的对象.标准库还定义了一个名为weak_ptr的伴随类,它是一种弱引用,指向shar ...

  2. lisp : set 与setq 函数

    在Lisp中,如果我们希望对一个变量赋值,可以使用set函数,用法如下: (set ‘my-value "my string") 上面的代码是对变量my-value进行赋值,值是& ...

  3. document.getElementsByClassName() 原生方法 通过className 选择DOM节点

    <div id="box"> <div class="box">1</div> <div class="bo ...

  4. 目标检测算法之R-CNN算法详解

    R-CNN全称为Region-CNN,它可以说是第一个成功地将深度学习应用到目标检测上的算法.后面提到的Fast R-CNN.Faster R-CNN全部都是建立在R-CNN的基础上的. 传统目标检测 ...

  5. python练习册0004题

    在任意一个英文文档中,统计单词出现的次数, 分析: 本题不是很难,单词通常以空格隔开,但是有些单词后面跟一些特殊符号,只需把这些特殊符号替换掉就可以了, 代码一 import re file_name ...

  6. Pytorch学习笔记

    非线性回归问题的参数求解,反向求导基本流程.Variable 计算时, 它在后台一步步默默地搭建着一个庞大的系统, 叫做计算图, computational graph. 这个图将所有的计算步骤 (节 ...

  7. ANGULAR6.x - 错误随笔 - Can't bind to 'formGroup'

    formGroup:错误 Can't bind to 'formGroup' since it isn't a known property of 'form'. (" 原因: 在使用for ...

  8. (一)cygwin和vim——hello world!

    好吧,我现在初出茅庐,一无所有,只有一台win xp.做什么呢?要不要试试Unix命令行编程的感觉,想到就做.Just try! 1.首先安装cygwin,最好是选择离线安装包. 2.默认选择安装所有 ...

  9. awk命令的用法实战

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn8AAADvCAIAAAAM1SXGAAAgAElEQVR4nO2dz8s125XXHx9oTXMHUZ

  10. unicode utf-8 ascll编码比较

    1.字符编码     因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte), 所以,一个字节能表示的最大的整数就 ...